迪文科技论坛

 找回密码
 立即注册
搜索
查看: 2151|回复: 3

【提问】T5L0单片机的CAN波特率计算问题

[复制链接]

13

主题

39

回帖

336

积分

中级会员

Rank: 3Rank: 3

积分
336
发表于 2021-11-3 17:32:01 | 显示全部楼层 |阅读模式
我是在论坛下载的CAN通讯例程,例程注释125K,可是按照数据手册公式计算的结果不是125K,我是新手,不知道哪里算错了,有知道的大神麻烦指点下,谢谢。

void caninit()
{
ADR_H = 0xFF;
ADR_M = 0x00;
ADR_L = 0x60;
ADR_INC = 1;
RAMMODE = 0x8F;  //写操作
while(!APP_ACK);
//  DATA3 = 0x1A;
// DATA2 = 0x17;
// DATA1 = 0x0f;
// DATA0 = 0x00;// 波特率150K
DATA3 = 17;        
DATA2 = 0x4c;      
DATA0 = 0x00;// 波特率125K
APP_EN = 1;
while(APP_EN);
DATA3 = 0;
DATA2 = 0;
DATA1 = 0;
DATA0 = 0;    //配置验收寄存器ACR
APP_EN = 1;   
while(APP_EN);
DATA3 = 0xFF;
DATA2 = 0xFF;
DATA1 = 0xFF;
DATA0 = 0xFF;   //配置AMR
APP_EN = 1;
while(APP_EN);
RAMMODE = 0;
CAN_CR = 0xA0;
while(CAN_CR&0x20); //执行配置FF0060-FF0062动作
ECAN = 1;   //打开CAN中断  
}


带入公式计算     T0+T1+T2 = CPU主频/(波特率*(BRP+1)*2)-4。
                        B=  CPU主频/((SJW+T0+T1+T2+3)*(BRP+1)*2)  = 206.4384M/(2+12+0+0+3)*(17+1)*2

计算结果不是125K
不知道哪里理解错了,希望大神指点下,谢谢。。。。

回复

使用道具 举报

0

主题

932

回帖

7775

积分

论坛元老

Rank: 8Rank: 8

积分
7775
发表于 2021-11-4 10:28:58 | 显示全部楼层
看看附件文档能不能帮到您

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

3

主题

6

回帖

64

积分

注册会员

Rank: 2

积分
64
发表于 2022-2-28 20:37:00 | 显示全部楼层
fay 发表于 2021-11-4 10:28
看看附件文档能不能帮到您

这个资料解决了我的问题,文档描述的不是很准确。
回复

使用道具 举报

2

主题

6

回帖

75

积分

注册会员

Rank: 2

积分
75
发表于 2025-1-10 11:20:31 | 显示全部楼层

DATA3 = 45;          // 波特率分频寄存器(BRP)=45
DATA2 = 0x87; // BTR0 BTR0[7:5]同步跳转宽度SJW,[3:0]prop传播段时间T0
DATA1 = 0x43; // BTR1[7:4]相位缓冲段1,T1,[3:0] 相位缓冲段2,T2。
DATA0 = 0;          // 写0。另外,T0+T1+T2 = CPU主频/(波特率*(BRP+1)*2)-4=125K波特率。
这个是125K的试过可以使用,但是不知道怎么改其它的
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-4-15 01:25 , Processed in 0.222202 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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