第09章 CAN控制器模块(2学时)

上传人:博****1 文档编号:571485737 上传时间:2024-08-11 格式:PDF 页数:56 大小:2.83MB
返回 下载 相关 举报
第09章 CAN控制器模块(2学时)_第1页
第1页 / 共56页
第09章 CAN控制器模块(2学时)_第2页
第2页 / 共56页
第09章 CAN控制器模块(2学时)_第3页
第3页 / 共56页
第09章 CAN控制器模块(2学时)_第4页
第4页 / 共56页
第09章 CAN控制器模块(2学时)_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《第09章 CAN控制器模块(2学时)》由会员分享,可在线阅读,更多相关《第09章 CAN控制器模块(2学时)(56页珍藏版)》请在金锄头文库上搜索。

1、DSP原理与应用29.1 CAN总线技术概述9.1 CAN总线技术概述9.2 CAN总线控制器模块概述9.2 CAN总线控制器模块概述9.3 邮箱9.3 邮箱9.4 9.4 CAN总线控制寄存器总线控制寄存器9.5 9.5 CAN总线状态寄存器总线状态寄存器9.6 9.6 CAN总线的中断总线的中断9.7 9.7 CAN模块的配置模块的配置9.8 CAN控制器应用9.8 CAN控制器应用第9章CAN控制器模块第9章CAN控制器模块39.1 CAN总线技术概述9.1 CAN总线技术概述测控系统向着网络化方向发展。CAN总线的出现,使控制系统的网络化成为可能,是国际公认的一种现场总线协议。CAN

2、(Controller Area Network)总线是德国Bosch(奔驰)公司为解决现代汽车中众多的控制单元与测试仪器之间的数据交换开发的串行数据通信协议。第9章CAN控制器模块第9章CAN控制器模块4CAN总线问世以来,以高效率、低成本和快速性等特点迅速在汽车电子、测量仪器、控制系统得到广泛的应用。CAN协议一般用来管理控制器、传感器、执行器和人机接口之间的数据传输。由于协议本身的优点,总线上的数据绝对不会发生冲突、数据遗失等现象,使得CAN广泛用于环境恶劣的工业现场和自动化生产线。第9章CAN控制器模块第9章CAN控制器模块5CAN总线是一种多主总线,通信介质可以是绞线、同轴电缆或光导

3、纤维。CAN协议用于分布式测控,已成为IS011898标准,特性如下:(1)结构简单,只有两根线与外部相连,且内部含有错误探测和管理模块。(2)CAN是一种有效支持分布式控制和实时控制的串行通信网络。第9章CAN控制器模块第9章CAN控制器模块6(3)CAN可以多主模式工作,网络上任意一个节点均可在任意时刻主动地向网络上的其它节点发送信息,而不分主从,节点之间有优先级之分,因而通信方式灵活。(4) CAN采用非破坏性位仲裁技术,优先级发送,可以大大节省总线冲突仲裁时间,在重负荷下表现出良好的性能。(5) CAN可以点对点、一点对多点(成组)及全局广播等几种方式传送和接收数据。第9章CAN控制器

4、模块第9章CAN控制器模块7(6) CAN的直接通信距离最远可达10km(传输速率为5Kbps);最高通信速率可达1Mbps(传输距离为40m)。(7) CAN上的节点数实际可达110个。(8) CAN数据链路层采用短帧结构,每一帧为8个字节,易于纠错。可满足通常工业领域中控制命令、工作状态及测试数据的一般要求,同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。第9章CAN控制器模块第9章CAN控制器模块8(9) CAN每帧信息都有CRC校验及其它检错措施,有效地降低了数据的错误率。(10)CAN节点在错误严重的情况下,具有自动关闭的功能,使总线上其它节点不受影响。(11)信号调制解

5、调方式采用NBZ(非归零)编码解码方式,并且采用插入填充位(位填充)技术。第9章CAN控制器模块第9章CAN控制器模块9CAN协议支持用于通信的4种不同的帧类型:? 数据帧:从发送节点到接收节点传送数据。? 远程帧:主要用于请求信息,当节点A向节点B发送一个远程帧,如果节点B中的数据帧信息与节点A有相同的标识符,节点B将做出应答,并发送相应的数据帧到总线上。? 错误帧:在总线检测错误时,任意一个节点所发送的帧。? 过载帧:在前后两个数据帧或远程帧之间提供一个额外的延时。第9章CAN控制器模块第9章CAN控制器模块10CAN标准数据帧包含44到108位,而CAN扩展数据帧包含64到128位,另外

6、,多达23个填充位可以插入到一个标准数据帧中,多达28个填充位可以插入到扩展数据帧中,这要根据数据流的代码来定。标准数据帧的最大长度为131位,扩展数据帧的最大长度为156位。第9章CAN控制器模块第9章CAN控制器模块11数据帧包含如下内容:第9章CAN控制器模块第9章CAN控制器模块12CAN总线所具有的卓越性能、极高的可靠性,设计独特,特别适合工业设备测控单元相连。因此,备受工业界的重视,并已被公认为工业界最有前途的现场总线之一。第9章CAN控制器模块第9章CAN控制器模块139.2 CAN总线控制器模块概述9.2 CAN总线控制器模块概述LF240x为第一个具有片上CAN控制模块的DS

7、P芯片,给用户设计分布式或网络化运动控制系统提供了方便。CAN控制器是一个16位的外设模块,具有以下特性:(1)完全支持CAN2.0B协议。(2)提供6个邮箱给对象,其数据长度为0-8个字节。(3)针对邮箱0、1和2、3有局域接收屏蔽寄存器。第9章CAN控制器模块第9章CAN控制器模块14(4)可编程波特率。(5)可编程中断配置。(6)可编程的CAN总线唤醒功能。(7)自动回复远程请求。(8)当发送出现错误或仲裁丢失数据时能自动重发。(9)总线错误诊断功能。(10)自测试模式。(11)两引脚通信,即CANTX和CANRX。第9章CAN控制器模块第9章CAN控制器模块15第9章CAN控制器模块第

8、9章CAN控制器模块CAN控制器结构框图16第9章CAN控制器模块第9章CAN控制器模块179.3 邮箱9.3 邮箱? 邮箱ram邮箱ram? 邮箱标志符邮箱标志符? 邮箱控制域寄存器邮箱控制域寄存器? 信息缓冲器信息缓冲器? 写访问邮箱ram写访问邮箱ram第9章CAN控制器模块第9章CAN控制器模块18第9章CAN控制器模块第9章CAN控制器模块? 邮箱配置邮箱配置? CAN接收滤波器CAN接收滤波器? 发送邮箱发送邮箱? 接收邮箱接收邮箱? 远程帧的处理远程帧的处理19第9章CAN控制器模块第9章CAN控制器模块20第9章CAN控制器模块第9章CAN控制器模块219.4 9.4 CAN总

9、线控制寄存器总线控制寄存器CAN总线总共有15个控制寄存器,这些寄存器控制着CAN的位定时器、邮箱的发送和接收使能、错误状态及CAN的中断等。第9章CAN控制器模块第9章CAN控制器模块22第9章CAN控制器模块第9章CAN控制器模块?邮箱方向/使能寄存器邮箱方向/使能寄存器?发送控制寄存器发送控制寄存器?接收控制寄存器接收控制寄存器?主控制寄存器主控制寄存器?位配置寄存器位配置寄存器23第9章CAN控制器模块第9章CAN控制器模块CAN的位定时249.5 9.5 CAN总线状态寄存器总线状态寄存器第9章CAN控制器模块第9章CAN控制器模块?错误状态寄存器错误状态寄存器?全局状态寄存器全局状

10、态寄存器?错误计数寄存器错误计数寄存器259.6 9.6 CAN总线的中断总线的中断下列事件能引起中断:?邮箱操作?确认放弃?写拒绝?唤醒?接收报文丢失?总线关闭?被动错误?报警界限第9章CAN控制器模块第9章CAN控制器模块26第9章CAN控制器模块第9章CAN控制器模块?CAN中断标志寄存器CAN中断标志寄存器?CAN中断屏蔽寄存器CAN中断屏蔽寄存器279.7 9.7 CAN模块的配置模块的配置?初始化位配置寄存器BCR1和BCR2初始化位配置寄存器BCR1和BCR2?初始化邮箱中的寄存器初始化邮箱中的寄存器第9章CAN控制器模块第9章CAN控制器模块28位配置寄存器的初始化第9章CAN

11、控制器模块第9章CAN控制器模块299.8 CAN控制器应用9.8.1 CAN控制器的操作步骤9.8 CAN控制器应用9.8.1 CAN控制器的操作步骤CAN控制器的操作分成以下三大步:1初始化CAN控制器2信息的发送3信息的接收第9章CAN控制器模块第9章CAN控制器模块309.8.2 CAN控制器扩展硬件接口9.8.2 CAN控制器扩展硬件接口CAN控制器扩展硬件接口如下图所示,DSP需要通过一个CAN收发器连接到CAN总线上。DSP片内CAN控制器模块CAN收发器芯片CAN总线CANTXCANRXCAN控制器扩展硬件接口框图第9章CAN控制器模块第9章CAN控制器模块31第9章CAN控制

12、器模块PCA82C250芯片第9章CAN控制器模块PCA82C250芯片32第9章CAN控制器模块第9章CAN控制器模块硬件接口硬件接口339.8.3 CAN程序实例9.8.3 CAN程序实例1、CAN模块发送一个远程帧请求1、CAN模块发送一个远程帧请求第9章CAN控制器模块第9章CAN控制器模块34第9章CAN控制器模块第9章CAN控制器模块35第9章CAN控制器模块第9章CAN控制器模块36第9章CAN控制器模块第9章CAN控制器模块37第9章CAN控制器模块第9章CAN控制器模块38第9章CAN控制器模块第9章CAN控制器模块39第9章CAN控制器模块第9章CAN控制器模块40第9章C

13、AN控制器模块第9章CAN控制器模块41第9章CAN控制器模块2、CAN模块自动应答一个远程帧请求第9章CAN控制器模块2、CAN模块自动应答一个远程帧请求42第9章CAN控制器模块第9章CAN控制器模块43第9章CAN控制器模块第9章CAN控制器模块44第9章CAN控制器模块第9章CAN控制器模块45第9章CAN控制器模块第9章CAN控制器模块46第9章CAN控制器模块第9章CAN控制器模块47第9章CAN控制器模块第9章CAN控制器模块483 、CAN控制器的程序设计(C语言)程序如下:1建立中断向量表(汇编).ref _nothing,_c_int0,_GRIS5;声明在其他程序中定义;

14、并在本程序中需要使用的变量或标号.sect.vectors;定义主向量段RSVECTB _c_int0;复位向量INT1B _nothing;中断向量1INT2B _nothing;中断向量2INT3B _nothing;中断向量3INT4B _nothing;中断向量4INT5B _GRIS5;中断向量5INT6B _nothing;中断向量6RESERVED B _nothingSW_INT8 B _nothing SW_INT31 B _nothing第9章CAN控制器模块第9章CAN控制器模块492C语言程序#include f2407_c.h / 引用头部文件int CAN_FLAG

15、;/ 定义标志寄存器void sytem_init();/ 声明在程序中需要用到的函数void CANMBX_ISR();void CAN_INIT(); void inline disable() / 中断屏蔽子程序asm( setc INTM);void inline enable()/ 中断使能子程序asm( clrc INTM);第9章CAN控制器模块第9章CAN控制器模块50(1)主程序main() sytem_init();/ 系统初始化程序CAN_FLAG=0X00;/ 清CAN用户标志,/CAN_FLAG=01表示接收到数据CAN_INIT();/ CAN初始化程序enable

16、(); / 中断使能for(;)*TCR=0X20;/ MBX3请求发送while(*TCR&0X2000=0)/ 等待发送应答continue; 第9章CAN控制器模块第9章CAN控制器模块51*TCR=0X2000; / 清 TA3 和MIF3标志位while(CAN_FLAG=0)continue;/ 等待接收数据CAN_FLAG=0;/ 清接收到标志*MDER=0X0000; / 邮箱不使能*MCR=0X0140; / CDR=1,数据改变请求*MBX3A=*MBX2A+1;/ 邮箱2中数据加1用来更新邮箱3中的数据*MBX3B=*MBX2B+1;*MBX3C=*MBX2C+1;*MB

17、X3D=*MBX2D+1;*MCR=0X04C0;/ DBO=1,CDR=0,ABO=1,STM=1*MDER=0X04C; / ME2=ME3=1,MBX2接收, MBX3发送第9章CAN控制器模块第9章CAN控制器模块52(2)系统初始化子程序void sytem_init()asm( setc INTM);asm( setc SXM);asm( clrc OVM);asm( clrc CNF);*IMR=0x0010;/ 开中断优先级5*IFR=0xFFFF;/ 清中断标志位*SCSR1=0x81FE; *WDCR=0xE8; 第9章CAN控制器模块第9章CAN控制器模块53(3)CAN

18、初始化子程序void CAN_INIT()*MCRB=*MCRB|0X0C0; / 设置IOPC6、IOPC7 为 CANRX,CANTX*CAN_IFR=0XFFFF;/ 清所有CAN中断标志*LAM1_H=0X7FFF;/ 设置邮箱2、3的屏蔽ID寄存器*LAM1_L=0XFFFF;/ 0则ID必须匹配*MCR=0X1040;/ CCR=1 改变配置请求while(*GSR&0X0010=0)continue;/ 当CCE=1 时即可配置 BCR2,BCR1 寄存器*BCR2=0X01;/ 波特率预分频寄存器*BCR1=0X033;/ 波特率设置为1M*MCR=*MCR&0XEFFF;/

19、CCR=0 改变配置结束请求while(*GSR&0X0010!=0)continue; / 只有当CEE=0时,BCR2,BCR1 寄存器配置成功*MDER=0X040; / 不使能邮箱,邮箱2设为接收方式*MCR=0X0143; / CDR=1,数据区改变请求*MSGID2H=0X2447;/ 设 置 邮 箱 2 的 控 制 字 及 ID, IDE=0,AME=0,/ AAM=0, 标准方式为MSGID2H12-2第9章CAN控制器模块第9章CAN控制器模块54*MSGID2L=0XFFFF;*MSGCTRL2=0X08; / 设置控制域,数据长度DCL = 8,RTR=0 数据帧*MBX

20、2A=0X0000;/ 邮箱2信息初始化*MBX2B=0X0000;*MBX2C=0X0000;*MBX2D=0X0000;*MSGID3H=0X2447;/ 设置邮箱3的标识符*MSGID3L=0XFFFF;*MSGCTRL3=0X08;/ RTR=0,DCL=8*MBX3A=0X2211;/ 邮箱3信息初始化*MBX3B=0X4433;*MBX3C=0X6655;*MBX3D=0X8877;*MCR=0X04C0;/ DBO=1,ABO=1,STM=1设置为自测试模式*MDER=0X4C;/ ME3=1,MBX3 发送, ME2=1 接收*CAN_IMR=0XF7FF;/ 中断MBX3 不

21、使能 ,MBX2使能, 低中断优先级*CAN_IFR=0XFFFF;/ 清全部中断标志第9章CAN控制器模块第9章CAN控制器模块55(4)中断程序void interrupt GRIS5() / 中断入口程序 switch(*PIVR)case 64:CANMBX_ISR(); / 邮箱2接受到相应信息则进入中断服务子程序break; void CANMBX_ISR()/ 邮箱2接收中断服务子程序*RCR=0X040;/ 复位 RMP2 和 MIF2CAN_FLAG=1;/ 置用户接收标志void interrupt nothing()/ 假中断程序 第9章CAN控制器模块第9章CAN控制器模块56

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号