您的位置:首页 > 其它

CAN 波特率设置

2013-11-12 15:53 330 查看
CAN时钟源的选择有两种,一种为总线时钟,一种为外接时钟

波特率计算公式:F(Baud) = F/(BRP* (1+TSEG2+TSEG1))

波特率设置相关寄存器

7
6
5
4
3
2
1
0
SJW1
SJW0
BRP5
BRP4
BRP3
BRP2
BRP1
BRP0
Table1 CANBTR0

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
Table2 SJW

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
Table3 Baud Rate Prescaler

7
6
5
4
3
2
1
0
SAMP
TSEG22

TSEG21

TSEG20

TSEG13

TSEG12

TSEG11

TSEG10

Table4 CANBTR1

TSEG22
TSEG21
TSEG20
Time Segment 2
0
0
0
1
0
0
1
2
..
..
..
...
1
1
0
7
1
1
1
8
Table5 TSEG2

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: