STM32中有关CAN总线CAN_SJW、CAN_BS1、CAN_Prescaler是什么?

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 15:03:53
STM32中有关CAN总线CAN_SJW、CAN_BS1、CAN_Prescaler是什么?
xTYOQ+[ Mk$-bD  4$ Ӵtj؅1]Na~{ɿZd:=s}Yƻ:9ň(UZA?]И{09wߚ][Zai~H'5}qNz.扶 oxۖn^t*kUsИHe~Z% ղ(D9m&QD.51 {y]Jl:[g #jyҎNǴF iPhR 2շڂp%d'AY'Y/ˎD!xt%A,bmC=']n 5j1ܣ7@Dvz ď-EõW]L Q6Q[EP}?6%l ]ܥQVР3dUU1N5$TxϛǕwY7g>aCz.gE4 R(v i'@tgsl% n؇ !y72c r} +W4nqم!a.Rp QMu3!]2K8Z?&YvDDc $Kg:ir@Ě>WV&o

STM32中有关CAN总线CAN_SJW、CAN_BS1、CAN_Prescaler是什么?
STM32中有关CAN总线CAN_SJW、CAN_BS1、CAN_Prescaler是什么?

STM32中有关CAN总线CAN_SJW、CAN_BS1、CAN_Prescaler是什么?
CAN总线通信的各节点通信时会产生相位差,所以要进行位同步,两个节点保持步调一致.
CAN_SJW:重新同步跳跃宽度(SJW) .定义了在每位中可以延长或缩短多少个时间单元的上限.其值可以编程为1到4个时间单元.
CAN_BS1:时间段1(BS1):定义采样点的位置.其值可以编程为1到16个时间单元,但也可以被自动延长,以补偿因为网络中不同节点的频率差异所造成的相位的正向漂移.
CAN_BS2:时间段2(BS2):定义发送点的位置.其值可以编程为1到8个时间单元,但也可以被自动缩短以补偿相位的负向漂移.
CAN_Prescaler:直观理解就是分频率.
CAN总线的波特率是取自于总线APB1(PCLK1),通过函数RCC_PCLK1Config给PCLK1配置频率.设置了以上的四个值之后,
CAN总线的波特率=PCLK1/((CAN_SJW +CAN_BS1 + CAN_BS2)*CAN_Prescaler)
假设PCLK1=36MHz、CAN_SJW=1、CAN_BS1=8、CAN_BS2=7、CAN_Prescaler=9
则CAN总线的波特率=PCLK1/((1 + 8 + 7) * 9) = 36MHz / 16 / 9 = 250Kbits
能解释的就这么多,对照着芯片手册和程序例程看看就懂了!