找回密码
 立即注册
查看: 677|回复: 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
回复 送花

使用道具 举报

  • TA的每日心情
    开心
    昨天 10:55
  • 签到天数: 131 天

    [LV.7]常住居民III

    26

    主题

    1297

    回帖

    4033

    积分

    论坛元老

    积分
    4033
    发表于 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 | 显示全部楼层
    gds 发表于 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       分析仪能正常识别

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9307

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:55
  • 签到天数: 131 天

    [LV.7]常住居民III

    26

    主题

    1297

    回帖

    4033

    积分

    论坛元老

    积分
    4033
    发表于 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波特率这个收发器就无法发送了。
    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, 2024-5-4 01:52 , Processed in 0.069354 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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