页数:56页文件大小:21.18 MB来源: 数字信号处理器DSP原理与应用ppt课件
本课件说明CAN现场总线的技术特点与帧格式,介绍LF240x片内CAN控制器模块的结构、邮箱的组成与收发流程,讲解控制寄存器、状态寄存器与中断的配置方法,并给出CAN模块波特率计算与应用实例。
DSP原理与应用
CAN总线技术概述2.CAN总线控制器模块概述3.邮箱4.CAN总线控制寄存器5.CAN总线状态寄存器6.CAN总线的中断7.CAN模块的配置8.CAN控制器应用
网络化方向发展。CAN总线的出现,使控制系统的网络化成为可能,是国际公认的一种现场总线协议。CAN(Controller Area Network)总线是德国Bosch(奔驰)公司为解决现代汽车中众多的控制单元与测试仪器之间的数据交换开发的串行数据通信协议
CAN总线问世以来,以高效率、低成本和快速性等特点迅速在汽车电子、测量仪器、控制系统得到广泛的应用。CAN协议一般用来管理控制器、传感器、执行器和人机接口之间的数据传输。
由于协议本身的优点,总线上的数据绝对不会发生冲突、数据遗失等现象,使得CAN广泛用于环境恶劣的工业现场和自动化生产线
CAN总线是一种多主总线,通信介质可以是绞线、同轴电缆或光导纤维。CAN协议用于分布式测控,已成为IS011898标准,特性如下:1结构简单,只有两根线与外部相连,且内部含有错误探测和管理模块。
2CAN是一种有效支持分布式控制和实时控制的串行通信网络
(3)CAN可以多主模式工作,网络上任意一个节点均可在任意时刻主动地向网络上的其它节点发送信息,而不分主从,节点之间有优先级之分,因而通信方式灵活。(4)CAN采用非破坏性位仲裁技术,优先级发送,可以大大节省总线冲突仲裁时间,在重负荷下表现出良好的性能。
(5)CAN可以点对点、一点对多点(成组)及全局广播等几种方式传送和接收数据
km(传输速率为5Kbps);最高通信速率可达1Mbps(传输距离为40m)。(7)CAN上的节点数实际可达110个。(8)CAN数据链路层采用短帧结构,每一帧为8个字节,易于纠错。
可满足通常工业领域中控制命令、工作状态及测试数据的一般要求,同时,8个字节不会占用总线时间过长,从而保证了通信的实时性
都有CRC校验及其它检错措施,有效地降低了数据的错误率。(10)CAN节点在错误严重的情况下,具有自动关闭的功能,使总线上其它节点不受影响。(11)信号调制解调方式采用NBZ(非归零)编码解码方式,并且采用插入填充位(位填充)技术
CAN协议支持用于通信的4种不同的帧类型:
CAN标准数据帧包含44到108位,而CAN扩展数据帧包含64到128位,另外,多达23个填充位可以插入到一个标准数据帧中,多达28个填充位可以插入到扩展数据帧中,这要根据数据流的代码来定。标准数据帧的最大长度为131位,扩展数据帧的最大长度为156位
数据帧包含如下内容
CAN总线所具有的卓越性能、极高的可靠性,设计独特,特别适合工业设备测控单元相连。因此,备受工业界的重视,并已被公认为工业界最有前途的现场总线之一
LF240x为第一个具有片上CAN控制模块的DSP芯片,给用户设计分布式或网络化运动控制系统提供了方便。CAN控制器是一个16位的外设模块,具有以下特性:1完全支持CAN2.0B协议。2提供6个邮箱给对象,其数据长度为0-8个字节。器
4可编程波特率。5可编程中断配置。6可编程的CAN总线唤醒功能。7自动回复远程请求。8当发送出现错误或仲裁丢失数据时能自动重发。9总线错误诊断功能。10自测试模式。11两引脚通信,即CANTX和CANRX
CAN控制器结构框图
邮箱
邮箱配置
CAN总线控制寄存器CAN总线总共有15个控制寄存器,这些寄存器控制着CAN的位定时器、邮箱的发送和接收使能、错误状态及CAN的中断等
邮箱方向/使能寄存器
249.5CAN总线状态寄存器
CAN总线的中断下列事件能引起中断:
CAN中断屏蔽寄存器
初始化邮箱中的寄存器
位配置寄存器的初始化
用1.CAN控制器的操作步骤CAN控制器的操作分成以下三大步:1.初始化CAN控制器2.信息的发送3.信息的接收
309.8.2CAN控制器扩展硬件接口CAN控制器扩展硬件接口如下图所示,DSP需要通过一个CAN收发器连接到CAN总线上。DSP片内CAN控制器模块CAN收发器芯片CAN总线CANTXCANRXCAN控制器扩展硬件接口框图
PCA82C250芯片
CAN程序实例1、CAN模块发送一个远程帧请求
CAN模块自动应答一个远程帧请求
声明在程序中需要用到的函数49//中断屏蔽子程序//中断使能子程序2.C语言程序#include"f2407_c.h"intCAN_FLAG;voidsytem_init();void CANMBX_ISR();void CAN_INIT(
CAN用户标志,//CAN_FLAG=01表示接收到数据//CAN初始化程序//中断使能//MBX3请求发送//等待发送应答(tem_init();CAN_FLAG=0X00;CAN_INIT();enable();for(;;){*TCR=0X20;while(*TCR&0X2000==0)continue
/CDR=1,数据改变请求//邮箱=1,CDR=0,ABO=1,STM=1//ME2=ME3=1,MBX2接收,MBX3发送*TCR=0X2000;while(CAN_FLAG==0)continue;CAN_FLAG=0;*MDER=0X0000;*MCR=0X0140;*MBX3A=*MBX2A+1;*MBX3B=*MBX2B+1;*MBX3C=*MBX2C+1;*MBX3D=*MBX2D+1;*MCR=0X04C0;*MDER=0X04C;}}
系统初始化子程序voidsytem_inM"M"F");*IMR=0x0010;*IFR=0xFFFWDCR=0xE8;}
void CAN_INIT(){*MCRB=*MCRB|0X0C0;*CAN_IFR=0XFFFF;*LAM1_H=0X7FFF;*LAM1_L=0XFFFF;*MCR=0X1040;//设置IOPC6、IOPC7为CANRX,CANTX//清所有CAN中断标志//设置邮箱2、3的屏蔽ID寄存器// 0则ID必须匹配//CCR=1改变配置请求while(*==0)continue;//当CCE=1时即可配置BCR2,BCR1寄存器*BCR2=0X01;*BCR1=0X033;*MCR=*MCR&0XEFFF;//波特率预分频寄存器//波特率设置为1M//CCR=0改变配置结束请求while(*!=0)continue;//只有当CEE=0时,BCR2,BCR1寄存器配置成功//不使能邮箱,邮箱2设为接收方式//CDR=1,数据区改变请求//设置邮箱2的控制字及ID,IDE=0,*MDER=0X040;*MCR=0X0143;*MSGID2H=0X2447;AME=0,//AAM=0,标准方式为MSGID2H[12-2]
DCL=8,RTR==0,DCL=8//邮箱3信息初始化//DBO=1,ABO=1,STM=1设置为自测试模式//ME3=1,MBX3发送,ME2=1接收//中断MBX3不使能,MBX2使能,低中断优先级//清全部中断标志*MSGID2L=0XFFFF;*MSGCTRL2=0X08;*MBX2A=0X0000;*MBX2B=0X0000;*MBX2C=0X0000;*MBX2D=0X0000;*MSGID3H=0X2447;*MSGID3L=0XFFFF;*MSGCTRL3=0X08;*MBX3A=0X2211;*MBX3B=0X4433;*MBX3C=0X6655;*MBX3D=0X8877;*MCR=0X04C0;*MDER=0X4C;*CAN_IMR=0XF7FF;*CAN_IFR=0XFFFF;}
switch(*PIVR){case64:CANMBX_ISR();//邮箱2接受到相应信息则进入中断服务子程序break;}}//邮箱2接收中断服务子程序//复位RMP2和MIF2//置用户接收标志//假中断程序void CANMBX_ISR(){*RCR=0X040;CAN_FLAG=1
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}