2016-11-24 81 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