Embedded 如何将STM32控制器的CAN波特率设置为500K
我试图在STM32446E-EVAL和我的电脑上的软件应用程序之间建立CAN(控制器局域网)通信。问题是,只要我尝试接收或发送一个字节,“主要错误位”其中一个寄存器中出现错误,我怀疑这与我在其他论坛上读到的波特率有关,但我在官方STM IDE中找不到任何选项来设置波特率……有人知道如何正确设置波特率吗 第一步:了解CAN时间量子是什么: 第二步:检查您的can时钟是什么:来自您的项目 第三步:将此值放入上面的页面 第四步:准备好你的价值观 第五步:适当的程序可以用step4值注册(如果使用HAL,则可以注册结构成员)Embedded 如何将STM32控制器的CAN波特率设置为500K,embedded,stm32,can-bus,Embedded,Stm32,Can Bus,我试图在STM32446E-EVAL和我的电脑上的软件应用程序之间建立CAN(控制器局域网)通信。问题是,只要我尝试接收或发送一个字节,“主要错误位”其中一个寄存器中出现错误,我怀疑这与我在其他论坛上读到的波特率有关,但我在官方STM IDE中找不到任何选项来设置波特率……有人知道如何正确设置波特率吗 第一步:了解CAN时间量子是什么: 第二步:检查您的can时钟是什么:来自您的项目 第三步:将此值放入上面的页面 第四步:准备好你的价值观 第五步:适当的程序可以用step4值注册(如果使用HAL
第六步:庆祝成功。我在做一个项目时遇到了类似的问题。我没有像你一样使用完全相同的电路板,但它仍然是STM32,我使用的是CubeMx IDE。您的项目中很可能有一个.ioc文件,在那里您有一个名为“参数设置”的字段,您将在其中找到更多字段。在我的例子中,我改变了预分频器和位时间量子1和2,如上面的答案所述。当然,这取决于您的特定电路板的配置,但在我的例子中,预分频器的“获胜组合”是8,量子数的“获胜组合”是6和5。我用示波器进行测量,直到我发现这些值是正确的。更改这3个参数应该可以做到这一点 从§30.7.7位定时: 重新安排: BRP=(FPCLK/(波特率x(TS1+TS2+3))-1 并非TS1和TS2的所有值都会导致上述公式的整数值,因此不会生成正确的波特率。此外,您必须考虑样本点-各种CAN应用协议具有特定的优选采样点建议,但在任何情况下都必须在50%到90%之间。以百分比表示的样本点为: 1-((TS2+1)/(TS2+TS1+3))x 100% 因此,关于TS1/TS2值有多种解决方案,但每种解决方案都提供了不同的采样点,因此您需要选择以下值:
请注意,表中的值是寄存器值+1。PCLK的值是多少?您在CAN_BTR寄存器中将TS1、TS2和BRP设置为什么?那么这些值适用于哪个PCLK频率?我不确定推荐一种经验主义的方法,而不是真正理解正在发生的事情是否有帮助。您的数据得出的样本点为58.33%,这对于长途公共汽车运行来说可能有点低。