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

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

RZ/N2L工業(yè)網(wǎng)絡SOM套件應用說明

RZ/T2M、RZ/N2L、RZ/T2L組 硬件設(shè)計指南

瑞薩電子RZ MPU家族精品RZ/N2L產(chǎn)品介紹

RTOS的流緩沖區(qū)機制解析

評論