一、前言
广州虹科录制的CAN总线技术课程非常不错,建议同学们学习一下。B站的地址:https://www.bilibili.com/video/BV1gD4y1U7bJ?p=1
采样点是CAN节点判断信号逻辑(1或0)的位置,CAN通讯属于异步通讯。需要通过不断的重新同步才能保证节点的采样准确。若采样点太靠前,有可能因为线缆原因,DUT外发报文尚未稳定,容易发生采样错误,若采样点太靠后,则因为SJW原因,也会引起接收节点同步跳转宽度的调整,调整不好就容易出现错误。
普通CAN的1个位 = 同步段 + 传播段(PTS) + 相位缓冲段1(PBS1) + 相位缓冲段2(PBS2)
FDCAN的1个位 = 同步段 + BS1 + BS2
虹科给了一份采样点的时间份额参考,比如我们最常用的波特率1M的情况下,采样点的份额(一般用百分比来表示)= 6 / 8 *100% = 75%。比如当波特率是500K时,采样点的份额 = 14 / 16 * 100% = 87.5%。
二、STM32CubeMX上采样点的设置
STM32的CAN控制器都有采样点的设置,本次以STM32H743为例:
STM32H743上的是FDCAN控制器,那么1个位的时间 = 同步段 + BS1段 + BS2段,接着采样点 = (1 + 0xF) / (1 + 0xF + 0x04) * 100% = (1 + 15) / (1 + 15 + 4) * 100% = 80%。