硬件设计好了,在进行软件编程之前我们最好对CAN总线的协议有个了解。 一 报文传送由以下四种帧类型
1. 数据帧: 数据帧携带数据从发送器至接收器。
2. 远程帧: 总线单元发出远程帧,请求发送具有同一识别符的数据帧。 3. 错误帧: 任何单元检测到一总线错误时就发送错误帧。
4. 超载帧: 用来在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
二 帧格式介绍
1. 数据帧 数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结束。
2. 远程帧 远程帧由6个不同的位场组成,即帧起始、仲裁场、控制场、CRC场、应答场、帧结束。
3. 错误帧 错误帧由两个不同的场组成。第一个场是错误标志,用做为不同站提供错误标志的叠加;第二个场是错误界定符。
4. 超载帧 超载帧包括两个位场:超载标志和超载界定符。 三 帧格式中重点部分介绍
1. 帧起始 帧起始标志数据帧和远程帧的起始,由一个单独的“显性”位组成。由控制芯片完成。
2. 仲裁场 仲裁场包括标识符和远程发送请求位(RTR)。 对于CAN2.0A标准,标识符的长度为11位。RTR位在数据帧中必须是显性位,而在远程帧必须为隐性位。 对于CAN2.0,标准格式和扩展格式的仲裁场不同。在标准格式中,仲裁场由11位标识符和远程发送请求位组成。在扩展格式中,仲裁场由29位标识符和替代远程请求位(SRR) 、标志位(IDE)和远程发送请求位组成。 仲裁场的作用之一是说明数据帧或远程帧发送目的地;之二是指出数据帧或远程帧。仲裁场的数据由软件编程配置SJA1000完成。
3. 控制场 控制场由6个位组成,说明数据帧中有效数据的长度。控制场的数据由软件编程配置SJA1000完成。
4. 数据场 数据场由数据帧中的发送数据组成。它可以为0~8个字节。数据场的数据由软件编程配置SJA1000完成。
5. CRC场 CRC场包括CRC序列,这部分由SJA1000控制芯片完成。
6. 应答场 应答场长度为两个位,包括应答间隙和应答界定符。由SJA1000控制芯片自动完成。
7. 帧结束 每一个数据帧和远程帧均由一标志序列界定,这个标志序列由7个“隐性”位组成。这部分由SJA1000控制芯片自动完成。 总之,仲裁场、控制场、数据场由软件编程配置SJA1000完成;帧起始、CRC场、应答场、帧结束由CAN总线控制芯片SJA1000自动完成。 其中要重点理解的就是数据帧和远程帧以及组成帧的重要部分。所以初学者首先把这两种帧格式掌握了,学习CAN总线应该就可以入门了
PDF 文件使用 \"pdfFactory\" 试用版本创建 www.fineprint.cn
SJA1000重要的寄存器
要编写CAN总线通讯程序,只要了解CAN总线协议,熟悉SJA1000寄存器的配置,就可以完成CAN总线通讯。所以我们首先必须要详细了解SJA1000的寄存器。
1.SJA1000 的两个工作模式(Basic 和Peli)所使用的寄存器数目不同,功能也不尽相同。Basic CAN 有从0-31 共32 个寄存器可用,Peli CAN 有从0-127 共128 个寄存器可用。要实现CAN通讯,主要就是怎么配置这些寄存器。 2.要掌握的重要寄存器:模式寄存器;命令寄存器;状态寄存器;中断寄存器;中断使能寄存器;总线定时器0,总线定时器1;输出控制寄存器;时钟分频寄存器;屏蔽寄存器0-3;验收代码寄存器0-3。
3.模式寄存器的作用:控制SJA1000的运行在什么模式下。包括:睡眠模式;自检测模式;复位模式;只听模式。
4.命令寄存器的作用:启动发送或自发送;释放接收寄存器;中止发送
5.状态寄存器的作用:指示SJA1000的状态,以判断是否可以进行下一步操作。
6.中断寄存器的作用:当发生中断后,读其值可以判断是什么原因引起的中断。
7.中断使能寄存器的作用:打开相应的中断。
8.总线定时器的作用:设置通讯的速率。
9.输出控制寄存器的作用:控制输出模式
10.时钟分频寄存器的作用:控制CAN总线采用那种模式。
11.验收代码寄存器和屏蔽寄存的作用:决定接收哪类标志码的数据。注意验收滤波器的设置。
PDF 文件使用 \"pdfFactory\" 试用版本创建 www.fineprint.cn
CAN总线硬件调试及软件编程
在编写CAN总线通讯程序时,主要编写函数由初始化函数,发送函数和接收函数组成。 其中发送函数一般写为主动发送函数,接收函数一般采用中断接收。下面就简单介绍一下三个函数的编写。 1 SJA1000寄存器初始化配置顺序 (1)进入复位模式,进行配置
(2)配置时钟分频寄存器,决定Peil模式还是Basic模式。 (3)配置总线定时寄存器,确定波特率。
(4)配置中断使能寄存器,决定使用那几个中断 (5)配置输出控制寄存器
(6)配置验收码和屏蔽码,决定接收哪一类节点的数据 (7)退出复位模式,进入正常工作模式。 2 发送数据顺序
(1)查询状态寄存器,判断是否正在接收,是否正在发送,是否数据缓冲区被锁。
(2)配置发送缓冲区。
(3)配置命令寄存器,启动发送。 3 接收数据顺序
(1)采用中断接收,关CPU中断。 (2)判断是不是接收中断。 (3)判断是远程帧还是数据帧 (4)读取数据 (5)开中断
PDF 文件使用 \"pdfFactory\" 试用版本创建 www.fineprint.cn
因篇幅问题不能全部显示,请点此查看更多更全内容