因為公司專案需要,一直使用can匯流排控制整車電機,目前發現的問題:使用微控制器匯流排資料can丟包。
問題描述:使用stm32微控制器的時候,傳送can報文,經常會出現丟包的情況,而且現象非常明顯。而使用can卡的時候,沒有出現過這種情況。
後來找到問題的解決方法,在每條can指令的語句後面,新增500us至1ms的延時程式,收發過程中,沒有出現丟包的問題。
這裡分析可能的原因:
1、can收發器工作頻率不同。stm32103最高主頻72mhz,can卡中的lpc1765fbd100晶元,自帶can收發功能,最高主頻80mhz,主頻略高,執行指令的速度更快。
2、stm32傳送時間限制。傳送時間計算:例如:傳送8個位元組標準幀11位幀頭+8位資料位。共計11+64=75位。can匯流排傳輸速率為500kb/s。can傳輸位需要2us,傳送一幀資料需要150us。還需要包括程式執行時間,這個時候才完成一整個傳送過程。此刻執行程式的速度就很關鍵,速度更快就可以更快的完成can傳送。
STM32 CAN簡單接收和傳送
前面對can原理進行了講解,這裡我用乙個簡單的例子來說明can的使用。我使用的stm32晶元是stm32f103ze,幾個基本的配置是 1.配置can時鐘 can periph clock enable rcc apb1periphclockcmd rcc apb1periph can,enable...
stm32 can通訊傳送解釋
uint8 t can transmit can typedef canx,cantxmsg txmessage else if canx tsr can tsr tme1 can tsr tme1 else if canx tsr can tsr tme2 can tsr tme2 else if...
關於STM32 CAN 傳送失敗問題解釋
首先解釋一下can幾個配置的功能 1.can initstruct.can ttcm disable 這個只在某些can標準中使用,就設定為disable。2.can initstruct.can abom enable 這個位我們使能該功能,使用該功能可以在節點出錯離線後適時的自動恢復,不需要軟體...