CAN波特率计算

120 篇文章 22 订阅

波特率:1秒发送的二进制数据位数
位时间:发送一位需要的时间

Tq等于一个CAN时钟周期,一般求波特率先求Tq,
频率等于周期的倒数
CAN时钟频率 = 1/Tq = 1/CAN时钟周期

位时间 = 就那几个段的时间相加

本质:波特率 = 1/位时间

波特率 = (CAN时钟频率➗位时间)➗波特率分频系数

CAN总线采用的是异步串行通信,也就是没有单独的时钟线来保证各个收发器之间时钟的一致,每个收发器是按事先设置的波特率来对总线上的电平进行分位。因此波特率设置准确对CAN总线的稳定通信来说非常重要。
  CAN总线里我们可以通过对CAN 节点里的位定时寄存器的控制来实现不同波特率的通信。CAN协议里将一个位时间分为同步段、传播段、相位缓冲段1和相位缓冲段2。每个段的时间长度都可以用一个整数的基本时间单位表示,该基本时间单位由系统的时钟振荡器分频得到。
  同步段位于一个位的起始位置,CAN-bus规定跳变沿为同步信号,但是发送节点发送一个位跟接收节点接收到这个位之间存在网络传播延迟,传播段则是为了补偿这段传播延迟,由于采样点位置在相位缓冲段1跟相位缓冲段2之间,通过设置相位缓冲段1和相位缓冲段2的值,可以调整采样点位置,保证每个位采样点一致。缓冲段的长度调节范围则是由同步跳转宽度(SJW)决定。

https://blog.csdn.net/wgp2hpp/article/details/101359971?ops_request_misc=&request_id=&biz_id=102&utm_term=CAN%E7%9A%84%E6%B3%A2%E7%89%B9%E7%8E%87%E6%AF%94%E6%AD%A3%E7%A1%AE,%E6%95%B0%E6%8D%AE%E8%83%BD%E5%8F%91%E5%87%BA%E5%8E%BB%E5%90%97&spm=1018.2226.3001.4187

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: GD32是一款单片机芯片,支持CAN通信协议。而CAN通信需要设置波特率才能实现数据传输,因此需要对GD32进行波特率计算。 首先,波特率是指数据传输时每秒钟传输的位数。在CAN通信中,波特率计算需要考虑以下几个因素: 1. Tq:CAN通信周期的时间,通常是由时间触发器提供的,可通过预设分频系数调整周期长度。 2. Bit time:每个传输单位的时间,可通过时序控制器进行设置,通常由同步段、传输段和重复段组成。 3. Sync Seg:同步段的长度,通常是Bit time的1/4到1/8。 4. Prop Seg:传输段的长度,表示在信号从发射器传输到接收器时的时延,通常为1-8个Tq。 5. Phase Seg1:第一重传输段的长度,通常为1-8个Tq。 6. Phase Seg2:第二重传输段的长度,通常为1-8个Tq。 根据上述参数,GD32的CAN波特率计算公式为: 波特率 = 时钟频率 / (Tq x (Sync Seg + Prop Seg + Phase Seg1 + Phase Seg2 + 1)) 其中,时钟频率指GD32的主频,Sync Seg、Prop Seg、Phase Seg1和Phase Seg2为通过寄存器设置的参数,Tq为CAN周期的时长。在实际应用中,可以根据需要调整参数值,以满足不同的波特率需求。 总结来说,GD32的CAN波特率计算需要考虑多个参数,其中包括时钟频率、CAN周期时长和各个传输段的长度等。通过设置这些参数,可以实现不同波特率的CAN数据传输。 ### 回答2: GD32是一种微控制器芯片系列,它支持CAN总线通信协议。在使用GD32进行CAN总线通信时,需要设置正确的波特率来保证正常的数据传输。一般来讲,GD32支持的CAN波特率范围为1Mbps到125Kbps。如果需要计算具体的波特率数值,可以使用以下公式: CAN波特率 = 系统时钟频率 / (分频器系数 * (时间段1 + 时间段2 + 1)) 其中,系统时钟频率是GD32的主时钟频率,分频器系数可以设定为1到1024之间的整数,时间段1和时间段2分别表示CAN总线的两个时间段,它们的值也可以设定为1到16之间的整数。 具体地,可以通过以下步骤来计算GD32的CAN波特率: 1. 确定系统时钟频率。在GD32的时钟配置中,可以设置CPU时钟频率、AHB总线时钟频率和APB总线时钟频率。需要根据具体的需求来选择合适的时钟频率。 2. 选择合适的分频器系数。GD32的CAN模块支持的分频器系数为1到1024之间的整数,选择哪一个分频器系数,可以根据需要得到的波特率范围来决定。一般来说,分频器系数越小,得到的波特率就越高。 3. 设定时间段1和时间段2的值。时间段1和时间段2的值决定了CAN总线的两个时间段的长度,一般来说,这两个值要尽量相等,可以设定为1到16之间的整数。 通过以上步骤,可以得到一个合适的CAN波特率。在设置CAN模块的波特率时,需要把计算出的数值配置到相应的寄存器中,以确保CAN总线的正常通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值