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

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

我已經實現了一個偽 CAN 網關,使用 DMA 在 CAN 節點訊息 RAM 位置之間傳輸訊息。除了我遇到的一個問題外,它工作正常。 我正在在 CANrX 中斷時使用軟件觸發 DMA 交易。 DMA 是軟體觸發的,因此我可以在將 CAN 訊息傳輸到新訊息 RAM 位置之後以及在新節點上傳輸之前修改 CAN 訊息。

收到 CAN 訊息後,我啟動 DMA 事務、清除 Rx 中斷標誌、設定 RxFIFO 應答索引並清除新資料標誌。下一個 CAN 接收到的訊息不會觸發新的中斷。

我已經找到了我認為問題是什麼。 軟體 DMA 交易似乎不符合必須從訊息 RAM 讀取新資料的要求。 如果我在 DMA 交易之後手動讀取新數據,則下一個 CANrX 中斷將再次正常觸發。 必須手動讀取消息 RAM 正在打破了我的 DMA 交易的目的。

關於CAN滿足讀取訊息 RAM 的要求而無需手動執行的任何想法?

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

我弄清楚了我的問題。 在開始 DMA 傳輸之前,我需要清除 CANrX 中斷。 現在它正如預期的工作。

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

0
1 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

我弄清楚了我的問題。 在開始 DMA 傳輸之前,我需要清除 CANrX 中斷。 現在它正如預期的工作。

0