《基于单片机的CAN总线通讯实现.docx》由会员分享,可在线阅读,更多相关《基于单片机的CAN总线通讯实现.docx(22页珍藏版)》请在课桌文档上搜索。
1、CAN总线通讯基于51单片机应用第一章前言1.1 概述控制器局域网(CAN-ControllerAreaNetwork)属于现场总线(Fieldbus)的范畴,是众多的属于现场总线标准之一,它适用于工业控制系统,具有通信速率高、可靠性强、连接方便、性能价格比高等诸多特点。它是一种有效支持分布式控制或实时控制的串行通信网络,以其短报文帧及CSMA/CD-AMP(带有信息优先权及冲突检测的载波监听多路访问)的MAC(媒介访问控制)方式而倍受工业自动化领域中设备互连的厚爱。CAN的应用范围普及从高速网络到低本钱的多线路网络,它可以应用于汽车系统、机械、技术设备和工业自动化里几乎任何类型的数据通信。随
2、着计算机硬件、软件及集成电路技术的迅速开展,同时消费类电子产品、计算机外设、汽车和工业应用等的需求不断增加。高速、高可靠和低本钱的通信介质的要求也随之提高。现场总线是当今自动化领域技术开展的热点之一,它为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。微处理器中常用的串行总线是通用异步接收器传输总线(UART)、串行通信接口(SCI)同步外设接口(SPI)、内部集成电路(12C)和通用串行总线(USB),以及车用串行总线,包括控制器区域网(CAN)和本地互连网(LIN)等。这些总线在速度、物理接口要求和通信方法学上都有所不同。在计算机数据传输领域内,长期以来使用的通信标
3、准,尽管被广泛使用,但是无法在需要使用大量的传感器和控制器的复杂或大规模的环境中使用。控制器局部网CAN(CONTROLLERAERANETWORK)就是为适应这种需要而开展起来的。随着汽车电子技术的开展,消费者对于汽车功能的要求越来越多,汽车上所用的电控单元不断增多,电控单元之间信息交换的需求,使得电子装置之间的通讯越来越复杂,同时意味着需要更多的连接信号线,这就促进了车用总线技术的开展。CAN总线的出现,就是为了减少不断增加的信号线,所有的外围器件都可以被连接到总线上由于CAN总线具有可靠性高、实时性好、本钱合理等优点,逐渐被应用于如船舶、航天、工业测控、自动化、电力系统、楼宇监控等其他领
4、域中。1.2 CAN总线的特点80年代末,在汽车工业中,由于众多的控制设备与测试仪器之间需要进行大量数据交换,传统的总线无法满足需求,德国BOSCH公司提出了CAN总线,这种新的串行数据通讯协议。CAN总线即控制器局域网总线,通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。CAN(ConIrOIIerAreaNeIWork)属于现场总线的一种,在传统的工业控制领域中,大局部的通信采用RS232、RS485或RS422总线。相比之下,RS232、RS485或RS422总线有着通信距离近,通讯速度慢,抗干扰性
5、能差等缺点。通讯一般采用主从方式,通过主站查询方式进行通讯,实时性、可靠性较差。当系统有错误,多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点。基于CAN总线的分布式控制系统在很多方面具有明显的优越性。L而CAN的电路结构简单,要求的线数较少,只需要两根线与外部器件互联,使得各控制单元能够通过CAN总线共享所有的信息和资源。到达简化布线、减少传感器数量、防止控制功能重复的效果。CAN具有的完善的通信协议,并且可以通过CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期。CAN支持分布式控制或实时控制,工作于多主方式,网络上各个节点均可以在任一时刻主动发送信
6、息,可以点对点,点对多点以及全局播送方式收发数据。网络中的各节点都可根据总线访问优先权,采用非破坏性总线总裁技术,通信速度快,可靠性高,可大大节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪。CAN没有采用站地址编码,而是对通信数据进行编码,这可使不同的节点同时接收到数据,这使得CAN总线的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。它具有如下特点:1) CAN是到目前为止为数不多的有国际标准的现场总线,总线协议已被国际标准化组织认证,技术比拟成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。2) CAN总线没有采取传统的站
7、地址编码,不对节点进行地址规定,而是把通信数据块进行编码。这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成。这种按数据块编码的方式,使用报文的标识符来指定报文的优先级以及报文的内容,高优先级的节点享有传送报文的优先权。还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短,从而保证了通信的实时性。3) CAN总线采用了多主竞争式总线结构,通信介质可以是双绞线、同轴电缆或光导纤维,可以多个主站运行并且分散仲裁。CAN总线上任意节点可以点对点,一
8、对多及播送集中方式传送和接受数据,而且可以任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN通讯距离最大是10公里(设速率为5Kbps),最大通信速率为IMbit/s(设通信距离为40米)。4) CAN采用非破坏性的总线仲裁技术,即载波侦听多路访问/冲突检测(CSMA/CD)的总线仲裁方式,当多个节点同时发送数据时,优先级低的节点会主动停止发送,高优先级的节点可继续传输,节省总线仲裁时间。防止多个节点同时开始发送消息而造成总线冲突,保证优先级高的报文能够优先发送。5) CAN总线协议采用了完善的错误检测与错误处理机制,包括了CRC校验、错误报文自动重发、错
9、误状态判断、临时错误自动恢复等措施,从而很好的保证了数据通信的可靠性。节点在错误严重的情况下,具有自动关黔6)闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响。CAN总线采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作。具有实时性强、传输距离较远、抗电磁干扰能力强、本钱低等优点。可根据报文的ID决定接收或屏蔽该报文。可靠的错误处理和检错机制,发送的信息遭到破坏后,可自动重发,报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的通信,因此,越来越受到工业界的重视,并己公认为最有前途的现场总线
10、之一。CAN总线通过CAN控制器接口芯片的输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。CAN总线的信号状态为2种,隐位与显位。当隐位与显位发送出现竞争时,最终结果是显位。在处理冲突时,由于该信号的二值且单稳态的特性变得简单,报错帧可以使所有节点很容易地取得一致性的数据,并且保证了节点状态的同步,这种二值特性对CAN总线的可靠性有很大保障。而且CAN节点在出现严重错误的情况下,可以自动关闭输出,防止总线上其他节点的操作受影响,从而保证不会因个别节点出现问题,而使得总线处于死锁状态。CAN总线具有位填充、回读、错误约束、出错自
11、动重发等优点,同时通信速率高、通信距离远、容易实现、且性价比高。1.3 CAN总线的开展前景CAN最初是用于汽车行业的监测、控制,用来解决汽车内部的复杂硬件信号接线的低本钱通信总线,现今CAN总线已经被公认为一种可靠的网络总线在汽车上得以应用。CAN总线共享信息和资源,总线的数据通信提高了系统可靠性、实时性、灵活性、可维护性,更好地匹配和协调各个控制系统。随着汽车电子技术的开展具有高度灵活性、简单的扩展性、优良的抗干扰性和处理错误能力的CAN总线,越来越受到人们的重视,它在汽车领域上得到了广泛的应用.世界上一些著名的汽车制造厂商,都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数
12、据通信。近年来CAN总线已开展成为汽车电子系统的主流总线,已形成国际标准的现场总线,并由ISO正式公布了IS011898CAN高速应用标准和ISOlI519CAN低速应用标准,这为CAN总线的标准化、标准化铺平了道路。CAN总线以其高性能,高可靠性及独特的设计,在现代分布式测量与控制技术领域中的应用已愈来愈广泛。同时由于CAN总线自身的特点,其应用范围目前已不再局限于汽车行业,而是转向铁路、交通、自动控制、航空航天、航海、机械工业、机器人、医疗器械及安防等领域开展。CAN总线的开展已经颇具规模,它不仅在汽车领域的应用占据一定优势,在其他工业领域内也占有一席之地。这要归根于通信技术的不断进步,对
13、通讯本身的要求不断提高,这种形势下CAN总线的优势在于其优越的抗干扰能力和性价比。尽管CAN总线有一定局限,甚至还有漏洞,但对CAN总线的改良还在继续,相信在未来的开展中,CAN总线通过不断的更新和改良,能够取得更大的进步。第2章系统方案总体设计2.1 系统原理当CAN总线上的一个节点(站)发送数据时,它以报文形式播送给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。每组报文开头的11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方窠。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要C
14、AN总线的报文发送和接收。当一个站要向其它站发送数据时,该站的CPU将要发送的数据和自己的标识符传送给本站的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。CAN芯片将数据根据协议组织成一定的报文格式发出,这时网上的其它站处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断这些报文是否是发给自己的,以确定是否接收它。由于CAN总线是一种面向内容的编址方案,因此很容易建立高水准的控制系统并灵活地进行配置。我们可以很容易地在CAN总线中加进一些新站而无需在硬件或软件上进行修改。当所提供的新站是纯数据接收设备时,数据传输协议不要求独立的局部有物理目的地址。它允许分布过程同
15、步化,即总线上控制器需要测量数据时,可由网上获得,而无须每个控制器都有自己独立的传感器。2.2 系统总体设计方框图图2-1系统总体设计方框图2.2.1 51单片机系统的控制芯片采用AT89S52单片机来控制,因为AT89S52应用比拟广泛,并且本钱低,操作控制简单,功耗较低,运行可靠性强。系统本身对处理器处理速度的要求不是很高,所以选择该款单片机。AT89S52是一种低功耗、高性能CM0S8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FlaSh允许程序存储器在系统可编程,亦适于常规编程器。在单芯片
16、上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节FlaSh,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至OHZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图2-2AT89S52引脚结构
17、图2-3AT89S52内部结构图AVCC:电源 GND:地 PO口:PO口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对Po端口写“1时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,PO口也被作为低8位地址/数据复用。在这种模式下,PO具有内部上拉电阻。在flash编程时,PO口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。APln;Pl口是一个具有内部上拉电阻的8位双向I/O口,pl输出缓冲器能驱动4个TTL逻辑电平。对Pl端口写“1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内
18、部电阻的原因,将输出电流(IIL)0此外,PLO和PL2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(Pl.1/T2EX),具体如下表所示。在flash编程和校验时,Pl口接收低8位地址字节。表27Pl口引脚功能引脚号第二功能PL0T2(定时器/计数器T2的外部计数输入),时钟输出PL1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)Pl.5MOSI在系统编程用)Pl.6MISO在系统编程用)Pl.7SCK(在系统编程用)AP2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写1时,内部上拉电
19、阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)0在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVXDPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVXRI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。AP3口:P3口是一个具有内部上拉电阻的8位双向I/O11,p2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外
20、部拉低的引脚由于内部电阻的原因,将输出电流(IIL)0P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。表2-2P3口引脚功能引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出JP32INTO(外部中断0)P3.3INTO(外部中断0)P3.4TO(定时器0外部输入)P3.5Tl(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通)ARS:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST脚输出96个晶振周期的高电平。特殊存放器AUXR
21、(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。AALE/PR0G:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置1,ALE操作将无效。这一位置1,ALE仅在执行MOVX或MOVC指令时有效。否那么,ALE将被微弱拉高。这个ALE使能标志位(地址为8EH的SFR的第0位)的
22、设置对微控制器处于外部执行模式下无效。APSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从存储器执码时,PSEN器周期被而在访问存储器时,被激活。问外部程控制信号。标记管脚功能描述TXD 11发送数据输入外部程序 行外部代 在每个机 激活两次, 外部数据 PSEN将不 EA/VPP:访 序存储器 为使能从OOOOH到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VC&在flash编程期间,EA也接收12伏VPP电压AXTALl:振荡器反相放大器和内部时钟发生电路的输入端。AXTAL2:振荡器反相放大器的输出2.2.2
23、 CAN总线收发器PCA82C250是CAN协议控制器和物理总线的接口这个器件对总线提供不同的发送能力和对CAN控制器提供不同的接收能力。图2-482C250引脚结构表2-382C250引脚管脚功能描述图 2-582C250GND 22接地方框图功能描述:VCC 33提供电压PCA82C50RXD 44接收数据输出是CAN协议控制器和物理总Vref 55参考电压输出线的接口,它主要用于汽车里CANL 66低电平CAN电压输入/输出的高速应用(高达 IMbaud) 这CANH 77高电平CAN电氏输入输出个器件对总线提供不同的发RS88 Slope电阻输入送能力和对CAN控制器提供不同的接收能力
24、完全和ISOlI898标准兼容。限定的电流值保护接收器输出级,防止阳极和阴极的短路,尽管在默认的条件下功率消耗是增加的这个特征值将防止发送器输出级的毁坏。如果节点温度超过大约160摄氏度,发送器限定的电流值输出被降低因为发送器占去大局部的功率消耗,这将导致降额功耗和较低的片内温度,IC中的其它局部在使用中将保持不变,当总线短路的时候热保护非常需要。这个CANHCANL线也被保护防止自动运作过程中电流的瞬变。表2-4CAN收发器真值表提供TXD(发送)CANHCANL总线状况RXD接收0I目低控制0I(或悬空)悬空悬空接收12V(未上电)X悬空悬空接收X2VVCC0.75VCC悬空悬空接收X2V
25、VCC0.75VCC悬空假设VRSO.75VCC悬空接收X注意:X=随意值表2-5管脚RS真值表在RS管脚上强制条件模式在RS管脚上电压和电流VRSO.75VCC备用IRS1010AIRS200A斜率控制03VCCVRSO.6VCCVRSO.3VCC高速IRS500A管脚8RS有三种不同的工作模式可被选择:高速,备用,斜率控制。对于高速工作模式,发送器输出级晶体管被尽可能地快启动和关闭,在这种模式下,没有措施用于限制上升和下降的斜度。建议使用屏蔽电缆可防止RFI这种问题。通过把管脚8接地选择这个模式。对于低速或较短的总线长度,可使用一种没有屏蔽的双绞线或平行线。对于降低RFI,上升和下降的斜率
26、是个限定值,上升和下降的斜率能够被编程,通过从管脚8接一个电阻至地,这个斜率和管脚8的电流输出成比例。如果高电平被接至管脚8,电路进入低电流保护模式。在这种模式下,发送器被关闭,接收器开至低电流。如果控制位被检测(不同的总线电压09V),RXD将被开至低电平。这个微型控制器应对这个条件有所反响,通过转换收发器至正常工作状态。(经过管脚8)因为这个接收器在备用模式下比拟慢,第一条信息会丧失掉。2.2.3 CAN总线控制器CAN总线控制器选用SJAIoo0,SJAlOoO是一个独立的控制器,有两种不同的模式。(I)BaSiCCAN模式:系统上电后默认的模式,与PCA82C200兼容。(2)PeIi
27、CAN模式:支持CAN2.OB协议规定的所有功能。图2-6SJAIoOO引脚结构SJAlOOo功能模块主要有:接口管理逻辑、接收FIFo队列、接收滤波器、发送缓冲器和CAN核心模块。CAN核心模块基于CAN2.OB的协议执行对CAN帧的发送和接收。逻辑管理接口实现与外部单片机的连接。SJAlooo的发送缓冲器可以存储一个完整的报文,当单片机开始一个传送时,逻辑管理接口会使CAN核心模块读发送缓冲器的数据,依照CAN2.0B协议发送数据。当收到一个报文时,CAN核心控制模块将连续的位转换为标准的数据存放于接收过滤器中,通过验收码存放器、验收屏蔽存放器进行过滤处理,将符合标志位要求的数据放人接收F
28、IFO队列中以下为SJAK)OO芯片的特点:管脚及电气特性与独立CAN总线控制器PCA82C200兼容; 软件与PCA82C200兼容(缺省为根本CAN模式);扩展接收缓冲器(64字节FIFO); 支持CAN2.0B协议; 同时支持H位和29位标识符; 位通讯速率为IMbitS/s; 增强CAN模式(PeliCAN); 采用24MHZ时钟频率;支持多种微处理器接口; 可编程CAN输出驱动配置; 工作温度范围为-40+125C。图2-7SJA10OO内部结构图从芯片的结构图中可以看出,SJA1000型独立CAN总线控制器由以下几局部构成:(1)接口管理逻辑:它接收来自微处理器的命令,控制CAN存
29、放器的地址,并为微处理器提供中断和状态信息。(2)发送缓冲器:有13字节长。它位于CPU和位流处理器(BSP)之间,能存储一条将在CAN总线上发送的完整的报文,报文由CPU写入,由SBP读出。(3)接收缓冲器(RXB、RXFIFO):它是CPU和接收滤波器之间的接口,用来存储从CAN总线接收并通过了滤波的报文。接收缓冲器RXB是提供应CPU可访问的13字节的窗口,这个窗口是属于接收FlFO(RXFIFO)的一局部,共由64字节长。有了这个FIFO,可以在CPU处理一个报文的同时继续接收其他到来的报文。(4)接收滤波器:它把报文头中的标识符和接收滤波存放器中的内容进行比拟,以判断文报文是否被接收
30、。如果被接收,报文存入RXFIF0。(5)位流处理器:它是一个控制发送缓冲器、RXFlFo并行数据和CAN总线(串行数据)之间数据的序列发生器,同时它也执行错误检测、仲裁、位填充和CAN总线错误处理功能。(6)位定时逻辑不:它将SJAlOoo同步于CAN总线上的位流(7)错误管理逻辑:它按照CAN协议完成错误界定。2.2.4 光耦合器6N137光耦合器是一款用于单通道的高速光耦合器,其内部有一个850nm波长AlGaASLED和一个集成检测器组成,其检测器由一个光敏二极管、高增益线性运放及一个肖特基钳位的集电极开路的三极管组成。具有温度、电流和电压补偿功能,高的输入输出隔离,LSnL/11L兼
31、容,高速(典型为IoMBd),5mA的极小输入电流。图2-86N137引脚结构特性:转换速率高达10MBits;摆率高达10kVus;扇出系数为8;逻辑电平输出;集电极开路输出;工作参数:最大输入电流,低电平:250UA最大输入电流,高电平:15mA最大允许低电平电压(输出高):0.8v最大允许高电平电压:VCC最大电源电压、输出:5.5V扇出(TTL负载):8个(最多)工作温度范围:-40。Cto+85C典型应用:高速数字开关,马达控制系统和A/D转换等。信号从脚2和脚3输入,发光二极管发光,经片内光通道传到光敏二极管,反向偏置的光敏管光照后导通,经电流-电压转换后送到与门的一个输入端,与门
32、的另一个输入为使能端,当使能端为高时与门输出高电平,经输出三极管反向后光电隔离器输出低电平。当输入信号电流小于触发阈值或使能端为低时,输出高电平,但这个逻辑高是集电极开路的,可针对接收电路加上拉电阻或电压调整电路。原理如上图所示,假设以脚2为输入,脚3接地,那么真值表如附表所列,这相当于非门的传输,假设希望在传输过程中不改变逻辑状态,那么从脚3输入,脚2接高电平。)表2-7真值表图2-9测试电路和波形第3章系统硬件设计3.1 系统硬件的根本组成局部该系统的硬件主要包含这几个局部:处理器、CAN总线控制器、CAN总线收发器。结构电路如下:图3-1系统硬件结构电路3.2 单片机电路设计本设计选择A
33、T89S52单片机。AT89S52自带有片内ROM和一定数量的RAM,一般不需要扩展片外的存储器,并且能和MCS-51产品兼容。本设计选用简单根本的经典复位电路,它利用电容和电阻的充放电来产生一个到达时间要求的连续低电压,并输入到单片机的复位管脚,如下列图所示:图3-2单片机结构电路3.3 CAN总线控制器电路设计SJA1000被设计为全面支持CAN2.OB协议,而且支持多处理器接口,其接口电路十分简单,如下列图所示:其电路图如下:图3-3控制器结构电路3.4 CAN总线收发器电路设计CAN总线收发器选用PCA82C250,其封装为SOIC,而且只有8个引脚,其设计电路如下列图所示:图3-4C
34、AN总线收发器结构电路第4章软件设计4.1 软件总体设计程序设计主要分为3局部:SJA1000初始化子程序、发送子程序、接收子程序。可以说所有CAN通信程序设计都是遵循这3个根本步骤的,所以熟练掌握这3局部子程序的设计对于应用CAN总线的工程技术人员来说是非常有必要的。图4-1CAN节点自发自收根本流程图4.2 CAN初始化图4-2CAN节点初始化流程图4.3 SJA1000初始化微控制器和SJA1000之间状态、控制和命令信号的交换都是在控制段中完成的。初始化加载后,存放器的接收代码、接收屏蔽、总线定时存放器0和1以及输出控制就不能改变了。SJAloOO共有2种工作模式:复位模式和工作模式。
35、当硬件复位或控制器掉电时会自动进入复位模式,只有在复位模式下才可以对SJAloOO进行初始化。初始化主要包括工作方式的设定、接收屏蔽存放器和接收代码存放器的设定、总线时序存放器的设置、输出模式存放器和中断使能存放器的设置等。在初始化完成以后,CAN总线就可以开始进行数据的接收与发送工作。图4-3SJAlOOo初始化流程图4.4 发送与接收首先与CAN控制器连接的微处理器必须将要发送的数据从其数据存储区中取出,与主机的ID地址一起组成信息帧按CAN报文结构发送到发送缓冲器中,并置位命令存放器中的发送请求标志,接收到发送请求后发送过程由CAN控制器自动完成。在检测到接收缓冲器中存在有效报文后,接收
36、程序将接收缓冲器中的内容读入CPU的数据存储区。接收完毕后检查总线状态及溢出情况等并做相应处理。图4-4发送与接收程序流程图第5章系统调试计算机通过串口RS232发送数据到推片机AT89S52,单片机通过CAN控制器以及CAN收发器把数据转换成CAN通讯,传送到CANH,CANH把数据传送给CANL,CANL又通过CAN控制器把数据转换成串口通信数据发送到计算机,实现自发自收。图5-1系统调试图在实现的过程中,用了一个LED,单片机发送一组数组TX)缓冲区里的数据,转换成CAN通讯CANH发送,LED变换一次,CANL收回来。将接受到的数据保存到数组RX缓冲区。LED变换一次,同时用示波器的红
37、色探头接触控制器的接收和发送的数据端,观察接收和发送的数据是否一致。图5-2系统调试实物图调试结果比对:图5-3发送的示波器示意图图5-4接收的数据示波器示意图由上面的图比照可以看出,接收的数据和发送的数据时一致的,实现了设计需要实现的功能一自发自收。结论采用了多主工作方式及CSMA/CD的CAN总线以其显著优于传统一主多从式多机串行通讯模式而得到了广泛应用。实践说明,由于CAN总线结构简单,器件容易购置,开发技术易于掌握,且具有统一的国际标准,故在现场总线的开展中占有了重要位置。本系统设计通过单片机,CAN控制器SJA1000以及CAN收发器PCA82C250的电路设计,实现了CAN通信的自
38、发自收。计算机通过串口RS232发送数据到单片机AT89S52,单片机通过CAN控制器以及CAN收发器把数据转换成CAN通讯,传送到CNH,CANH把数据传送给CANL,CANL又通过CAN控制器把数据转换成串口通信数据发送到计算机,虽然这个系统简单,但在调试的过程中仍遇到了很多问题。通过这次设计,对CAN的通信有了较为深刻的认识和了解,以及对于不同通信方式之间的转换有了掌握。本系统设计电子学,数据通讯,硬件设计,软件设计等多方面的内容,知识范围广,由于本人水平有限,在设计过程中还有很多缺乏和不够完善的地方,恳请诸位专家、老师大力斧正,不吝赐教。致谢本课题的选题、研究以及撰写工作是对大学生活的
39、一个总结。在研究过程中,积累了很多实际经验和技巧,思维更加严谨,分析问题更加科学,做事更加细心。首先,非常感谢我的指导老师王敏。正是在她孜孜不倦的教诲和亲切关心下本文才得以顺利完成。王老师治学严谨、学识渊博,在大学期间给我指明开展方向,不仅传授专业理论知识,而且给我很多实践时机,她那踏实的工作作风以及高度负责的科研精神更是让我终身受益。其次,感谢培育我的母校,感谢测控技术与仪器专业的全体老师,是你们的辛勤培养使我掌握了扎实的专业根底知识;感谢我所有的朋友和同学,在成都理工大学一起生活和学习的美好时光里,给我的大学生活增添了无穷的乐趣和光荣,我们之间的深厚友谊将是我一生中最美好的留念。还要感谢我
40、的家人,多年来他们总是只知付出,不求索取的保护我、理解我、关心我、支持我,我的每一个足迹都离不开他们的默默付出,他们鼓励的目光永远是我前进的动力。最后,谨向在百忙之中审阅本文的各位专家和评委老师表示衷心的感谢。参考文献口孙涵芳.IntelI6位单片机M.北京:航空航天大学出版社.2000.2却宽明CAN总线原理和应用系统设计M.北京:航空航天大学出版社.2001.3蒋方帅DeIPhi5程序员指南M.北京:人民邮电出版社.2000.4方方,周伟.单片微机原理及应用M.清华大学出版社,北京交通大学出版社.20075楼然苗,李光飞.单片机课程设计指导M.北京北京航空航天大学出版社20076杨春杰,王
41、曙光,亢红波.CAN总线技术M.北京航空航天大学出版社.20237李勇,张怡.CAN总线的设计与实现M.西北工业大学电子系.20008杜善封.CAN总线测控技术及应用M.电子工业出版社.20079邹应全.51系列单片机原理与实验教程M.西安电子科技大学出版社.200710期宽明.CAN总线原理和应用系统设计M.北京航空航天大学出版社.199611苏伟斌.8051系列单片机应用手册.科学出版社M.199712李真花,崔健.CAN总线轻松入门与实践M.北京航空航天大学出版社202313 Paret,Dominique.LeBusCAN:ControllerAreaNetwork.Dunod,199
42、614jianlingzhao,yuanyuanxue.MCUdevelopment&applicationinternalsM.电子工业出版社.202315 Carninci,Piero.L,informationeconomiqueettechniquedelaprofessionM.SocietedExpansionTechniqueetEconomique1989-200516夏巍,丁刚,严辉.基于CAN总线和嵌入式网关的家庭智能控制网络J.工业仪表与自动化装置,2023(6):29-31.17朱齐丹,汪瞳.CAN通信物理层建模与仿真口J.计算机工程与应用,2023,44(36);11
43、15.18武忠祥,裴仁清,王黎俪,等.基于CAN总线的分布式控制器设计和实现J.电子技术应用,2023(5):108111.19王平,程明传.嵌入式无线家庭网关的设计与实现J.微计算机应用,2023,19(11)15356.20孙兵,何瑾,陈广厦基于DSP的CAN总线与以太网互联系统研制J.仪器仪表学报,2023,29(2):377380.21范伟成,王文良,沈孟良.基于ATmega128单片机的CAN总线接口设计及应用J.测控技术,2023,27(10):4850.附录一系统原理图:附录二程序:*can自发自收*/#includeinclude*SJ1000_PEL1.hsfrWDTCONT
44、R=Oxel;#defineLEDOPl_5#defineLEDlPl6externbitg_RiFlag;externvoidSJAInit(void);externbitSJASendData(unsignedchar+SendDataBuf);externbitSJAReceData(unsignedchar*ReceiveDataBuf);voidRS2321nit(void);voidDelayTime(unsignedintlimes);voidCANTX(void);voidCANRX(void);unsignedcharTX11;unsignedcharRX11;voidmai
45、n(void)Pl=Oxff;SJA_RESET=1;/SJA复位DelayTime(50);SJA_RESET=0;DelayTime(500);SJA RESET=I;SJAInitO;/SJA初始化,自收自发模式,在模式存放器修改(OxOO)EXO= 1:EA = 1;whilel)CAN TXQ :LEDO =LED0;CAN RX ():DelayTime(50);/中断开启/CAN发送一组数据/LED灯变换一次/CAN检测接收Z/延时voidDelayTime(unsignedinttimes)unsignedchari=0;while(times)for(i=0;i50:i+);
46、voidCAN_TX(void)TX0=0x08:标准帧TX1=Oxff;滤波全通TX2=Oxff;TX3=Oxfe:发送的数据,(在这里为流水灯的花式)TX4=Oxfd:TX5=Oxfb;TX6=0xf7;TX7=Oxf7;TX8=Oxfb:TX9=Oxfd:TX10=Oxfe;把要发送的内容放到SJA的发送缓冲区启动自收发中止发送,即为单次发送,按一下,发送一次SJASendData(TX);SjARegwrite(OxOljOxlO);SJARegWrite(0x01,0x02);voidCAM-RX(void)/SJA接收中断标志将接收到的内容从SJA的接收缓冲区读出释放缓冲区/LEEl变换一次if(gRiFlag)g_RiFlag=0:SJAReceData(RX);SJARegWrlte(1,0x04):1.EDl=!LED!;Pl=Oxff;