can总线数据通信系统的设计大学毕业论文.doc
《can总线数据通信系统的设计大学毕业论文.doc》由会员分享,可在线阅读,更多相关《can总线数据通信系统的设计大学毕业论文.doc(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、太原科技大学课程设计论文CAN总线数据通信系统的设计摘 要现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN(Controller Area Network)属于现场总线的范畴,是一种多主方式的串行通讯总线,数据通信实时性强。与其它现场总线比较而言,CAN总线具有通信速率高、容易实现、可靠性高、性价比高等诸多特点。本系统要在单片机中实现CAN总线的接口,通过CAN总线,实现两个模块之间的数据通讯。系统主要由四部分所构成:PC机、微控制器80C51、独立CAN通信控制器SJA1000
2、和CAN总线收发器PCA82C250。微处理器80C51负责SJA1000的初始化,通过控制SJA1000实现数据的发送和接收等通信任务。CAN总线节点的软件设计主要包括三大部分:CAN节点初始化、报文发送和报文接收。本系统通过扩展CAN总线控制器SJA1000,在单片机系统中实现了CAN总线的接口,并且编写了SJA1000的驱动程序,通过读写其的内部寄存器,完成工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等基本操作;利用各基本操作,完成了对SJA1000的初始化,并且实现了数据发送和接收。太原科技
3、大学课程设计论文目 录第1章 原理与方案11.1 设计目的与要求11.2 CAN总线介绍11.3 设计方案21.3.1 硬件设计方案21.3.2 软件设计方案4第2章 硬件连接与说明52.1 硬件连接52.1.1 模块使用说明62.1.2 实验箱连线62.2 CAN总线控制器SJA100062.3 CAN控制器接口PCA82C2507第3章 软件流程图及说明83.1 软件流程图83.1.1 主程序流程图83.1.2 初始化子程序流程图83.1.3 发送数据子程序流程图103.1.4 接收数据子程序流程图103.2 软件实现过程10第4章 结果分析及心得体会124.1 结果分析124.2 心得体
4、会134.2.1 CAN应用中的问题144.2.2 CAN总线的其他应用14附录 程序清单15参考文献23II第1章 原理与方案1.1 设计目的与要求 扩展CAN总线控制器,在单片机系统中实现CAN总线的接口,并编写接口芯片的驱动程序。通过CAN总线,实现两个模块之间的数据通讯,CPU控制第一个模块发送1帧数据,第二个模块收到这帧数据并送至另一个CPU的内部存储器。1.2 CAN总线介绍CAN全称为“Controller Area Network”, 即控制器局域网,是国际上应用最广泛的现场总线之一。最初CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车
5、电子控制网络。比如发动机管理、系统变速箱控制器、仪表装备中,均嵌入CAN控制装置。一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如当使用Philips PCA82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN 可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易,另外硬件的错误检定特性也增强了CAN的抗电磁干扰能力。CAN是一种多主方式的串行通讯总线。基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km 时,CAN仍可提供高达50Kbit/s 的数据
6、传输速率。由于CAN 总线具有很高的实时性能,因此CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。1.3 设计方案在本系统中,采用80C51单片机,80C51与PC机串行通信,设置SJA1000工作于Intel模式,由PC机发送的数据写入SJA1000并通过CAN收发器发送。接收数据是通过中断进行的,CAN 总线传输过来的数据经CAN接口芯片PCA82C250接收并写入SJA1000的RXFIFO,然后通过中断提请CPU读取,读取的数据上传送给PC机。总体设计框图如图1-2所示。图1-2 总体设计框图1.3.1 硬件设计方案1. 芯片介绍SJA1000:独立式CAN控
7、制器,具有64字节的FIFO作为接收缓存。6N137:高速光隔,最高速度10Mbs,用于保护CAN控制器。PCA82C250:CAN总线收发器,是CAN控制器与CAN总线的接口器件,对CAN总线差分式发送。2. CAN控制器与CPU接口设计对于CPU来说,CAN控制器是确保双方独立工作的存贮器映象外围设备。CAN控制器与外部CPU的接口是通过控制器接口逻辑(CIL)实现的,80C51 的CPU通过将地址总线(AB)和数据总线(DB)连接到CIL上来完成与CAN控制器之间的信息交换,不需要专门的控制总线(CB),CPU与PCA82C250之间的状态、控制和命令信号的交换在CAN控制器中完成。SJ
8、A1000与单片机的接口电路如图1-3所示。图1-3 SJA1000与单片机的接口电路3. CAN控制器工作电路的连接为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与PCA82C250的TXD和RXD相连,而是通过高速光隔6N137后与PCA82C250相连,这样就很好的实现了总线上各CAN节点间的电气隔离。若PCA82C250处于CAN总线的网络终端,总线接口部分需加一个120欧姆的匹配电阻。CAN控制器工作电路如下图所示:图1-4 CAN控制器工作电路1.3.2 软件设计方案CAN 总线节点的软件设计主要包括三大部分:CAN节点初始化、报文发送和报文接收。熟悉
9、这三部分程序的设计就能编写出利用CAN总线进行通信的一般应用程序。当然要将CAN总线应用于通信任务比较复杂的系统中,还需详细了解有关CAN总线错误处理、总线脱离处理、接收滤波处理、波特率参数设置和自动检测以及CAN总线通信距离和节点数的计算等方面的内容。SJA1000的初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等。在完成SJA1000的初始化设置以后,SJA1000就可以回到工作状态,进行正常的通信任务。发送子程序负责节点报文的发送。发送时用户只需将
10、待发送的数据按特定格式组合成一帧报文,送入SJA1000发送缓存区中,然后启动SJA1000 发送即可。接收子程序负责节点报文的接收以及其它情况处理。接收子程序比发送子程序要复杂一些,因为在处理接收报文的过程中,同时要对诸如总线脱离、错误报警、接收溢出等情况进行处理。SJA1000报文的接收主要有两种方式:中断接收方式和查询接收方式,两种接收方式编程的思路基本相同,如果对通信的实时性要求不是很强,一般采用查询接收方式。第2章 硬件连接与说明2.1 硬件连接单片机与CAN模块等外围器件的连接如图2-1所示。图2-1 系统原理图2.1.1 模块使用说明CAN总线模块由一个CAN总线控制器SJA10
11、00和一个CAN收发器PCA82C250组成,它们共同构成一个CAN节点。模块的电源由接口挂箱上的接口插座提供。模块上的RESET、INT、TX0、RX0插孔分别对应于SJA1000芯片上的相应引脚。模块上带有上电复位电路,也可通过RESET插孔进行手动复位,只需在RESET上加上负脉冲。模块上提供两个RJ45接口和一组“CANH、CANL”插孔接口,这三组接口是完全一致的。对于近距离CAN模块之间的通讯,可将各模块的“CANH、CANL”插孔用导线连接;对于远距离CAN模块之间的通讯,则可用双绞线连接各RJ45接口。每个CAN模块上都有一组终端电阻接口,即“A、B”插孔。当总线上只有两个CA
12、N节点时,终端电阻可不接。如总线上的CAN节点数为3个或3个以上时,必须有一个而且只能有一个CAN模块接上终端电阻。具体接法为:将A插孔和CANL插孔、B插孔和CANH插孔分别用导线连接。2.1.2 实验箱连线两个CAN模块分别接在两个实验台上,第一个模块(发送)跳线接LCS2,第二个模块(接收)跳线接LCS3,用双绞线连接两个模块的RJ45接口,将第一个CAN模块接上终端电阻。2.2 CAN总线控制器SJA1000SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。它是Philips半导体公司PCA82C200 CAN控制器(BasicCAN)的替代产品,
13、增加了一种新的操作模式PeliCAN,这种模式支持具有很多新特性的CAN2.0B协议。2.3 CAN控制器接口PCA82C250PCA82C250是CAN协议控制器和物理总线间的接口,它主要是为汽车中高速通讯(高达1Mbps)应用而设计。此器件对总线提供差动发送能力,对CAN控制器提供差动接收能力,与ISO11898标准完全兼容。 PCA82C250芯片由接收器、驱动器、基准电压产生电路、工作模式选择电路及保护电路等组成。PCA82C250内部的限流电路可以防止发送输出级对电池电压的正端和负端短路。虽然在这种故障条件出现时,功耗将增加,但这种特性可以阻止发送器输出级的破坏。在节点温度大约超过1
14、60时,两个发送器输出端的极限电流将减少。由于发送器是功耗的主要部分,因此芯片温度会迅速降低。PCA82C50芯片的其他部分将继续工作。当总线短路时,热保护十分重要。CANH和CANL两条线也可以防止在汽车环境下可能发生的电气瞬变现象。第3章 软件流程图及说明3.1 软件流程图3.1.1 主程序流程图程序开始运行后,先调用初始化子程序,分别对两个CAN模块中的SJA1000进行初始化,然后把要发送的数据写入CPU的存储器中,然后循环调用发送数据子程序和接收数据子程序。具体流程如图3-1所示。 图3-1 主程序流程图3.1.2 初始化子程序流程图初始化子程序先设置MOD选择复位模式,然后分别设置
15、CDR选择工作模式;设置IER选择中断类型;设置BTR0、BTR1设定传输速率;设置OCR选择输出模式;设置ACR、AMR设定接收数据类型;RBSA、TXERR、ECC均清零,最后设置MOD进入工作模式。具体流程如图3-2所示。图3-2 初始化子程序流程图3.1.3 发送数据子程序流程图发送数据子程序先把三个控制字节写入发送缓冲区,然后把等待发送的数据也写入发送缓冲区,最后设置CMR,发出发送请求、启动SJA1000发送数据。具体流程如图3-3所示。图3-3 发送数据子程序流程图3.1.4 接收数据子程序流程图接收数据子程序首先要读SR和IR,判断工作状态及中断类型并做相应处理,若RXFIFO
16、有数据,应判断帧类型并做相应处理,若数据正确则送至CPU的内部存储器。具体流程如图3-4所示。3.2 软件实现过程两个实验台运行程序CAN.ASM(程序见附录),发送实验台全速运行程序,接收实验台要在主程序中调用接收数据子程序后设置断点,等待接收到数据后送至CPU的存储器,然后查看CPU的内部存储器30H37H中的数据与程序中发送的数据是否一致。图3-4 接收数据子程序流程图第4章 结果分析及心得体会4.1 结果分析本试验通过扩展CAN总线控制器,在单片机系统中实现了CAN总线的接口,通过CAN总线,实现了两个模块之间的数据通讯,在第一个模块中发送1帧数据,在第二个模块中收到这帧数据并送至了C
17、PU的内部存储器30H37H。如果要修改发送数据,只需修改程序中“TXDATA”后8个字节的数据即可。发送实验台内部存储器如图4-1所示。图4-1 发送实验台 接收实验台内部存储器如图4-2所示。图4-2 接收实验台4.2 心得体会通过本次设计对CAN总线的工作原理及其与CPU的接口方式有了一定程度的理解。基于CAN总线可实现多种数据的传输,例如:可将文字、图像等进行编码后传输,并在接收端进行解码后恢复,由于时间有限未做深入研究。开发CAN总线控制节点时,还可以使用集成了CAN控制器的CPU 80C592,但支持80C592的开发工具少,给开发工作带来一定的难度。所以一般使用独立的CAN 控制
18、器SJA1000配合单片机进行开发。4.2.1 CAN应用中的问题SJA1000有BasicCAN和PeliCAN两种工作模式,SJAl000上电复位后自动进入BasicCAN,因此选用PeliCAN模式必须在程序中设置时钟分频寄存器(CDR)选择工作模式。总线定时寄存器的设置极大影响了CAN性能的发挥。一般来说,若硬件连接无误,通信失败的主要原因在于总线定时寄存器设置不当。在实验中,曾出现过因SJA1000的时钟电路中晶振严重漂移导致通信失败的情况。ACR和AMR两个寄存器构成硬件过滤,CAN节点通过它来决定是否接收总线上的数据,是否置CAN的接收中断,这极大地提高了系统的灵活性。可以通过中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- can 总线 数据通信 系统 设计 大学毕业 论文
限制150内