2016-11-24 307 views
-1

美好的一天全部STM32F746 CAN初始化超时

我一直在尝试从STM32F407迁移到STM32F746。我遇到的问题是使用ST HAL库来初始化CAN。该代码是从MX Cube(4.16)生成的。使用Nucleo-144 STM32F746,我可以在调试期间(ST-Link)通过初始化代码(MX_CAN1_Init()),但不能在调试中使用uLink Pro的生产系统上通过。它会超时等待CAN外设(MSR INAK位未被清除)。

CAN引脚未连接任何东西,即悬空。

回答

-1

找到了解决办法。

显然,如果CAN RXD引脚悬空或拉低,然后初始化函数会超时,除非使用ST-链接的核蛋白板调试。

然后我在GPIO中使用了内部上拉电阻,问题消失了。这两个系统都将在运行模式或调试中传递初始化代码。

我不记得STM32F407是否有类似的问题。

+0

CAN收发器通常将CAN Rx引脚驱动至正确的空闲电平。在这些线路上放置极性不正确的拉电阻会导致整个总线(已经这样做)。最好不要使用任何拉电阻。 – Lundin

+0

@Lundin具有上拉电阻不应对总线产生负面影响,因为高电平是“隐性”。所以是的,CAN收发器应该正确地拉它,但是对于测试代码,如果没有必要连接CAN收发器,没有拉上RXD引脚将导致CAN模块不能初始化。我确实提到过我没有连接收发器。 – Flip

+0

如果您没有CAN收发器,那么通常无论如何都会以“回送”模式运行,即使信号甚至不能离开MCU。自从我意识到在开发阶段摆弄这些东西只是有害的时代以来,我一直很年轻。尽可能早地获得收发器和另一个节点,如CAN监听适配器。与调试由于不在现场条件下进行测试而导致的特殊行为相比,在修复方面没有太多努力。如有可能,应尽量避免使用模拟器。 – Lundin