CAN发送程序
本帖最后由 972539236 于 2023-6-2 12:24 编辑各位老师,实验箱9.6例程,49标准帧与50扩展帧收发程序,通讯波特率500怎么改成250,具体怎么改,程序怎么改成只发送不接收的程序,新人求教,刚接触到CAN,望老师们指点! 设置波特率的参数就这几个:
//CAN总线波特率=Fclk/((1+(TSG1+1)+(TSG2+1))*(BRP+1)*2)
#define TSG1 2 //0~15
#define TSG2 1 //1~7 (TSG2 不能设置为0)
#define BRP 3 //0~63
//24000000/((1+3+2)*4*2)=500KHz
波特率计算公式:CAN总线波特率=Fclk/((1+(TSG1+1)+(TSG2+1))*(BRP+1)*2)
计算结果跟 MCU主频、TSG1、TSG2、BRP 四个参数有关
例程主频设置24M,TSG1=2,TSG2=1,BRP=3,四个参数带入公式
计算结果:24000000/((1+3+2)*4*2)=500KHz
如果需要设置250KHz波特率,主频不变情况下修改 TSG1、TSG2、BRP 三个参数就可以,
例如设置 TSG1=2,TSG2=1,BRP=7,将参数带入公式
计算结果:24000000/((1+3+2)*8*2)=250KHz
所以只要修改 BRP 定义就可以实现250KHz波特率:
#define BRP 7 //0~63
好的,谢谢老师!麻烦您了! 老师实现10KHz波特率怎么计算? 乘风飞扬 发表于 2023-6-2 15:17
设置波特率的参数就这几个:
波特率计算公式:CAN总线波特率=Fclk/((1+(TSG1+1)+(TSG2+1))*(BRP+1)*2)
老师实现10KHz波特率怎么计算? gds 发表于 2023-6-3 18:14
老师实现10KHz波特率怎么计算?
#define TSG1 2
#define TSG2 1
#define BRP 49
MCU主频6MHZ
结果是波特率是10KHZ,但是我用CAN分析仪不能识别
乘风飞扬 发表于 2023-6-2 15:17
设置波特率的参数就这几个:
波特率计算公式:CAN总线波特率=Fclk/((1+(TSG1+1)+(TSG2+1))*(BRP+1)*2)
#define TSG1 2
#define TSG2 1
#define BRP 49
MCU主频6MHZ
结果是波特率是10KHZ,但是我用CAN分析仪不能识别
但是波特率计算成20KHZ #define BRP 24 分析仪能正常识别
CAN 的第三方模拟收发器,一般保证的最低速度是 60K,
所以 MCU 内部数字支持 10K 的速度没用,必须60K 或以上
20K,三方模拟收发器,都是不保证的, CAN 是 中/高 速应用
gds 发表于 2023-6-3 18:57
#define TSG1 2
#define TSG2 1
#define BRP 49
这种情况需要注意一下收发器的参数。
例如TJA1050规格书里面介绍官方给出的波特率支持范围是60K~1M,但是实测可以达到20K。设置10K波特率这个收发器就无法发送了。
乘风飞扬 发表于 2023-6-4 10:12
这种情况需要注意一下收发器的参数。
例如TJA1050规格书里面介绍官方给出的波特率支持范围是60K~1M,但是 ...
果然是TJA1050的问题,最低支持20K把 [TJA1050]换成 [82C250Y] 跑10K完美运行。在这里感谢大师指导。
页:
[1]
2