CAN总线软件编程

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)开中断

猜你喜欢

转载自www.cnblogs.com/zidingliu/p/12192613.html