在工業自動化、智能交通、機器人等領域,CANFD(CAN with Flexible Data-Rate)技術正逐步取代傳統CAN,以適應更高的數據速率和更復雜的通信需求。本文將深入解析RZ/N2L CANFD模塊的緩沖區機制,幫助工程師更高效地管理CAN消息,提高系統性能。(下面的內容主要涉及RZN2L CANFD外設手冊的解讀,篇幅較長,感興趣的讀者可以收藏,以備日后不時之需)
RZN2L CAN-FD模塊提供高達8 Mbps的數據速率,支持豐富的緩沖管理機制(獨立緩沖、FIFO緩沖、共享緩沖),提供完整的消息過濾、錯誤檢測、消息路由及傳輸管理,同時具備低功耗模式和測試功能,適用于工業控制、汽車電子、自動化系統等需要高可靠性和高性能通信的應用。
接著前面的章節,下面是關于FIFO中斷配置的深入解析:
1FIFO中斷模式配置
CFDRFCCn.RFIM(RXFIFO)和CFDCFCCn.CFIM(公共FIFO)控制中斷生成條件。
模式0(InterruptMode=0):
RX FIFO:FIFO計數器達到閾值(RFIGCV/CFIGCV配置)時觸發中斷。
TX FIFO:成功發送最后一條消息時觸發中斷。
GWFIFO:
接收幀:消息計數器達到閾值時觸發中斷。
發送幀:最后一條消息成功發送后觸發中斷。
模式1(InterruptMode=1):
RXFIFO:每接收一條消息即觸發中斷。
TXFIFO:每條消息成功發送后觸發中斷。
GWFIFO:
接收幀:消息存入FIFO時觸發中斷。
發送幀:消息成功發送后觸發中斷。
2中斷閾值配置
閾值寄存器:
CFDRFCCn.RFIGCV[2:0](RXFIFO)和CFDCFCCn.CFIGCV[2:0](公共FIFO)。
實際觸發消息數:
根據FIFO深度(由FDC[2:0]位配置)計算。
示例:若FIFO深度為64消息(FDC=110b),配置閾值1/4滿(001b),則觸發閾值為16條消息。
3關鍵限制與注意事項
1.閾值配置依賴FIFO深度:
FDC[2:0]位配置的FIFO深度決定了閾值配置的有效性
例如:若FIFO深度為4消息(FDC=001b),某些閾值(如1/8滿)可能不可用。
2.模式0的閾值應用:
僅在InterruptMode=0時生效,需確保閾值配置與FIFO深度匹配。
3.硬件無自動檢查:
用戶需自行驗證配置合法性,避免因閾值超限導致中斷失效。
4
應用場景建議
模式0(閾值觸發):
適用于需要減少中斷頻率的場景(如高吞吐量系統),通過設定較高閾值(如3/4滿)降低CPU負載。
模式1(每條消息觸發):
適用于實時性要求高的場景(如關鍵控制指令),確保每條消息的即時處理。
GW模式中斷:
需根據數據優先級選擇接收/發送中斷策略,避免關鍵消息丟失。
潛在問題與解決
中斷未觸發:
檢查FDC[2:0]與閾值配置是否兼容(如深度過小時,閾值比例可能無效)。
確認Interrupt Mode位設置是否正確。
中斷頻率過高:
調整閾值至更高比例(如7/8滿),或切換為模式0。
配置沖突:
若FIFO深度為0(未啟用),所有中斷配置均無效,需重新配置深度。
示例配置
1RX FIFO(高吞吐量場景):
深度:64消息(FDC=110b)。
中斷模式:0(閾值觸發)。
閾值:3/4滿(101b),觸發閾值48條消息。
2TX FIFO(實時控制):
中斷模式:1(每條消息觸發),確保每條指令的發送狀態被即時監控。
3GW FIFO(數據轉發):
接收中斷:模式1(消息存入即觸發),發送中斷:模式0(最后一條消息觸發)。
代碼調試結果補充:
在RZN2L的canfd的example program中,對“RZN2L_RSK_canfd_Rev100a”工程做如下的配置:
開啟CAN_TEST_MODE_LOOPBACK_EXTERNAL的回環測試模式
通過4個不同的MB(Message Buffer)id發送4幀數據(不使能發送中斷):
接收FIFO的設置:
Loopback Mode下的發送行為:
在不開啟TX中斷(Transmit Interrupt)的情況下發送數據幀。
如果發送的幀數少于4,則不會觸發RX中斷。
FIFO配置相關:
在FSP(Flexible Software Package,瑞薩的軟件框架)中配置FIFO時:
先啟用FIFO(即使能FIFO功能)。
然后設置FIFO的Depth(深度),即FIFO的存儲容量。
再設置FIFO的中斷模式(Interrupt Mode),即何時觸發中斷。
最后設置中斷閾值(Interrupt Threshold Value)
如果使用同一個MB id發送,需要使能對應的MB的TX中斷,比如用MB0來發送,可以使用如下的發送代碼和配置:
在使用不同的TXMB ID來發送CANFD數據幀的情況下,如果發送的幀數大于或等于4,才會觸發RX中斷,小于4則不會觸發RX中斷。在使用一個TXMB ID的情況下,對于接收FIFO的行為來說是一樣的。如果發送的幀數大于或等于4,才會觸發RX中斷,小于4則不會觸發RX中斷。通過閾值的方式觸發RX中斷后,RX FIFO中的數據幀將逐一產生中斷,直到RX FIFO中的數據幀為空。比如RX FIFO中有4幀數據,那么將逐一產生4次RX中斷。注意這里并不是產生一次中斷。
-
緩沖區
+關注
關注
0文章
36瀏覽量
9315 -
fifo
+關注
關注
3文章
400瀏覽量
44614 -
中斷
+關注
關注
5文章
904瀏覽量
42519 -
CANFD
+關注
關注
0文章
79瀏覽量
5233
原文標題:帶你解析RZN2L CANFD數據收發緩沖區及例程調試筆記(3)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
解析RZ/N2L CANFD模塊的緩沖區機制(1)

解析RZ/N2L CANFD模塊的緩沖區機制(2)

瑞薩電子RZ MPU家族精品RZ/N2L產品介紹

評論