CAN 波特率设置
2013-11-12 15:53
330 查看
CAN时钟源的选择有两种,一种为总线时钟,一种为外接时钟
波特率计算公式:F(Baud) = F/(BRP* (1+TSEG2+TSEG1))
波特率设置相关寄存器
Table1 CANBTR0
Table2 SJW
Table3 Baud Rate Prescaler
Table4 CANBTR1
Table5 TSEG2
例程
1. 总线时钟40MHZ,设置CAN波特率为500KHZ
40MHZ/500KHZ=80
80 = BRP *(1+TSEG2+TSEG1) =10 * 8;
所以设置BRP =8,TSEG2=4,TSEG1=5. SJW=0x01对应寄存器值
CAN0BTR0=0x47;
CAN0BTR1=0x43;
2. 总线时钟40MHZ,设置CAN波特率为250KHZ
40MHZ/250KHZ=16
80 = BRP *(1+TSEG2+TSEG1) =16 * 8;
所以设置BRP =8,TSEG2=4,TSEG1=5,SJW=0x01对应寄存器值
CAN0BTR0=0x4F;
CAN0BTR1=0x43;
波特率计算公式:F(Baud) = F/(BRP* (1+TSEG2+TSEG1))
波特率设置相关寄存器
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SJW1 | SJW0 | BRP5 | BRP4 | BRP3 | BRP2 | BRP1 | BRP0 |
SJW1 | SJW0 | Synchronization Jump Width |
0 | 0 | 1 Tq clock cycle |
0 | 1 | 2 Tq clock cycle |
1 | 0 | 3 Tq clock cycle |
1 | 1 | 4 Tq clock cycle |
BRP5 | BRP4 | BRP3 | BRP2 | BRP1 | BRP0 | Prescaler value |
0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | 2 |
0 | 0 | 0 | 0 | 1 | 1 | 3 |
0 | 0 | 0 | 1 | 1 | 1 | 4 |
.. | .. | .. | .. | .. | .. | .. |
1 | 1 | 1 | 1 | 1 | 1 | 64 |
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SAMP | TSEG22 | TSEG21 | TSEG20 | TSEG13 | TSEG12 | TSEG11 | TSEG10 |
TSEG22 | TSEG21 | TSEG20 | Time Segment 2 |
0 | 0 | 0 | 1 |
0 | 0 | 1 | 2 |
.. | .. | .. | ... |
1 | 1 | 0 | 7 |
1 | 1 | 1 | 8 |
TSEG13 | TSEG12 | TSEG11 | TSEG10 | Prescaler value |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 2 |
0 | 0 | 1 | 0 | 3 |
0 | 0 | 1 | 1 | 4 |
.. | .. | .. | .. | .. |
1 | 1 | 1 | 0 | 15 |
1 | 1 | 1 | 1 | 16 |
1. 总线时钟40MHZ,设置CAN波特率为500KHZ
40MHZ/500KHZ=80
80 = BRP *(1+TSEG2+TSEG1) =10 * 8;
所以设置BRP =8,TSEG2=4,TSEG1=5. SJW=0x01对应寄存器值
CAN0BTR0=0x47;
CAN0BTR1=0x43;
2. 总线时钟40MHZ,设置CAN波特率为250KHZ
40MHZ/250KHZ=16
80 = BRP *(1+TSEG2+TSEG1) =16 * 8;
所以设置BRP =8,TSEG2=4,TSEG1=5,SJW=0x01对应寄存器值
CAN0BTR0=0x4F;
CAN0BTR1=0x43;
相关文章推荐
- STM32基于库函数版本的系统工作频率与CAN工作波特率设置
- STM8S的can波特率设置
- 设置CAN波特率时出现问题
- STM32 CAN 波特率、采样点设置
- CAN波特率设置时的参数计算
- STM32 CAN 波特率设置及采样点设置
- CAN接口芯片MCP2515的波特率和滤波器设置问题
- CAN波特率设置时的参数计算
- STM 32 can 波特率的 确定
- uboot中串口时钟频率及波特率的设置
- 波特率的设置方法
- UART自适应波特率的设置方法
- 关于波特率的设置中M的单位问题
- arm-linux内核中串口时钟频率及波特率的设置
- linux下非标准波特率的设置和使用
- CAN通信中地址设置的问题
- Linux设置串口波特率等参数
- Wireshark设置interface 时提示“There are no interfaces on which a capture can be done ”
- STC11/10xx系列单片机独立波特率发生器设置
- zedboard 中SDK 修改串口设置(波特率。。。。)