找回密码
 立即注册
查看: 1546|回复: 16

CAN发送程序

[复制链接]

3

主题

6

回帖

47

积分

新手上路

积分
47
发表于 2023-6-2 11:09:52 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 972539236 于 2023-6-2 12:24 编辑

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2023-6-2 15:17:37 | 显示全部楼层
设置波特率的参数就这几个:

  1. //CAN总线波特率=Fclk/((1+(TSG1+1)+(TSG2+1))*(BRP+1)*2)
  2. #define TSG1    2                //0~15
  3. #define TSG2    1                //1~7 (TSG2 不能设置为0)
  4. #define BRP     3                //0~63
  5. //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

回复 支持 2 反对 0

使用道具 举报 送花

3

主题

6

回帖

47

积分

新手上路

积分
47
发表于 2023-6-2 15:24:49 来自手机 | 显示全部楼层
好的,谢谢老师!麻烦您了!
回复 支持 反对

使用道具 举报 送花

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2023-6-3 18:12:58 | 显示全部楼层
老师实现10KHz波特率怎么计算?
回复 支持 反对

使用道具 举报 送花

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2023-6-3 18:14:32 | 显示全部楼层
乘风*** 发表于 2023-6-2 15:17
设置波特率的参数就这几个:

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

老师实现10KHz波特率怎么计算?
回复 支持 反对

使用道具 举报 送花

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2023-6-3 18:30:30 | 显示全部楼层
gd*** 发表于 2023-6-3 18:14
老师实现10KHz波特率怎么计算?

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

使用道具 举报 送花

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 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       分析仪能正常识别

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15613
发表于 2023-6-3 20:59:03 | 显示全部楼层
CAN 的第三方模拟收发器,一般保证的最低速度是 60K,
所以 MCU 内部数字支持 10K 的速度没用,必须60K 或以上
20K,三方模拟收发器,都是不保证的, CAN 是 中/高 速应用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2023-6-4 10:12:57 | 显示全部楼层
gd*** 发表于 2023-6-3 18:57
#define TSG1    2               
#define TSG2    1               
#define BRP     49

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


回复 支持 2 反对 0

使用道具 举报 送花

1

主题

7

回帖

37

积分

新手上路

积分
37
发表于 2023-6-4 20:32:43 | 显示全部楼层
乘风*** 发表于 2023-6-4 10:12
这种情况需要注意一下收发器的参数。
例如TJA1050规格书里面介绍官方给出的波特率支持范围是60K~1M,但是 ...

果然是TJA1050的问题,最低支持20K  把 [TJA1050]  换成 [82C250Y] 跑10K完美运行。在这里感谢大师指导。
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 04:16 , Processed in 0.468656 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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