课程设计-CAN总线数据通信系统的设计
本作品内容为课程设计-CAN总线数据通信系统的设计,格式为 doc ,大小 591360 KB ,页数为 27页
('CAN总线数据通信系统的设计摘要太原科技大学课程设计论文现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN(ControllerAreaNetwork)属于现场总线的范畴,是一种多主方式的串行通讯总线,数据通信实时性强。与其它现场总线比较而言,CAN总线具有通信速率高、容易实现、可靠性高、性价比高等诸多特点。本系统要在单片机中实现CAN总线的接口,通过CAN总线,实现两个模块之间的数据通讯。系统主要由四部分所构成:PC机、微控制器80C51、独立CAN通信控制器SJA1000和CAN总线收发器PCA82C250。微处理器80C51负责SJA1000的初始化,通过控制SJA1000实现数据的发送和接收等通信任务。CAN总线节点的软件设计主要包括三大部分:CAN节点初始化、报文发送和报文接收。本系统通过扩展CAN总线控制器SJA1000,在单片机系统中实现了CAN总线的接口,并且编写了SJA1000的驱动程序,通过读写其的内部寄存器,完成工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等基本操作;利用各基本操作,完成了对SJA1000的初始化,并且实现了数据发送和接收。太原科技大学课程设计论文目录第1章原理与方案.............................................................................................11.1设计目的与要求........................................................................................11.2CAN总线介绍...........................................................................................11.3设计方案....................................................................................................21.3.1硬件设计方案.....................................................................................21.3.2软件设计方案.....................................................................................4第2章硬件连接与说明.....................................................................................52.1硬件连接....................................................................................................52.1.1模块使用说明.....................................................................................62.1.2实验箱连线.........................................................................................62.2CAN总线控制器SJA1000........................................................................62.3CAN控制器接口PCA82C250..................................................................7第3章软件流程图及说明.................................................................................83.1软件流程图................................................................................................83.1.1主程序流程图.....................................................................................83.1.2初始化子程序流程图.........................................................................83.1.3发送数据子程序流程图...................................................................103.1.4接收数据子程序流程图...................................................................103.2软件实现过程..........................................................................................10第4章结果分析及心得体会...........................................................................124.1结果分析..................................................................................................124.2心得体会..................................................................................................134.2.1CAN应用中的问题.........................................................................144.2.2CAN总线的其他应用.....................................................................14附录程序清单...................................................................................................15I太原科技大学课程设计论文参考文献.............................................................................................................23II太原科技大学课程设计论文第1章原理与方案1.1设计目的与要求扩展CAN总线控制器,在单片机系统中实现CAN总线的接口,并编写接口芯片的驱动程序。通过CAN总线,实现两个模块之间的数据通讯,CPU控制第一个模块发送1帧数据,第二个模块收到这帧数据并送至另一个CPU的内部存储器。1.2CAN总线介绍CAN全称为“ControllerAreaNetwork”,即控制器局域网,是国际上应用最广泛的现场总线之一。最初CAN被设计作为汽车环境中的微控制器通讯,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络。比如发动机管理、系统变速箱控制器、仪表装备中,均嵌入CAN控制装置。一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。例如当使用PhilipsPCA82C250作为CAN收发器时,同一网络中允许挂接110个节点。CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易,另外硬件的错误检定特性也增强了CAN的抗电磁干扰能力。CAN是一种多主方式的串行通讯总线。基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN仍可提供高达50Kbit/s的数据传输速率。由于CAN总线具有很高的实时性能,因此CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。1.3设计方案1太原科技大学课程设计论文在本系统中,采用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控制器,具有64字节的FIFO作为接收缓存。6N137:高速光隔,最高速度10Mb/s,用于保护CAN控制器。PCA82C250:CAN总线收发器,是CAN控制器与CAN总线的接口器件,对CAN总线差分式发送。2.CAN控制器与CPU接口设计对于CPU来说,CAN控制器是确保双方独立工作的存贮器映象外围设备。CAN控制器与外部CPU的接口是通过控制器接口逻辑(CIL)实现的,80C51的CPU通过将地址总线(AB)和数据总线(DB)连接到CIL上来完成与CAN控制器之间的信息交换,不需要专门的控制总线(CB),CPU2太原科技大学课程设计论文与PCA82C250之间的状态、控制和命令信号的交换在CAN控制器中完成。SJA1000与单片机的接口电路如图1-3所示。图1-3SJA1000与单片机的接口电路3.CAN控制器工作电路的连接为了增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与PCA82C250的TXD和RXD相连,而是通过高速光隔6N137后与PCA82C250相连,这样就很好的实现了总线上各CAN节点间的电气隔离。若PCA82C250处于CAN总线的网络终端,总线接口部分需加一个120欧姆的匹配电阻。CAN控制器工作电路如下图所示:3太原科技大学课程设计论文图1-4CAN控制器工作电路1.3.2软件设计方案CAN总线节点的软件设计主要包括三大部分:CAN节点初始化、报文发送和报文接收。熟悉这三部分程序的设计就能编写出利用CAN总线进行通信的一般应用程序。当然要将CAN总线应用于通信任务比较复杂的系统中,还需详细了解有关CAN总线错误处理、总线脱离处理、接收滤波处理、波特率参数设置和自动检测以及CAN总线通信距离和节点数的计算等方面的内容。SJA1000的初始化只有在复位模式下才可以进行,初始化主要包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器(AMR)和接收代码寄存器(ACR)的设置、波特率参数设置和中断允许寄存器(IER)的设置等。在完成SJA1000的初始化设置以后,SJA1000就可以回到工作状态,进行正常的通信任务。发送子程序负责节点报文的发送。发送时用户只需将待发送的数据按特定格式组合成一帧报文,送入SJA1000发送缓存区中,然后启动SJA1000发送即可。接收子程序负责节点报文的接收以及其它情况处理。接收子程序比发送子程序要复杂一些,因为在处理接收报文的过程中,同时要对诸如总线脱离、错误报警、接收溢出等情况进行处理。SJA1000报文的接收主要有两4太原科技大学课程设计论文种方式:中断接收方式和查询接收方式,两种接收方式编程的思路基本相同,如果对通信的实时性要求不是很强,一般采用查询接收方式。第2章硬件连接与说明2.1硬件连接单片机与CAN模块等外围器件的连接如图2-1所示。图2-1系统原理图2.1.1模块使用说明CAN总线模块由一个CAN总线控制器SJA1000和一个CAN收发器PCA82C250组成,它们共同构成一个CAN节点。模块的电源由接口挂箱上的接口插座提供。模块上的RESET、INT、TX0、RX0插孔分别对应于SJA1000芯片上的相应引脚。模块上带有上电复位电路,也可通过RESET插孔进行手动复位只需在RESET上加上负脉冲。模块上提供两个RJ45接口和一组“CANH、CANL”插孔接口,这三5太原科技大学课程设计论文组接口是完全一致的。对于近距离CAN模块之间的通讯,可将各模块的“CANH、CANL”插孔用导线连接;对于远距离CAN模块之间的通讯,则可用双绞线连接各RJ45接口。每个CAN模块上都有一组终端电阻接口,即“A、B”插孔。当总线上只有两个CAN节点时,终端电阻可不接。如总线上的CAN节点数为3个或3个以上时,必须有一个而且只能有一个CAN模块接上终端电阻。具体接法为:将A插孔和CANL插孔、B插孔和CANH插孔分别用导线连接。2.1.2实验箱连线两个CAN模块分别接在两个实验台上,第一个模块(发送)跳线接LCS2,第二个模块(接收)跳线接LCS3,用双绞线连接两个模块的RJ45接口,将第一个CAN模块接上终端电阻。2.2CAN总线控制器SJA1000SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。它是Philips半导体公司PCA82C200CAN控制器(BasicCAN)的替代产品,增加了一种新的操作模式——PeliCAN,这种模式支持具有很多新特性的CAN2.0B协议。2.3CAN控制器接口PCA82C250PCA82C250是CAN协议控制器和物理总线间的接口,它主要是为汽车中高速通讯(高达1Mbps)应用而设计。此器件对总线提供差动发送能力,对CAN控制器提供差动接收能力,与ISO11898标准完全兼容。PCA82C250芯片由接收器、驱动器、基准电压产生电路、工作模式选择电路及保护电路等组成。PCA82C250内部的限流电路可以防止发送输出级对电池电压的正端和负端短路。虽然在这种故障条件出现时,功耗将增加,但这种特性可以阻止发送器输出级的破坏。6太原科技大学课程设计论文在节点温度大约超过160℃时,两个发送器输出端的极限电流将减少。由于发送器是功耗的主要部分,因此芯片温度会迅速降低。PCA82C50芯片的其他部分将继续工作。当总线短路时,热保护十分重要。CANH和CANL两条线也可以防止在汽车环境下可能发生的电气瞬变现象。第3章软件流程图及说明3.1软件流程图3.1.1主程序流程图程序开始运行后,先调用初始化子程序,分别对两个CAN模块中的SJA1000进行初始化,然后把要发送的数据写入CPU的存储器中,然后循环调用发送数据子程序和接收数据子程序。具体流程如图3-1所示。7太原科技大学课程设计论文图3-1主程序流程图3.1.2初始化子程序流程图初始化子程序先设置MOD选择复位模式,然后分别设置CDR选择工作模式;设置IER选择中断类型;设置BTR0、BTR1设定传输速率;设置OCR选择输出模式;设置ACR、AMR设定接收数据类型;RBSA、TXERR、ECC均清零,最后设置MOD进入工作模式。具体流程如图3-2所示。8太原科技大学课程设计论文图3-2初始化子程序流程图3.1.3发送数据子程序流程图发送数据子程序先把三个控制字节写入发送缓冲区,然后把等待发送9太原科技大学课程设计论文的数据也写入发送缓冲区,最后设置CMR,发出发送请求、启动SJA1000发送数据。具体流程如图3-3所示。图3-3发送数据子程序流程图3.1.4接收数据子程序流程图接收数据子程序首先要读SR和IR,判断工作状态及中断类型并做相应处理,若RXFIFO有数据,应判断帧类型并做相应处理,若数据正确则送至CPU的内部存储器。具体流程如图3-4所示。3.2软件实现过程两个实验台运行程序CAN.ASM(程序见附录),发送实验台全速运行程序,接收实验台要在主程序中调用接收数据子程序后设置断点,等待接收到数据后送至CPU的存储器,然后查看CPU的内部存储器30H~37H中的数据与程序中发送的数据是否一致。10太原科技大学课程设计论文图3-4接收数据子程序流程图11太原科技大学课程设计论文第4章结果分析及心得体会4.1结果分析本试验通过扩展CAN总线控制器,在单片机系统中实现了CAN总线的接口,通过CAN总线,实现了两个模块之间的数据通讯,在第一个模块中发送1帧数据,在第二个模块中收到这帧数据并送至了CPU的内部存储器30H~37H。如果要修改发送数据,只需修改程序中“TXDATA”后8个字节的数据即可。发送实验台内部存储器如图4-1所示。图4-1发送实验台接收实验台内部存储器如图4-2所示。12太原科技大学课程设计论文图4-2接收实验台4.2心得体会通过本次设计对CAN总线的工作原理及其与CPU的接口方式有了一定程度的理解。基于CAN总线可实现多种数据的传输,例如:可将文字、图像等进行编码后传输,并在接收端进行解码后恢复,由于时间有限未做深入研究。开发CAN总线控制节点时,还可以使用集成了CAN控制器的CPU80C592,但支持80C592的开发工具少,给开发工作带来一定的难度。所以一般使用独立的CAN控制器SJA1000配合单片机进行开发。4.2.1CAN应用中的问题SJA1000有BasicCAN和PeliCAN两种工作模式,SJAl000上电复位后13太原科技大学课程设计论文自动进入BasicCAN,因此选用PeliCAN模式必须在程序中设置时钟分频寄存器(CDR)选择工作模式。总线定时寄存器的设置极大影响了CAN性能的发挥。一般来说,若硬件连接无误,通信失败的主要原因在于总线定时寄存器设置不当。在实验中,曾出现过因SJA1000的时钟电路中晶振严重漂移导致通信失败的情况。ACR和AMR两个寄存器构成硬件过滤,CAN节点通过它来决定是否接收总线上的数据,是否置CAN的接收中断,这极大地提高了系统的灵活性。可以通过中断寄存器(IR)、状态寄存器(SR)查询CAN总线的工作状态,了解数据传输状况。为了保证数据的正常收发,需要对状态寄存器和中断寄存器各状态位的变化做出相应处理。4.2.2CAN总线的其他应用CAN(ControllerAreaNetwork)总线最早由德国BOSCH公司提出,主要用于汽车内部测量与控制中心之间的数据通信。由于其良好的性能,在世界范围内广泛应用于其他领域当中,如工业自动化、汽车电子、楼宇建筑、电梯网络、电力通讯和安防消防等诸多领域,并逐渐成为这些行业的主要通讯手段。一个由CAN总线构成的单一网络中,可以挂接多个节点,实际应用中只需要设置几个节点为上位节点与PC机进行通信,其他节点则可以做其他用途。如用于数据的采集,则与A/D转换芯片相接即可;如与控制相关,则与控制口相接即可,这样一来可以灵活地构成各种系统。CAN总线具有多方面的优势,可以组建一个具有高可靠性、远距离、多节点、多主方式的设备通讯网络,例如:我国许多煤矿中都采用基于CAN-BUS网络的煤矿通讯网络。附录程序清单14太原科技大学课程设计论文CAN.ASMMODEQU00H;模式寄存器CMREQU01H;命令寄存器SREQU02H;状态寄存器IREQU03H;中断寄存器IEREQU04H;中断使能寄存器BTR0EQU06H;总线定时寄存器0BTR1EQU07H;总线定时寄存器1OCREQU08H;输出控制寄存器ALCEQU0BH;仲裁丢失捕捉寄存器ECCEQU0CH;错误代码捕捉寄存器TXERREQU0FH;发送错误计数器ACR0EQU10H;验收代码寄存器0ACR1EQU11H;验收代码寄存器1ACR2EQU12H;验收代码寄存器2ACR3EQU13H;验收代码寄存器3AMR0EQU14H;验收屏蔽寄存器0AMR1EQU15H;验收屏蔽寄存器1AMR2EQU16H;验收屏蔽寄存器2AMR3EQU17H;验收屏蔽寄存器3FINEQU10H;发送/接收帧信息ID1EQU11H;发送/接收缓冲区之标示符一ID2EQU12H;发送/接收缓冲区之标示符二DATA1EQU13H;发送/接收数据首址RBSAEQU1EH;接收缓冲器起始地址CDREQU1FH;时钟分频寄存器;---------------READERCOS1.0--------------------------15太原科技大学课程设计论文ORG4000HJMPSTARTORG4080H;--------------------------------主程序-----------------------------------START:MOVDPH,#0D3H;CAN1初始化(CAN1片选为;LCS2:0D300H)MOVR0,#0AAH;验收代码为AAHLCALLINITCANMOVDPH,#0D4H;CAN2初始化(CAN2片选为;LCS3:0D400H)MOVR0,#0BBH;验收代码为BBHLCALLINITCAN;-----------------------------------------------------------------MOVR0,#20H;20H-27H赋初值MOVR1,#00HMOVDPTR,#TXDATASS1:MOVA,R1MOVCA,@A+DPTRMOV@R0,AINCR0INCR1CJNER1,#08,SS1;-------------------------CAN1发送1帧数据------------------LOOP:MOVDPH,#0D3HMOVR0,#20HLCALLSEND;发送20H为首址的1帧数据(前三;控制字节为:08H、BBH、FFH,由程序给出)16太原科技大学课程设计论文LCALLDELAY;调用延时子程序;-------------------------CAN2接收1帧数据------------------------MOVDPH,#0D4HMOVR0,#30HLCALLRECV;调用接收数据子程序NOP;设断点处HALT:JMPLOOPTXDATA:DB0AAH,0BBH,0CCH,0D4H;要发送的一帧数据,用户可改写DB0E5H,0F6H,97H,18H;----------------------------初始化子程序-------------------------------INITCAN:;DPH、R0为入口参数MOVDPL,#MOD;模式寄存器,选择单验收滤波器模;式,进入复位模式MOVA,#09HMOVX@DPTR,AMOVDPL,#CDR;时钟分频器,选择PeliCAN模式,MOVA,#88H;关闭CLKOUT输出MOVX@DPTR,AMOVDPL,#IER;中断使能寄存器,开溢出、错误、MOVA,#0DH;接收中断MOVX@DPTR,AMOVDPL,#BTR0;总线定时寄存器0MOVA,#03HMOVX@DPTR,AMOVDPL,#BTR1;总线定时寄存器1,6MHz晶振,MOVA,#0FFH;波特率30Kbps17太原科技大学课程设计论文MOVX@DPTR,AMOVXA,@DPTRMOVDPL,#OCR;输出控制寄存器,;选择正常输出模式MOVA,#0AAHMOVX@DPTR,AMOVDPL,#ACR0;验收代码寄存器ACR0MOVA,R0MOVX@DPTR,AINCDPTR;验收代码寄存器ACR1MOVA,#0FFHMOVX@DPTR,AINCDPTR;验收代码寄存器ACR2MOVX@DPTR,AINCDPTR;验收代码寄存器ACR3MOVX@DPTR,AMOVDPL,#AMR0;验收屏蔽寄存器AMR0MOVA,#00HMOVX@DPTR,AINCDPTR;验收屏蔽寄存器AMR1MOVA,#0FFHMOVX@DPTR,AINCDPTR;验收屏蔽寄存器AMR2MOVX@DPTR,AINCDPTR;验收屏蔽寄存器AMR3MOVX@DPTR,AMOVDPL,#RBSA;接收缓冲器起始地址为0MOVA,#00H18太原科技大学课程设计论文MOVX@DPTR,AMOVDPL,#TXERR;清除发送错误计数器MOVX@DPTR,AMOVDPL,#ECC;清除错误代码捕捉寄存器MOVX@DPTR,AMOVDPL,#MOD;单验收滤波器模式,返回工作模式MOVA,#08HMOVX@DPTR,ARET;--------------------------发送数据子程序------------------------SEND:;DPH、R0为入口参数MOVDPL,#FIN;SJA1000发送缓存区首址MOVA,#08HMOVX@DPTR,AINCDPLMOVA,#0BBHMOVX@DPTR,AINCDPLMOVA,#0FFHMOVX@DPTR,AINCDPLMOVR2,#08HSEND1:MOVA,@R0;R0为发送数据首址MOVX@DPTR,AINCR0INCDPLDJNZR2,SEND1MOVDPL,#CMR;命令寄存器发出发送请求,19太原科技大学课程设计论文MOVA,#01H;启动SJA1000发送MOVX@DPTR,ARET;-----------------------接收数据子程序--------------------RECV:;DPH、R0为入口参数MOVDPL,#SR;状态寄存器地址MOVXA,@DPTRANLA,#0C3H;读取总线关闭、出错、接收溢出、;有数据等位JNZPROCRET;无上述状态,结束PROC:JNBACC.7,PROC1BUSERR:MOVDPL,#IR;IR中断寄存器,出现总线关闭MOVXA,@DPTR;读中断寄存器,清除中断位MOVDPL,#MODMOVA,#08HMOVX@DPTR,A;将方式寄存器复位请求位清0RETNOPPROC1:MOVDPL,#IR;总线正常MOVXA,@DPTR;读取中断位JNBACC.3,OTHEROVER:MOVDPL,#CMR;数据溢出处理MOVA,#0CHMOVX@DPTR,A;清除数据溢出位,释放接收缓冲区RETNOP20太原科技大学课程设计论文OTHER:JBACC.0,RECELJMPRECOUT;接收缓冲区无数据NOPRECE:MOVDPL,#FIN;接收缓冲区有数据MOVXA,@DPTRJNBACC.6,RDATAMOVDPL,#CMR;远程帧处理MOVA,#04HMOVX@DPTR,ALJMPRECOUTNOPRDATA:MOVDPL,#FIN;发送/接收数据首址MOVXA,@DPTRINCDPLMOVXA,@DPTRINCDPLMOVXA,@DPTRINCDPLMOVR2,#08HRDATA1:MOVXA,@DPTRMOV@R0,A;将接收数据传至R0为首址的内存中INCDPLINCR0DJNZR2,RDATA1MOVDPL,#CMRMOVA,#04HMOVX@DPTR,ARECOUT:MOVDPL,#ALC;释放仲裁丢失捕捉寄存器21太原科技大学课程设计论文MOVXA,@DPTRMOVDPL,#ECC;释放错误代码捕捉寄存器MOVXA,@DPTRNOPRET;--------------------延时子程序---------------------DELAY:MOVR2,#40DELAY1:MOVR4,#255DELAY2:NOPDJNZR4,DELAY2DJNZR2,DELAY1RETEND参考文献[1]李全利,迟荣强.单片机原理及接口技术.北京:高等教育出版社,2004[2]饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用技术.北京:北京航空航天大学出版社,2003[3]邬宽明.CAN总线原理和应用系统设计.北京:北京航空航天大学出版社,2004[4]杨金岩,郑应强,张振宇.8051单片机数据传输接口扩展技术与应用实22太原科技大学课程设计论文例.北京:人民邮电出版社,2005[5]陈晓忠,黄宁,赵小侠.单片机接口技术适用子程序.北京:人民邮电出版社,2005[6]邬宽明.单片机外围器件使用手册数据传输接口器件分册.北京:北京航空航天大学出版社,1998[7]广州周立功单片机发展有限公司.SJA1000独立CAN控制器应用指南[8]广州周立功单片机发展有限公司.PCA82C250CAN控制器接口数据手册23',)
提供课程设计-CAN总线数据通信系统的设计会员下载,编号:1700878055,格式为 docx,文件大小为27页,请使用软件:wps,office word 进行编辑,PPT模板中文字,图片,动画效果均可修改,PPT模板下载后图片无水印,更多精品PPT素材下载尽在某某PPT网。所有作品均是用户自行上传分享并拥有版权或使用权,仅供网友学习交流,未经上传用户书面授权,请勿作他用。若您的权利被侵害,请联系963098962@qq.com进行删除处理。