STM32 CAN的位时序和波特率

STM32 CAN的位时序和波特率

位时序

  • STM32的CAN外设位时序中只包含3段,分别是同步段SYNC_SEG、位段BS1及位段BS2,采样点位于BS1及BS2段的交界处。其中SYNC_SEG段固定长度为1Tq,而BS1及BS2段可以在位时序寄存器CAN_BTR设置它们的时间长度,它们可以在重新同步期间增长或缩短,该长度SJW也可在位时序寄存器中配置。
  • 理解STM32的CAN外设的位时序时,可以把它的BS1段理解为是由CAN标准协议中PTS段与PBS1段合在一起的,而BS2段就相当于PBS2段。

波特率

  • 通过配置位时序寄存器CAN_BTR的TS13:0及TS22:0寄存器位设定BS1及BS2段的长度后,就可以确定每个CAN数据位的时间:
  • BS1段时间:
    • TS1=Tq x (TS13:0 + 1),
  • BS2段时间:
    • TS2= Tq x (TS22:0 + 1),
  • 一个数据位的时间:
    • T1bit =1Tq+TS1+TS2 =1+ (TS13:0 + 1)+ (TS22:0 + 1)= N Tq
  • 其中单个时间片的长度Tq与CAN外设的所挂载的时钟总线及分频器配置有关,CAN1和CAN2外设都是挂载在APB1总线上的,而位时序寄存器CAN_BTR中的BRP9:0寄存器位可以设置CAN外设时钟的分频值 ,所以:
    • Tq = (BRP9:0+1) x TPCLK
  • 其中的PCLK指APB1时钟,默认值为42MHz。最终可以计算出CAN通讯的波特率:
    • BaudRate = 1/N Tq

一种把波特率配置为1Mbps的方式:

参数 说明
SYNC_SE段 固定为1Tq
BS1段 设置为4Tq (实际写入TS13:0的值为3)
BS2段 设置为2Tq (实际写入TS22:0的值为1)
TPCLK APB1按默认配置为F=42MHz, TPCLK=1/42M
CAN外设时钟分频 设置为6分频(实际写入BRP9:0的值为5)
1Tq时间长度 Tq = (BRP9:0+1) x TPCLK = 6 x 1/42M=1/7M
1位的时间长度 T1bit =1Tq+TS1+TS2 = 1+4+2 = 7Tq
Tq+TS1+TS2 = 1+4+2 = 7Tq
波特率 BaudRate = 1/N Tq = 1/(1/7M x 7)=1Mbps
相关推荐
国科安芯6 小时前
立方星与微纳卫星综合电子微型化趋势下的抗辐射MCU选型综述
人工智能·单片机·嵌入式硬件·mcu·risc-v·抗辐射
xunyan62346 小时前
3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·嵌入式硬件·接口隔离原则
WD137298015577 小时前
WD5030L,为充电桩、工业设备、5G 基站、车载系统、消费电子提供电源,7-30V 的宽压输入
stm32·单片机·嵌入式硬件·5g·车载系统·51单片机
创界工坊工作室9 小时前
30-基于STM32的小麦烘干塔温度控制系统设计
stm32·单片机·嵌入式硬件·proteus
Zwawa10 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·单片机·嵌入式
单片机仿真设计11 小时前
【proteus仿真设计】基于 STM32 的开荒机器人遥控控制系统设计(仿真图+程序)
stm32·嵌入式硬件·机器人·proteus
smartpi_ai11 小时前
51 单片机写好了,大模型语音怎么接?17T 全驱动的现成方案、双板串口分工的边界与画板前的三项硬件确认
单片机·嵌入式硬件·学习
我先去打把游戏先11 小时前
NimBLE是什么-ESP32蓝牙协议栈详解
单片机·嵌入式硬件·ubuntu
木子n112 小时前
车载以太网与SOME/IP服务化通信实战-02.状态机与订阅:SOME/IP-SD的三态迁移、重传账与上电风暴
嵌入式硬件·网络协议·车载系统·车载以太网·some/ip
Gongsion12 小时前
30V输入耐压|1.5μA超低静态电流|200mA输出,CSM52系列:线性稳压器LDO,12V母线转3.3V/5V传感器、MCU弱电支路可靠稳压方案
单片机·嵌入式硬件·车载系统·无人机·智能家居