CAN开发笔记(TI开发者推荐笔记)

您所在的位置:网站首页 can连续帧怎么开发生成代码 CAN开发笔记(TI开发者推荐笔记)

CAN开发笔记(TI开发者推荐笔记)

2024-06-18 02:32| 来源: 网络整理| 查看: 265

查阅了很多资料没有查阅到关于TI芯片CAN驱动开发的介绍,希望通过本文能给做TI芯片CAN驱动的开发者有一点参考意义,

由下图所示是CAN模块初始化流程图

首先要开始初始化,设置CAN位时间,然后配置message objects, 完成初始化。

1.开始初始化

首先要控制DCAN_CTL 寄存器,该寄存器是CAN模块的总控制器,很多配置通过配置DCAN_CTL 寄存器相应的位才能对相应的CAN配置寄存器继续配置,里面主要有对DMA,中断,配置改变使能,初始化模式等功能的设置功能。

 在设置初始化模式前先设置一下SWR位对CAN模块进行重置。

在这里我们首先使用它的初始化模式 将该模式位设置为初始化模式

 设置完初始化模式位后对CCE位进行设置,只有设置了CCE位后才是对配置寄存器进行配置

配置完CCE位后通过读取INIT初始模块位来判断是否已经进入了初始化模式,接着进行下一步操作。

2. 配置CAN位时间

在告诉模块我们已经要进行初始化配置后我们首先配置CAN的位时间,而CAN的位时间由下面的DCAN_BTR寄存器进行配置。

DCAN_BTR寄存器主要对CAN模块的通信速率进行设置

CAN 位时间可编程在8到25个时间量子之间

CAN模块的时间量子可被编程在1到1024个CAN_CLK时间周期的范围

 

BRPE和BRP位区域将作为时钟分频器进行配置。配置范围 1~1024这个范围。

SJW是同步跳转时间配置范围(0~3)

TSEG2和TSEG1分别是采样之后的缓冲时间和采样之前的缓冲时间 TSEG2配置范围(0~7)TSEG1配置范围(1~15)

时钟分频器是调整CAN量子时间qt。一个CAN量子时间Qt与CAN时钟时间成正比,与时钟分频器的数值能反比。

而CAN位时间=同步段时间+SJW+TSEG2+TSEG1 CAN位时间范围(8~25个量子时间)同步段时间 = 1个量子时间

3.配置对象邮箱

5728芯片中有64个对象邮箱。这些对象邮箱将用于数据的发送和接收。发送数据时我们只要将一个完整的CAN数据帧(包括 ID 数据 等数据)放入某个对象邮箱中。CAN控制器将自动将你这个数据帧进行发送。如果发送成功后将置位发送特定位来标记已经发送成功。接收数据我们需要提前配置好对象邮箱里面的ID和掩码信息这些将作为过滤器过滤CAN总线发送的数据。对符合识别信息的数据帧进行接收,并将置位特定位来标记已经接收成功。

3.1配置对象邮箱

配置DCAN对象邮箱将通过下图所示的寄存器组进行配置,分别有IF1寄存器组,还有IF2寄存器组其功能一样。CMD寄存器

 DCAN_IF1CMD 寄存器

下面是CMD寄存器用于作为配置对象邮箱的控制器寄存器,这个寄存器的作用包含了设置对象邮箱的方向,在对象邮箱的方向的前提下对应了掩码(mask), 仲裁码,访问控制位,中断清零位,访问请求位,数据位dataA和dataB,线路忙(busy),DMA控制,要和那个对象邮箱建立联系。

0~7bit位MESSAGE_NUMBER主要用于指定要跟64个对象邮箱建立联系。这样就可以对某个对象邮箱进行读写数据了。

 DCAN_IF1MCTL 寄存器

未完待续,如有朋友看到这篇文章有什么疑问欢迎留言交流

 

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3