完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
查阅了很多资料没有查阅到关于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 寄存器 未完待续,如有朋友看到这篇文章有什么疑问欢迎留言交流 |
|
|
|
只有小组成员才能发言,加入小组>>
3320 浏览 9 评论
3000 浏览 16 评论
3496 浏览 1 评论
9069 浏览 16 评论
4089 浏览 18 评论
1190浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2339浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 12:16 , Processed in 1.206083 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号