完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1. 波特率计算原理
说明:本文档主要解决基于SJA1000T 独立CAN控制器的接口卡编程时波特率设置问题. 1.1 SJA1000T CAN控制器的波特率设定原理SJA1000T是至今公认的较完美的CAN控制器,该CAN控制器的波特率由BTR0和BTR1两个寄存器的取值决定。 1.1.1 BTR0寄存器——用于CAN时钟分频和同步跳转宽度设置注释:XTAL是指SJA1000T控制器的外部连接的晶振 1.1.2 BTR1寄存器——用于设置采样次数、时间段一和时间段二 SAM决定着位采样时的次数 注释:一个CAN信号位宽 BIT_tiME= tSYNCSEG + tTSEG1 + tTSEG2 1.1.3 波特率计算举例 SJA1000T最常用的晶振为16MHz,下面以此做为默认XTAL 计算一些典型波特率取值,通过此方式希望尊敬的用户掌握如何计算符合自己需求的BTR0和BTR1取值。 例1:计算800kpbs 对应的BTR0和BTR1(了解800k时BTR0=0x00和BTR1=0x16的来历) 步骤1:对XTAL进行一次分频,获得一个8MHz的时钟,于是设置BTR0中的BRP为0即可,SJW也可以设置为0,于是BTR0为0。 步骤2:现在已经获得了8MHz的时钟,只需要一个BIT_TIME包含10个tscl即可,设置BTR1时,应该保持TSEG2不小于BTR0中的SJW的取值,也不能小于TSEG1。于是TSEG2可以取值为1;TSEG1取值为6,此时BIT_TIME按照计算方法刚好凑齐10个tscl又因为在高速CAN中SAM推荐为0,那么BTR1=0x16.采样点为80%。 于是800kpbs的常用CAN波特率就计算好了,但是需要考虑波特率越高,对晶振的误差越敏感,微小的晶振误差将会导致CAN波特率不匹配而通信失败,为了解决这个问题,可以通过调大SJW的取值来扩大CAN波特率的误差允许范围(鲁棒性),减少通信错误,提高通信可靠性。 例2:计算800kpbs波特率兼容性较好的一组BTR0和BTR1取值 当SJW设置为1,TSEG2设置为2,TSEG1设置为5,此时BTR0=0x40;BTR1=0x25.此时波特率仍为800kpbs,采样点位置在(5+1+1)/ (5+1+1+2+1)=0.7也就是70% 。 2. CAN波特率推荐值,部分场合做出一定调整提升传输可靠性下面的取值属于途正电子推荐的一些取值,当然实际情况需要根据应用现场做相应调整以达到更佳的通信效果,后续我们将推出资料详细介绍SJW是如何影响CAN报文传输。 表1 推荐CAN波特率取值
注释:上面参数仅适用于SJA1000控制器使用16MHz晶振情况,CAN波特取值均是考虑了SJA1000晶振误差时SJW取值较大计算得到,SJW取值变小可以一定程度提升CAN控制器单位时间内发送报文的能力,但一般情况下没有必要这样做,报文的传输带宽已经够用的情况下可靠性更重要。
|
||||
相关推荐
|
||||
谢楼主的总结
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1987 浏览 0 评论
5161 浏览 2 评论
8383 浏览 1 评论
3368 浏览 1 评论
7332 浏览 0 评论
2185浏览 3评论
1109浏览 1评论
《新能源车维修技术自学,链接汇总AI智能分类》超4000案例
5941浏览 1评论
1343浏览 0评论
图解比亚迪BYD7005BEV1,168串,604.8V,100Ah电池包-充-放-充-电池数据分析
1214浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 18:30 , Processed in 0.851577 second(s), Total 51, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号