972539236 发表于 2023-6-2 11:09:52

CAN发送程序

本帖最后由 972539236 于 2023-6-2 12:24 编辑

各位老师,实验箱9.6例程,49标准帧与50扩展帧收发程序,通讯波特率500怎么改成250,具体怎么改,程序怎么改成只发送不接收的程序,新人求教,刚接触到CAN,望老师们指点!

乘风飞扬 发表于 2023-6-2 15:17:37

设置波特率的参数就这几个:

//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

972539236 发表于 2023-6-2 15:24:49

好的,谢谢老师!麻烦您了!

gds 发表于 2023-6-3 18:12:58

老师实现10KHz波特率怎么计算?

gds 发表于 2023-6-3 18:14:32

乘风飞扬 发表于 2023-6-2 15:17
设置波特率的参数就这几个:

波特率计算公式:CAN总线波特率=Fclk/((1+(TSG1+1)+(TSG2+1))*(BRP+1)*2)


老师实现10KHz波特率怎么计算?

gds 发表于 2023-6-3 18:30:30

gds 发表于 2023-6-3 18:14
老师实现10KHz波特率怎么计算?

#define TSG1    2               
#define TSG2    1               
#define BRP   49
MCU主频6MHZ
结果是波特率是10KHZ,但是我用CAN分析仪不能识别

gds 发表于 2023-6-3 18:57:47

乘风飞扬 发表于 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       分析仪能正常识别

神农鼎 发表于 2023-6-3 20:59:03

CAN 的第三方模拟收发器,一般保证的最低速度是 60K,
所以 MCU 内部数字支持 10K 的速度没用,必须60K 或以上
20K,三方模拟收发器,都是不保证的, CAN 是 中/高 速应用

乘风飞扬 发表于 2023-6-4 10:12:57

gds 发表于 2023-6-3 18:57
#define TSG1    2               
#define TSG2    1               
#define BRP   49


这种情况需要注意一下收发器的参数。
例如TJA1050规格书里面介绍官方给出的波特率支持范围是60K~1M,但是实测可以达到20K。设置10K波特率这个收发器就无法发送了。



gds 发表于 2023-6-4 20:32:43

乘风飞扬 发表于 2023-6-4 10:12
这种情况需要注意一下收发器的参数。
例如TJA1050规格书里面介绍官方给出的波特率支持范围是60K~1M,但是 ...
果然是TJA1050的问题,最低支持20K把 [TJA1050]换成 [82C250Y] 跑10K完美运行。在这里感谢大师指导。
页: [1] 2
查看完整版本: CAN发送程序