赞
踩
最近需要使用STM32F103ZET6做个CAN总线通讯的应用,在使用CUBEMX配置时由于有些设置不是很确定所以最开始出现无法进入接收中断问题。解决中断问题后又出现总线不稳定问题,为了让大家能够避免这些坑,这里分享一下。
一、关于接收中断的设置
这里USB low priority or CAN RX0 interrupts 对应的是FIFO0的接收中断;CAN RX1 interrupt对应的是FIFO1的接收中断。最开始没有理解,之开启了CAN RX1 interrupt导致FIFO0无法进入接收中断。
二、关于波特率的设置
下图为第一次的配置,此配置发现只将MCU作为发送端没发现问题,但是如果MCU接收总线上的数据时,每隔几秒就会出现总线故障(用PC CAN软件监测到总线BUSY)。
由于在时钟树里面CAN所在分支频率36MHZ,所以为了方便计算,将Prescaler=36,然后设置其他参数以实现波特率250K,看似没问题,但是总线却不稳定。找了很多原因,后来重新配置了一下参数,结果发现就是配置波特率参数问题导致的。重新配置后参数如下图:
和之前配置相比,Prescaler从36改为9,其他参数调整后波特率仍然为250K但是此时在测试,总线就没有任何问题了。
这里虽然解决了但是还没有想出问题的根源在哪。我猜想可能是分频因子数值太大导致总线工作频率降低,降低后的频率无法满足总线正常收阀的需求。如果有了解具体原因的还请指教。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。