2 、C8051F040的CAN控制器结构

F040的所有CAN协议功能都由独立的CAN控制器而不是由51处理器来完成。因此,CAN通信占用CPU带宽很小,51处理器只需要通过特殊功能寄存器(SFR)配置CAN控制器,数据过滤器就可以了。

2.1 CAN控制器各部分功能

CAN Core:CAN协议控制器和发送/接收转换寄存器;

Message RAM:存储Message Objects和标志码,CAN控制器共有32个Message Object可供配置来用于发送或接收数据;

Registers:用于控制和配置C_CAN模块的所有寄存器;

Message Handler:控制数据在CAN Core的接收/发送转换寄存器和Message Object之间的传输,以及中断的产生。

2.2 CAN寄存器分类

CAN寄存器可分为以下4类:

(1)CAN控制器协议寄存器:用于CAN控制、中断、错误控制、总线状态控制和测试模块;

(2)信息目标(Message Object)接口寄存器:配置32个信息目标(Msg Obj),从目标接收和发送数据。8051处理器通过他来读写CAN Message RAM;

(3)信息处理寄存器:只读寄存器。为51CPU提供信息目标的状态,如信息有效标志,发送请求状态,新数据标志和中断标志;

(4)C8051处理器特殊功能寄存器(SFR):C8051处理器控制的5个寄存器,直接读写CAN协议寄存器,通过CAN数据寄存器(CAN0DATH和CAN0DATL)和CAN地址寄存器(CAN0ADR)间接读写其他CAN控制器。

3、 CAN节点的硬件设计

设计采用的接口芯片使用TI公司的3.3VCAN收发器SN65HVD230,他与PCA82C250的引脚兼容。SN65HVD230有3种工作模式:高速,倾斜和低功耗模式,由Rs脚的连接方式来确定。由于F040自带了CAN控制器,外围电路极为简洁。

4 、CAN通讯软件设计

为避免51 CPU读写Message RAM与CAN 信息收发之间产生冲突,CPU不直接读写Message Object,而是通过专门的寄存器(IFx Interface Registers)来配置信息目标。

一个完整的信息目标的结构如表1所示。

CAN通讯协议的最大特点之一就是废除了传统的站地址编码,而使用信息块标志码。ID28-0,Xtd和Dir用来定义信息标志码,以及定义即将发送数据帧的类型(远程帧或标准帧),并且与Mask28-0,MXtd和Mdir一起用来作为将要接收数据帧的过滤器。一个已接收到的信息被放在有效的(MsgVal=1)、具有匹配标志码的Message Object里。只有当Xtd=1时,远程帧才被放入Message Object,Xtd=0时,标准帧被放入Message Object。当多于一个的有效Message object与收到的信息匹配,则该条信息被放入号码最小的Message object里。Data0-Data7是8个数据字节。CAN通讯初始化和法数据帧的软件流程如图4所示。