XMC_CAN_STATUS_BUSY是如何引起的,在CAN通訊中是否有方法解決它?

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨伙計們,

我正在使用基於 XMC4400 MCU 的板,並致力於 CAN 通訊。戴夫是我正在使用的 IDE。

情況是,一開始通訊還好,但是發送了幾十條CAN報文後就停止了。嘗試了很多次,但這種行為仍然存在。 在偵錯期間進行調查之後,此問題會發生在 XMC_CAN_MO_MO_ 傳輸 () 函式中,該函式會傳回 XMC_CAN_STATUS_BUSY 狀態,以及下列所有傳輸卡斷的原因相同。

重置板後(我的表達可能不準確 - 對於我的情況,我的意思是停止/重新啟動 DAVE 中的調試),CAN 通信恢復工作,但在發送數十條消息後再次被 XMC_CAN_STATUS_BUSY 停止。

發送的頻率是每秒一次,我認為這遠遠不高。 另外,我嘗試了不同的 CAN 設備作為接收器,問題仍然存在,所以我認為這不是連接問題,也不是接收 CAN 節點的問題。

我的 CAN 配置是根據硬體訊號連接設定自動產生的。在程式碼中,CAN通訊相關腳本基本上是這樣的

 

 

CAN_NODE_0.lmobj_ptr[2]->mo_ptr->can_data_word[0] = a;
CAN_NODE_0.lmobj_ptr[2]->mo_ptr->can_data_word[1] = b;
XMC_CAN_MO_UpdateData(CAN_NODE_0.lmobj_ptr[2]->mo_ptr);
XMC_CAN_MO_Transmit(CAN_NODE_0.lmobj_ptr[2]->mo_ptr);

 

 

在 1 秒的間隔刻度函數中調用。

你能分享一些關於忙碌狀態的可能原因的建議嗎?

或者,是否有一種方法可以在傳輸失敗時重置消息對象,例如清除忙碌狀態和消息數據等,並準備好下一輪傳輸?

感謝您的回复。

問候,

 

 

1 解決方案
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨, @WeiF

"XMC_CAN_MO_ 傳輸 () " 函數會傳回 X " MC_ CAN_STATUS_BUSY,"因為位元 TX RQ 是在您嘗試傳送的訊息物件中傳送的事實。這意味著以前的傳輸正在進行中,您無法發送以忙碌狀態表示的新消息。

要讓節點再次參與 CAN 通信,您需要重設該節點的 INIT 位元。

您CAN嘗試按照上述建議並讓我們知道結果嗎?

最好的問候,

青下

在原始文章中檢視解決方案

0
2 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨, @WeiF

"XMC_CAN_MO_ 傳輸 () " 函數會傳回 X " MC_ CAN_STATUS_BUSY,"因為位元 TX RQ 是在您嘗試傳送的訊息物件中傳送的事實。這意味著以前的傳輸正在進行中,您無法發送以忙碌狀態表示的新消息。

要讓節點再次參與 CAN 通信,您需要重設該節點的 INIT 位元。

您CAN嘗試按照上述建議並讓我們知道結果嗎?

最好的問候,

青下

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨, @WeiF

由於長時間不活動,我正在鎖定此線程。 如果有任何更新的查詢,請隨時創建一個新的線程。

最好的問候,

青下

0