最近在搞CAN相关的问题,传输速率从125Kbps到1Mbps不等,由于使用STM32CubeMX作为代码生成平台,所以计算CAN波特率就需要自己动手算,但是算一次又记不住,索性就直接一次算好之后记下来!
CAN的波特率是靠时钟树的APB1 Clock的频率进行切分得到的,主要参数有:
- 预分频系数
- 时间片1
- 时间片2
- SWJ
以下CAN参数是以APB1 Clock为36MHz计算的:
波特率bps | 预分频系数 | 时间片1 | 时间片2 | SWJ |
---|---|---|---|---|
100K | 60 | 3 | 2 | 1 |
125K | 48 | 3 | 2 | 1 |
200K | 30 | 3 | 2 | 1 |
250K | 24 | 3 | 2 | 1 |
400K | 10 | 5 | 3 | 1 |
500K | 12 | 3 | 2 | 1 |
800K | 5 | 5 | 3 | 1 |
1M | 6 | 3 | 2 | 1 |
遇到表格中的内容如果STM32CubeMX不允许的情况就随便设置,生成代码后在CAN的初始化函数内进行修改即可!