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

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。

相关推荐
hsjiasb3 小时前
FreeRTOS学习(二十六)——动态内存管理heap_1到heap_5
stm32·单片机·学习·学习笔记·freertos
LCG元4 小时前
STM32+ESP8266+MQTT 物联网气象站:从零搭建温湿度远程监测系统(附完整源码)
stm32·物联网·struts
FakeOccupational6 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存(D-Cache)结构+MPU+DMA&Cache+STM32CubeMX配置
笔记·stm32·缓存
殷忆枫7 小时前
基于K210与STM32的智能垃圾分类与物联网监管系统
stm32·物联网·分类
周洲08307 小时前
STM32 GPIO 外部中断深度解析:边沿触发 / 电平触发、NVIC 优先级配置、中断嵌套实战
stm32·单片机·嵌入式硬件
LCG元8 小时前
STM32F103 CAN 总线通信实战:标准库双机通信与过滤器配置精讲
stm32·单片机·嵌入式硬件
zlinear数据采集卡8 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
Kuakewei8889 小时前
平芯微42V热拔插OVP过压保护芯片:PW1600
嵌入式硬件
ACP广源盛1392462567310 小时前
WAIC2026 国产超节点算力浪潮下@ACP#IX9104 在算力矩阵中的定位与落地场景
大数据·数据库·人工智能·嵌入式硬件·线性代数·矩阵
z203483152010 小时前
STM32单片机控制无源蜂鸣器播放《晴天》
stm32·单片机·嵌入式硬件