首页电子与通信技术信息处理技术数字信号处理器DSP原理与应用 09 第九章 CAN控制器模块.pptx

09 第九章 CAN控制器模块.pptx

页数:56页文件大小:21.18 MB来源: 数字信号处理器DSP原理与应用ppt课件

本课件说明CAN现场总线的技术特点与帧格式,介绍LF240x片内CAN控制器模块的结构、邮箱的组成与收发流程,讲解控制寄存器、状态寄存器与中断的配置方法,并给出CAN模块波特率计算与应用实例。

第9章CAN控制器封面,标示本章主题与主要内容框架
第9章CAN控制器目录,CAN总线技术概述2.CAN总线控制器模块概述3.邮箱4.CAN总线控制寄存器5.CAN总线状态寄存器6.CAN总线的中断7.CAN模块的配置8.CAN控制器应用
9.1 CAN总线技术概述测控系统向着小节标题页,要点自「CAN总线问世以来」起展开
查看本课件的文字版(共 56 页,供检索与复制)

第1页:第9章CAN控制器封面

DSP原理与应用

第2页:第9章CAN控制器目录

CAN总线技术概述2.CAN总线控制器模块概述3.邮箱4.CAN总线控制寄存器5.CAN总线状态寄存器6.CAN总线的中断7.CAN模块的配置8.CAN控制器应用

第3页:9.1 CAN总线技术概述测控系统向着

网络化方向发展。CAN总线的出现,使控制系统的网络化成为可能,是国际公认的一种现场总线协议。CAN(Controller Area Network)总线是德国Bosch(奔驰)公司为解决现代汽车中众多的控制单元与测试仪器之间的数据交换开发的串行数据通信协议

第4页:CAN总线问世以来

CAN总线问世以来,以高效率、低成本和快速性等特点迅速在汽车电子、测量仪器、控制系统得到广泛的应用。CAN协议一般用来管理控制器、传感器、执行器和人机接口之间的数据传输。

由于协议本身的优点,总线上的数据绝对不会发生冲突、数据遗失等现象,使得CAN广泛用于环境恶劣的工业现场和自动化生产线

第5页:CAN总线是一种多主总线

CAN总线是一种多主总线,通信介质可以是绞线、同轴电缆或光导纤维。CAN协议用于分布式测控,已成为IS011898标准,特性如下:1结构简单,只有两根线与外部相连,且内部含有错误探测和管理模块。

2CAN是一种有效支持分布式控制和实时控制的串行通信网络

第6页:(3)CAN可以多主模式工作

(3)CAN可以多主模式工作,网络上任意一个节点均可在任意时刻主动地向网络上的其它节点发送信息,而不分主从,节点之间有优先级之分,因而通信方式灵活。(4)CAN采用非破坏性位仲裁技术,优先级发送,可以大大节省总线冲突仲裁时间,在重负荷下表现出良好的性能。

(5)CAN可以点对点、一点对多点(成组)及全局广播等几种方式传送和接收数据

第7页:(6)CAN的直接通信距离最远可达10

km(传输速率为5Kbps);最高通信速率可达1Mbps(传输距离为40m)。(7)CAN上的节点数实际可达110个。(8)CAN数据链路层采用短帧结构,每一帧为8个字节,易于纠错。

可满足通常工业领域中控制命令、工作状态及测试数据的一般要求,同时,8个字节不会占用总线时间过长,从而保证了通信的实时性

第8页:(9)CAN每帧信息

都有CRC校验及其它检错措施,有效地降低了数据的错误率。(10)CAN节点在错误严重的情况下,具有自动关闭的功能,使总线上其它节点不受影响。(11)信号调制解调方式采用NBZ(非归零)编码解码方式,并且采用插入填充位(位填充)技术

第9页:CAN协议支持用于通信的4种不同的帧类型

CAN协议支持用于通信的4种不同的帧类型:

  • 数据帧:从发送节点到接收节点传送数据。
  • 远程帧:主要用于请求信息,当节点A向节点B发送一个远程帧,如果节点B中的数据帧信息与节点A有相同的标识符,节点B将做出应答,并发送相应的数据帧到总线上。
  • 错误帧:在总线检测错误时,任意一个节点所发送的帧。
  • 过载帧:在前后两个数据帧或远程帧之间提供一个额外的延时

第10页:CAN标准数据帧包含44到108位

CAN标准数据帧包含44到108位,而CAN扩展数据帧包含64到128位,另外,多达23个填充位可以插入到一个标准数据帧中,多达28个填充位可以插入到扩展数据帧中,这要根据数据流的代码来定。标准数据帧的最大长度为131位,扩展数据帧的最大长度为156位

第11页:数据帧包含如下内容

数据帧包含如下内容

第12页:CAN总线所具有的卓越性

CAN总线所具有的卓越性能、极高的可靠性,设计独特,特别适合工业设备测控单元相连。因此,备受工业界的重视,并已被公认为工业界最有前途的现场总线之一

第13页:9.2 CAN总线控制器模块概述

LF240x为第一个具有片上CAN控制模块的DSP芯片,给用户设计分布式或网络化运动控制系统提供了方便。CAN控制器是一个16位的外设模块,具有以下特性:1完全支持CAN2.0B协议。2提供6个邮箱给对象,其数据长度为0-8个字节。器

第14页:可编程波特率

4可编程波特率。5可编程中断配置。6可编程的CAN总线唤醒功能。7自动回复远程请求。8当发送出现错误或仲裁丢失数据时能自动重发。9总线错误诊断功能。10自测试模式。11两引脚通信,即CANTX和CANRX

第15页:CAN控制器结构框图

CAN控制器结构框图

第16页:

第17页:邮箱ram、邮箱标志符等要点

邮箱

  • 邮箱ram
  • 邮箱标志符
  • 邮箱控制域寄存器
  • 信息缓冲器
  • 写访问邮箱ram

第18页:邮箱配置、CAN接收滤波器等要点

邮箱配置

  • CAN接收滤波器
  • 发送邮箱
  • 接收邮箱
  • 远程帧的处理

第19页:

第20页:

第21页:9.4 CAN总线控制寄存器

CAN总线控制寄存器CAN总线总共有15个控制寄存器,这些寄存器控制着CAN的位定时器、邮箱的发送和接收使能、错误状态及CAN的中断等

第22页:邮箱方向/使能寄存器、发送控制寄存器等要

邮箱方向/使能寄存器

  • 发送控制寄存器
  • 接收控制寄存器
  • 主控制寄存器
  • 位配置寄存器

第23页:

第24页:错误状态寄存器、全局状态寄存器等要点

249.5CAN总线状态寄存器

  • 错误状态寄存器
  • 全局状态寄存器
  • 错误计数寄存器

第25页:9.6 CAN总线的中断下列事件能引起

CAN总线的中断下列事件能引起中断:

  • 邮箱操作
  • 确认放弃
  • 写拒绝
  • 唤醒
  • 接收报文丢失
  • 总线关闭
  • 被动错误
  • 报警界限

第26页:CAN中断标志寄存器

CAN中断屏蔽寄存器

第27页:9.7 CAN模块的配置

初始化邮箱中的寄存器

第28页:位配置寄存器的初始化

位配置寄存器的初始化

第29页:8. CAN控制器应

用1.CAN控制器的操作步骤CAN控制器的操作分成以下三大步:1.初始化CAN控制器2.信息的发送3.信息的接收

第30页:DSP片内CAN控制器模块

309.8.2CAN控制器扩展硬件接口CAN控制器扩展硬件接口如下图所示,DSP需要通过一个CAN收发器连接到CAN总线上。DSP片内CAN控制器模块CAN收发器芯片CAN总线CANTXCANRXCAN控制器扩展硬件接口框图

第31页:PCA82C250芯片

PCA82C250芯片

第32页:

第33页:9.8.3 CAN程序实例1

CAN程序实例1、CAN模块发送一个远程帧请求

第34页:

第35页:

第36页:

第37页:

第38页:

第39页:

第40页:

第41页:2. CAN模块自动应答一个远程帧请求

CAN模块自动应答一个远程帧请求

第42页:

第43页:

第44页:

第45页:

第46页:

第47页:

第48页:3. CAN控制器的程序设计(C语言)

程序如下
1.建立中断向量表(汇编).ref_nothing,_c_int0,_GRIS5;声明在其他程序中定义;并在本程序中需要使用的变量或标号48;定义主向ct;复位向量B_c_int0RSVECT;中断向量1B_nothing INT1;中断向量2B_nothing INT2;中断向量3B_nothing INT3;中断向量4B_nothing INT4;中断向量5B_GRIS5INT5;中断向量6B_nothing INT6B_nothing RESERVEDB_nothing SW_INT8……B_nothing SW_INT31

第49页://引用头部文件//定义标志寄存器//

声明在程序中需要用到的函数49//中断屏蔽子程序//中断使能子程序2.C语言程序#include"f2407_c.h"intCAN_FLAG;voidsytem_init();void CANMBX_ISR();void CAN_INIT(

第50页://系统初始化程序//清

CAN用户标志,//CAN_FLAG=01表示接收到数据//CAN初始化程序//中断使能//MBX3请求发送//等待发送应答(tem_init();CAN_FLAG=0X00;CAN_INIT();enable();for(;;){*TCR=0X20;while(*TCR&0X2000==0)continue

第51页://清TA/清接收到标志//邮箱不使能/

/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;}}

第52页://开中断优先级5//清中断标志位(2)

系统初始化子程序voidsytem_inM"M"F");*IMR=0x0010;*IFR=0xFFFWDCR=0xE8;}

第53页:(3)CAN初始化子程序

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]

第54页://设置控制域,数据长度

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;}

第55页:(4)中断程序55//中断RIS5(){

switch(*PIVR){case64:CANMBX_ISR();//邮箱2接受到相应信息则进入中断服务子程序break;}}//邮箱2接收中断服务子程序//复位RMP2和MIF2//置用户接收标志//假中断程序void CANMBX_ISR(){*RCR=0X040;CAN_FLAG=1

第56页:

顶部目录