打印

怎样通过CAN的波特率来设置BTR ??

[复制链接]
1866|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzzly|  楼主 | 2011-5-31 13:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例如,如果我希望CAN工作在1M的速率,也就是每位为1uS的时间,是不是表示tq+tBS1+tBS2=1uS ?是否可以用APB1时钟和CAN波特率来计算TS1【3:0】、TS2【2:0】和BRP【9:0】?怎么算?谢谢!
本人的习惯都是用相对通用的计算表达式和通信波特率及外设时钟计算通信外设的工作参数,这样在要改变通信外设速率的时候只要改变头文件中关于速率的预定义即可。
沙发
yzzly|  楼主 | 2011-5-31 14:36 | 只看该作者
本帖最后由 yzzly 于 2011-5-31 14:39 编辑

好像有点明白了:是不是要先设定TS1和TS2分别为几个tq,假设分别为2tq和1tq,那么1M波特率则位宽度是tq+2tq+1tq=1uS,这样可以算出tq=0.25uS,那么利用tq=(BRP[9:0]+1)*Tpclk就可以计算出BRP[9:0]的值(其中Tpclk是APB1的时钟周期)。如果APB1为36M的时钟,则BRP[9:0]=0.25*36-1=8,请指正!

使用特权

评论回复
板凳
yzzly|  楼主 | 2011-5-31 15:02 | 只看该作者
实际上BRP[9:0]+1=APB1CLK/(TS1+TS2+1)/CAN_BaudRate

使用特权

评论回复
地板
yzzly|  楼主 | 2011-6-1 15:01 | 只看该作者
没人响应?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

427

主题

1178

帖子

3

粉丝