随着CAN2.0 网络的发展,CAN2.0 总线的节点在持续增加,并且许多CAN2.0
设备通常用网关连接起来,因此整个CAN2.0 总线中的报文数据量急剧增加。除
了应用程序产生报文数据外,网络管理功能和诊断报文数据也被引入进来。
需要更强的过滤机制来处理各种类型的报文数据。此外,应用
层的程序需要更多CPU 处理时间,所以报文数据接收所需的
实时响应负载需要减缓。
接收缓冲区的方案允许CPU 花较长时间处理应用层数据,但不
能丢失其他报文数据。
芯片CAN2.0 外设只有CAN 控制器,还需要外挂符合ISO 11898-1 认证的收发
器才能接入网络。
CAN 网拓扑结构
1、CAN2.0 工作模式
CAN2.0 外设有3 个主要的工作模式:初始化、正常和睡眠模式。
1.1 初始化工作模式
需要对CAN 总线通信参数修改调参之前,CAN 必须进入初始化工作模式。实
现该模式的方式如下:通过软件设置MCR 寄存器中的第零位(INRQ)并等待
硬件通过设置MSR 寄存器中的第零位(INAK)确认请求,若要退出初始化工
作模式,软件清除MCR 寄存器第零位(INRQ)。MSR 寄存器第零位(INAK)
被硬件清零,CAN 就离开初始化模式。
注:当FMR 寄存器中的第零位(FINIT)为HIGH 时,报文数据的接收将被禁止
1.2 正常工作模式
在CAN 外设的参数确定后,就可以进入正常工作模式通讯。通过清除MCR 寄
存器中的第零位(INRQ)发出进入正常模式的请求。当与CAN2.0 总线上的数据传
输同步时,CAN 模块外设进入正常工作模式并准备好参与总线相应的收发工作。
这是通过等待11 个连续‘1’序列的出现来完成的,也就是总线空闲状态标志。
硬件通过清除MSR 寄存器中的第零位(INAK)来确认切换到正常工作模式。
1.3 睡眠模式
睡眠工作模式下CAN 的时钟停止,CAN 处于一种极低功耗状态。通过软件请求,
在MCR 寄存器中设置第一位(SLEEP)可以进入此模式。此时CAN 的时钟会
停止,但是依然可以收发邮箱缓冲区,这个时钟停止与控制RCC 中的CANEN
位是不同的。在CAN 总线活动检测中,如果MCR 寄存器中第五位(AWUM)
被设置,硬件通过清除第一位(SLEEP)自动执行唤醒操作。如果AWUM 位清
零,软件必须在唤醒中断发生时清零SLEEP 位,才能唤醒。而且睡眠模式有两
种确认模式:第一种是使用MSR 寄存器中的SLAK 位来确认;第二种是首先置
位SLKIE,然后通过MSR 寄存器的CLAKI 位来确认。
注:如果唤醒中断被允许(IER 寄存器的第十六位WKUIE 为’HIGH’),那么一旦检测到CAN 总线活动就
会有唤醒中断信号,而不管硬件是否会自动唤醒CAN2.0 外设。
注:ACK = 硬件响应睡眠或初始化请求,而对MSR 寄存器的INAK 或SLAK 位置高的状态;
SYNC = CAN2.0 外设等待CAN 总线变为空闲的状态
|