第 11 章: can 控制器模块
DESCRIPTION
第 11 章: CAN 控制器模块. 11.1 CAN 控制器模块概述 11.2 邮箱 11.3 CAN 控制寄存器 11.4 CAN 控制器的操作. 11 .1 CAN 控制器模块概述. 1 、 CAN 技术简介 CAN总线的出现, 使控制系统的网络化成为可能 ,是国际公认的一种 现场总线协议 。 CAN (Controller Area Network)总线是德国Bosch公司为解决现代汽车中众多的控制单元与测试仪器之间的数据交换而开发的一种 串行数据通信协议 。 - PowerPoint PPT PresentationTRANSCRIPT
第 11 章: CAN 控制器模块
11.1 CAN 控制器模块概述
11.2 邮箱
11.3 CAN 控制寄存器
11.4 CAN 控制器的操作
11.1 CAN控制器模块概述 1、 CAN 技术简介
CAN总线的出现,使控制系统的网络化成为可能,是国际公认的一种
现场总线协议。
CAN ( Controller Area Network)总线是德国 Bosch公司为解决现代
汽车中众多的控制单元与测试仪器之间的数据交换而开发的一种串
行数据通信协议。
CAN总线问世以来,以高效率、低成本和快速性等特点迅速在汽车电
子、测量仪器、控制系统得到广泛的应用。
CAN协议一般用来管理控制器、传感器、执行器和人机接口之间的数
据传输;使用双绞线,给用户提供了一种低成本的系统连网方案。
由于协议本身的优点,总线上的数据绝对不会发生冲突、数据遗失等现
象,使得 CAN广泛用于环境恶劣的工业现场和自动化生产线。
11.1 CAN控制器模块概述CAN协议对于许多领域的分布式测控是很有吸引力的,目前 CAN已成
为 IS011898标准,其特性如下:
(1)结构简单,只有两根线与外部相连,且内部含有错误探测和管理
模块。
(2)CAN是一种有效支持分布式控制和实时控制的串行通信网络。
(3)CAN可以多主模式工作,网络上任意一个节点均可在任意时刻
主动地向网络上的其它节点发送信息,而不分主从,节点之间有优
先级之分,因而通信方式灵活。
(4)CAN采用非破坏性位仲裁技术,优先级发送,可以大大节省总
线冲突仲裁时间,在重负荷下表现出良好的性能。
(5)CAN可以点对点、一点对多点 (成组 )及全局广播等几种方式传
送和接收数据。
11.1 CAN控制器模块概述 (6)CAN的直接通信距离最远可达 10km(传输速率为 5Kbps);最高通信速率可达 1Mbps(传输距离为 40m)。
(7)CAN上的节点数实际可达 110个。
(8)CAN数据链路层采用短帧结构,每一帧为 8个字节,易于纠错。可满足通常工业领域中控制命令、工作状态及测试数据的一般要求,同时, 8个字节不会占用总线时间过长,从而保证了通信的实时性。
(9)CAN每帧信息都有 CRC校验及其它检错措施,有效地降低了数据的错误率。
(10)CAN节点在错误严重的情况下,具有自动关闭的功能,使总线上其它节点不受影响。
(11)信号调制解调方式采用 NBZ(非归零 )编码解码方式,并且采用插入填充位 (位填充 )技术。
11.1 CAN控制器模块概述 CAN协议支持用于通信的 4种不同的帧类型: 数据帧:从发送节点到接收节点传送数据。 远程帧:主要用于请求信息,当节点 A向节点 B发送一个远程帧,如果节点 B中的数据帧信息与节点 A有相同的标识符,节点 B将做出应答,并发送相应的数据帧到总线上。
错误帧:在总线检测错误时,任意一个节点所发送的帧。
过载帧:在前后两个数据帧或远程帧之间提供一个额外的延时。
11.1 CAN控制器模块概述
数据帧包含如下内容( 1)帧的起始; ( 2)包含标志符和被发送信息类型的仲裁
域;
( 3)包含数据位数的控制域;( 4)多达 8个字节的数据域;
( 5)循环冗余检查( CRC)位; ( 6)应答位; ( 7)帧结束位
CAN 标准数据桢和扩展数据桢
包含位数 可填充位 最大长度
标准桢 44~ 108 23 131
扩展桢 64~ 128 28 156
1 12或32 6 0~8bytes 16 2 7
起始位 仲裁域 控制位 数据域 CRC位 应答 结束
11.1 CAN控制器模块概述 2、 LF240x 系列 CAN 控制器概述LF240x为第一个具有片上 CAN控制模块的 DSP芯片,给用户设计分布式或网络化运动控制系统提供了方便。
CAN控制器是一个 16位的外设模块,具有以下特性:
( 1)完全支持 CAN2.0B协议;
( 2)提供 6个邮箱对象,其数据长度为 0-8个字节。
( 3)针对邮箱 0、 1和 2、 3有局域接收屏蔽寄存器。
( 4)可编程波特率; ★( 5)可编程中断配置;
( 6)可编程的 CAN总线唤醒功能; ★ ( 7)自动回复远程请求;
( 8)当发送出现错误或仲裁丢失数据时能自动重发;
( 9)总线错误诊断功能; ★ ( 10)自测试模式;
( 11)两引脚通信,即 CANTX和 CANRX。
11.1 CAN控制器模块概述 CAN 控制器结构框图
CPU
控制/状态寄存器中断逻辑 发送器
CAN模块
CPU接口/存储器管理单元
邮箱0
邮箱1
邮箱2
邮箱3
邮箱4
邮箱5
RAM 48×16
RRT/RT/R
TT
CAN核
ID数据
临时接收缓冲
接收滤波器控制逻辑
CAN
传送芯片
CAN
总线
240xA
CANRX
CANTX
匹配ID
控制总线
11.1 CAN控制器模块概述 CAN 控制器模块的内存空间分配
CAN
CAN寄存器
保留
邮箱0
邮箱5
邮箱4
邮箱3
邮箱2
邮箱1
MDER
保留LAM1_HLAM0_HCAN_IFR
GSRBCR2MCRTCR
LAM1_LLAM0_L
CAN_IMRCECESR
BCR1RCR
MSG ID0L
MBX0DMBX0B保留
MSG ID0H
MBX0CMBX0A
MSG CTRL0
MSG ID5L
MBX5DMBX5B保留
MSG ID5H
MBX5CMBX5A
MSG CTRL5
240xA数据空间0000
7100
7230
FFFF
7100
710F
7200
7230
.
.
.
11.2 邮箱 1、 CAN 信息对象CAN 允许通过数据桢来发送、接收和保存信息。 LF2407的 CAN 控制
器支持两种不同的帧格式,即标准格式和扩展格式。
SOF :数据帧的起始,表示数据桢从此处开始 Identifier( 标志符 ) :
信息优先:当两个或更多节点竞争总线时,决定了信息的优先级; 信息过滤:决定一个传输的信息能否被 CAN 模块收到。
11.2 邮箱
RTR :远程传输请求位。用来区分来自远程帧的数据桢 SRR :替代远程请求位。占用了标准数据桢的 RTR 位 IDE :标准扩展位。区分标准和扩展帧 r0和 r1 :保留 DLC :数据长度代码,表示在数据桢中字节的个数 (0~ 8位 )
Data: 4个 16 位字用于保存一个 CAN 信息的 8 字节数据域 CRC :包含一个 16 位循环冗余检查计算,绝大部分信息均进行循
环冗余检查 ACK :数据应答 EOF :数据桢的结束
11.2 邮箱 2、 CAN 邮箱寄存器 邮箱标识符寄存器
MSGIDnH :标识符扩展位;接受屏蔽使能位,只与接收邮箱有关;自动应答模式位,只与配置为发送的 2、 3 邮箱有关;标识符,扩展帧高 13 位、标准帧 11 位。
MSGIDnL :标识符,扩展帧低 16 位。
邮箱控制寄存器( MSGCTRLn ) RTR :远程发送请求位。 DLC[3~ 0] :数据长度选择位,只对发送邮箱有效。
11.3 CAN控制寄存器 1 、邮箱方向 / 使能控制寄存器( MDER ):决定邮箱的使
能位( ME )和邮箱 2、 3 的方向。 MD3/2 :邮箱 3/2 发送 / 接收配置位,上电时复位为 0 ; MEn :邮箱使能位。初始化时必须禁止使能位。
2 、发送控制寄存器( TCR ):控制信息的发送,发送请求设置和复位位( TRS和 TRR )可进行独立写操作,只对发送邮箱有效。 TA5~ 2 :发送应答位; ★ AA5~ 2 :忽略应答位; TRS5~ 2 :邮箱发送请求位; ★ TRR5~ 2 :发送请求复位位。
3 、接收控制寄存器( RCR ):控制信息的接收和远程帧的处理,仅对接收邮箱有效。 RFP3~ 0 :远程请求悬挂位; ★ RLM3~ 0 :接收信息丢失标志位; RMP3~ 0 :接收信息悬挂位; ★ OPC3~ 0 :信息覆盖保护使能位。
11.3 CAN控制寄存器 4 、主控制寄存器( MCR ):用于控制 CAN 内核模块
的属性 SUSP :仿真挂起操作选择位,对接收邮箱无效; CCR :改变配置请求位; PDR :低功耗模式请求位; DBO :数据字节次序; WUBA :总线唤醒伟; CDR :数据域改变请求位; ABO :自动恢复总线位; STM :自测试模式使能位; MBNR :邮箱 2、 3 选择位,对它们的数据域进行写操作及配
置远程帧悬挂。
11.3 CAN控制寄存器 5 、位配置寄存器( BCR1和 BCR2 ):使用合适的网
络定时参数配置 CAN 节点。只有在 CAN 处于复位模式下( CCR=1 ) ,才能对位定时器进行配置。
6 、错误状态寄存器( ESR ):用于显示在操作期间发生的错误,系统只保留第一个错误,后续错误不会改变寄存器的状态。
7 、全局状态寄存器( GSR ):反映 CAN 控制器的一些功能状态。
8 、错误计数寄存器( CEC ):包含两个错误计数器,即接收( REC )和发送( TEC ),他们的值都可以通过 CPU 接口从 CEC 读取。
11.3 CAN控制寄存器 9、 CAN 中断逻辑从 CAN 外设模块到外设中断扩展 (PIE) 控制有两个中断请求:邮箱中
断和错误中断。下列 CAN 信息处理事件会产生一个中断: 邮箱中断:成功接收或发送了一个信息后,该事件会产生一个邮箱中断 中止应答中断:一个发送信息操作被中止,该事件会产生一个错误中断 写拒绝中断: CPU 试图写访问一个邮箱,但是被拒绝,就会产生一个错误中断 唤醒中断: CAN 唤醒后,产生该中断。当时钟没有工作时,该事件会产生一个
错误中断 接收信息丢失中断:一个旧信息被新信息所覆盖,该事件会产生一个错误中断 总线关中断: CAN 模块进入总线关状态,该事件会产生一个错误中断 消极错误中断: CAN 模块进入消极错误模式,该事件会产生一个错误中断 警告级别中断:一个或两个错误计数器的值大于或等于 96 ,该事件会产生一个
错误中断
注意:当产生 CAN 中断时,用户应该检查 CAN 中断标志寄存器( CAN_IFR
)的所有位,确定是否有 1 个或多个标志位被置位。如果有 1 或多个标志位被置位,则执行相应的中断服务程序( ISR )。即使 CAN_IFR 有多个标志位被置位,也仅产生一次核心中断。
11.3 CAN控制寄存器 CAN 中断标志寄存器( CAN_IFR )
MIFx( x=5~0 ):邮箱 5~ 0 中断标志位; RMLIF :接收信息丢失中断标志位; AAIF :中止应答中断标志位; WDIF :写拒绝中断标志位; WUIF :唤醒中断标志位; BOIF :总线关闭中断标志位; EPIF :消极错误中断标志位; WLIF :错误警告中断标志位
CAN 中断屏蔽寄存器( CAN_IMR ):设置同CAN_IFR类似,但是中断优先级选择位 MIL 和不一样。如果一个屏蔽位被置位,则 PIE 控制的相应中断请求被使能。
11.3 CAN控制寄存器 局部接收中断屏蔽高 / 低位寄存器 n( LAMn_H/L )
CAN 控制器在接收信息时,先将要接收的信息的标识符与相应接收邮箱的标识符进行比较,只有标识符相同的信息才能被接收。 CAN 控制器的接收滤波器使得接收邮箱可以忽略更多的位来接收信息。 LAMI :局部接收屏蔽标识符扩充位。 LAMn[28~ 16] :高 13 位局部接收屏蔽位。 LAMn[15~ 0] :低 16 位局部接收屏蔽位。
11.4 CAN控制器的操作 CAN 控制器的操作分成以下三大步
1.初始化 CAN 控制器
2.信息的发送
3.信息的接收
11.4 CAN控制器的操作 1.初始化 CAN 控制
器 初始化或重新配置位定时器
初始化邮箱
进入改变配置模式CCR=1
CCE=1?
CCE=0?
设置BCR1和BCR2寄存器
进入正常工作模式CCR=0
N
Y
N
Y
禁止邮箱ME=0
改变数据域请求CDR=1
配置邮箱的标识符、控制和数据区
进入正常工作模式CDR=0
使能邮箱ME=1
11.4 CAN控制器的操作 2.信息的发送CAN 控制器的发送邮箱
4 和邮箱 5 及被配置为发送方式的邮箱 2
和邮箱 3 。在写数据到发送邮箱的数据区后,如果相应的发送请求位使能,则信息帧被发送到 CAN 总线上。
初始化发送邮箱ME=0
使能发送邮箱(ME =1)如邮箱为2或3则要设置其为发送方式
设置发送请求位TRS=1
复位发送应答位和发送中断标志位TA=1
CCE=0?N
Y
11.4 CAN控制器的操作 3.信息的接收CAN 控制器的接收邮箱
0 和邮箱 1 及被配置为接收方式的邮箱 2
和邮箱 3 。接收邮箱初始化时要设置其标识符及标识符相关的局部屏蔽寄存器( LAM )。
设置局部接收寄存器LAM
复位接收悬挂位和接收中断标志位RMP=1
RMP=1?或MIFn=1?N
Y
设置接收邮箱的标识符ME=0
使能发送邮箱(ME =1)如邮箱为2或3则要设置其为接收方式