硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6034|回复: 3
收起左侧

[有问必答] STM32F4 CAN总线波特率计算问题

[复制链接]

9

主题

128

回帖

155

积分

初级会员

积分
155
发表于 2016-6-27 17:17:32 | 显示全部楼层 |阅读模式
最近因为需要想用一下STM32的CAN模块,但是在波特率计算这儿遇到点问题,值手册中是这样描述的,
        //-------------------------------------------------------------
                       
但是我在看安富莱的教程中对波特率的计算式这样说的
   CAN 波特率 = RCC_APB1Periph_CAN1 / Prescaler / (SJW + BS1 + BS2);
                                SJW = synchronisation_jump_width
                BS = bit_segment
                本例中,设置CAN波特率为500Kbps               
                CAN 波特率 = 420000000 / 2 / (1 + 12 + 8) / = 1 MBps
        */
        CAN_init.CAN_BS1 = CAN_BS1_8tq;
        CAN_init.CAN_BS2 = CAN_BS2_6tq;
        CAN_init.CAN_SJW = CAN_SJW_1tq;
        CAN_init.CAN_Prescaler = 2;
        CAN_Init(CAN1,&CAN_init);
其中CAN_BS2_6tq 为0x05,CAN_BS1_8tq 为0x07,CAN_SJW_1tq为0,按照前面计算公式那么波特率就不对啊,谁能帮我解释一下,谢谢啦!
记录本身,即已是反抗!
回复

使用道具 举报

9

主题

128

回帖

155

积分

初级会员

积分
155
 楼主| 发表于 2016-6-27 19:12:56 | 显示全部楼层
硬汉哥帮我看一下,谢谢啦
记录本身,即已是反抗!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117561
QQ
发表于 2016-6-28 00:59:27 | 显示全部楼层
看此贴最后一楼,另外就是这个参数CAN_BS2_6tq写错了,应该是写CAN_BS2_12tq
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=14308

还有就是要实际计算时,参数是要+1的,就是你上面贴的那个图,每个参数都有加1.
回复

使用道具 举报

0

主题

20

回帖

20

积分

新手上路

积分
20
发表于 2016-6-30 17:04:54 | 显示全部楼层
CAN 波特率 = RCC_APB1Periph_CAN1/ Prescaler / (1+ BS1 + BS2);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 14:36 , Processed in 0.038671 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表