STM32_CAN通讯波特率和采样点计算与设置

本文详细介绍了STM32CAN外设的位时序结构,如何通过STM32CubeMX配置BitTimings参数,包括位段1和2的时间长度、再同步跳转宽度,以及采样点位置对波特率的影响。特别强调了不同波特率下采样点的最佳位置选择,确保CAN通信的稳定性和性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32_CAN通讯波特率设置

STM32的 CAN外设位时序中只包含 3 段,分别是同步段 SYNC_SEG、位段BS1 及位段 BS2,采样点位于 BS1及BS2 段的交界处。
在这里插入图片描述

在这里插入图片描述

其中,SYNC_SEG段固定长度为 1T,可以在重新同步期间增长或缩短,该长度 SJW 也可在位时序寄存器中配置;BS1及 BS2 段可以在位时序寄存器CAN_BTR设置其时间长度

CAN参数计算与设置

在STM32CubeMX中参数配置所示
在这里插入图片描述
Bit Timings Parameters 组,定位时间参数
Time Quanta in Bit Segment 1,位段1的时间片个数为 m,范围为1~16;
Time Quanta in Bit Segment 2,位段2 的时间片个数为n,范围为1~8;
ReSynchronization Jump Width (SJW),再同步跳转宽度,设置范围为1~4。

STM32F1的CAN 通信波特率配合软件计算配置如下图所示
在这里插入图片描述
CLK CAN时钟频率;Baud Rate 波特率; Sample Point 采样点;Error 错误码 ;BRP CAN分频系数

采样点在 PBS1与PBS2 之间,其配置在位时间段的位置一般如下:
当CAN 通信波特率大于等于 800 kbit/s 时,采样点推荐位置是在位时间段的 75%;
当CAN 通信波特率大于 500 kbit/s,小于 800 kbit/s 时,采样点推荐位置是在位时间段的 80%;
当CAN 通信波特率小于等于 500 kbit/s 时,采样点推荐位置是在位时间段的87.5%;

例如,把采样点设置在位时间段 80% 处,即为了提高同步调整的速度,把 CAN_SJW 配置为1T。
举例:设置CAN 通信波特率为 500 kbit/s。
利用上面的公式,SS - 1Tq,CAN_BS1 - 4Tq,CAN_BS2 - 1Tq。时间单位T根据CAN外设时钟分频的值(12分频)及APB1的时钟频率(36 MHz)计算得出:
Tq=12X(1/36 MHz)

即,每一个 CAN位时间为:
1Tq + 4Tq + 1Tq= 6Tq

CAN 通信波特率为:
1/(6X12X(1/36 MHz)) = 500 kbit/s
则采样点位置是在位时间段的 83.3%。
注意,如果研发人员设计的是一整套 CAN 总线网络系统,则在设置相同的通信波特率的前提下,定要将SSCAN BS1CAN BS2的数值设置为相同数值,这样利于CAN网络通信的稳定。

CAN时钟

CAN挂在APB1上,频率为36;CAN的波特率最大为1Mbps。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

谢谢~谢先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值