CAN2.0A 是CAN协议的PART A部分,此部分定义了11bit的标识区 。
CAN2.0B 是CAN协议的扩展部分,也叫PART B,定义了29bit的标识区,其它部分与CAN2.0A一样。
CANOpen是基于CAN协议的应用层协议,可以理解为用户层,即规定了用户、软件、网络终端等之间用来进行信息交换的约定!而CAN定义了物理层和数据链路层,而CANOpen与DeviceNet一样,只定义了OSI模型的第七层。
CAN2.0A/B是CAN标准的两个部分,只要CAN芯片支持CAN2.0B,则都可以兼容通讯,而CANOpen是上层协议,建立在CAN的基础上的。
在编写CAN总线通讯程序时,主要编写函数由初始化函数,发送函数和接收函数组成。
其中发送函数一般写为主动发送函数,接收函数一般采用中断接收。下面就简单介绍一下三个函数的编写。
1 SJA1000寄存器初始化配置顺序
(1)进入复位模式,进行配置
(2)配置时钟分频寄存器,决定Peil模式还是Basic模式。
(3)配置总线定时寄存器,确定波特率。
(4)配置中断使能寄存器,决定使用那几个中断
(5)配置输出控制寄存器
(6)配置验收码和屏蔽码,决定接收哪一类节点的数据
(7)退出复位模式,进入正常工作模式。
2 发送数据顺序
(1)查询状态寄存器,判断是否正在接收,是否正在发送,是否数据缓冲区被锁。
(2)配置发送缓冲区。
(3)配置命令寄存器,启动发送。
3 接收数据顺序
(1)采用中断接收,关CPU中断。
(2)判断是不是接收中断。
(3)判断是远程帧还是数据帧
(4)读取数据
(5)开中断
|