在工業自動化、智能交通、機器人等領域,CANFD(CAN with Flexible Data-Rate)技術正逐步取代傳統CAN,以適應更高的數據速率和更復雜的通信需求。本文將深入解析RZ/N2L CANFD模塊的緩沖區機制,幫助工程師更高效地管理CAN消息,提高系統性能。(下面的內容主要涉及RZN2L CANFD外設手冊的解讀,篇幅較長,感興趣的讀者可以收藏,以備日后不時之需)
RZN2L CAN-FD模塊提供高達8 Mbps的數據速率,支持豐富的緩沖管理機制(獨立緩沖、FIFO緩沖、共享緩沖),提供完整的消息過濾、錯誤檢測、消息路由及傳輸管理,同時具備低功耗模式和測試功能,適用于工業控制、汽車電子、自動化系統等需要高可靠性和高性能通信的應用。
請先看一下RZN2L硬件手冊中關于發送/接收緩沖區的描述:
以下是對該截圖內容的進一步解析:
1概述
CANFD模塊的消息緩沖區包括:
RX普通消息緩沖區
(Reception Normal Message Buffers)
RX FIFO消息緩沖區
(Reception FIFO Access Message Buffers)
共享IFO消息緩沖區
(Common FIFO Access Message Buffers)
TX普通消息緩沖區
(Transmission Normal Message Buffers)
RX消息緩沖區通過RX消息緩沖區寄存器訪問。
RX FIFO緩沖區和共享FIFO緩沖區(RX模式、TX模式、GW模式)只能通過FIFO訪問寄存器訪問。
TX消息緩沖區通過TX消息緩沖區寄存器訪問。
2FIFO模式說明
如果共享FIFO配置為TX模式,只能通過FIFO訪問寄存器寫入數據。
如果共享FIFO配置為RX模式或GW模式,只能通過FIFO訪問寄存器讀取數據。
未使用的消息緩沖區被讀取時,值未知。
3該圖展示了消息緩沖區的具體分布,
結構如下:
RX普通消息緩沖區
RXMB0~RXMB31
RX FIFO消息緩沖區
RX FIFO0~RX FIFO7
共享FIFO緩沖區
COM FIFO0~COM FIFO5(分別對應于Channel0和Channel1)
TX普通消息緩沖區
TXMB0~TXMB127(分別對應于Channel0和Channel1)
4重點理解
普通RX和TX緩沖區采用直接寄存器訪問。
FIFO緩沖區需要FIFO訪問寄存器進行讀/寫。
FIFO緩沖區的模式(RX/TX/GW)決定了其訪問權限:
TX模式:僅可寫
RX/GW模式:僅可讀
未配置的緩沖區讀取時,其值未知。
下面我們進一步深入了解一下硬件手冊中34.6.2的FIFO緩沖區。
1FIFO緩沖區概述
CANFD模塊提供固定數量的FIFO緩沖區,用于接收(RX)、發送(TX)和網關(GW)功能,適用于不同的CAN通道。
僅用于接收的FIFO緩沖區固定為8個。
每個CAN通道可配置3個共享FIFO緩沖區,這些緩沖區可用于:
發送消息(TX)
接收消息(RX)
網關(GW)
2FIFO緩沖區的配置選項
這些FIFO緩沖區可以啟用或禁用,并且支持以下配置參數:
Size(大小):FIFO緩沖區的容量,即可存儲多少個CAN幀。
Interrupt structure(中斷結構):是否啟用FIFO相關的中斷及其觸發機制。
Message lost mechanism(消息丟失機制):用于處理FIFO緩沖區滿時的消息丟失策略。
Message over write mechanism(消息覆蓋機制):當FIFO緩沖區滿時,是否允許新消息覆蓋舊消息。
Location of the TXFIFO or GWFIFO(TXFIFO或GWFIFO的存儲位置):決定TXFIFO或GWFIFO在CAN通道中的存放位置。
3當接收幀超出數據字段大小時的處理
當接收到的CAN幀超出數據字段大小時,是否接收該幀取決于CFDGCFG.CMPOC位的配置,假如預設置的長度是32,消息拒絕的情況是整個數據幀全部不接收,截斷的情況是只接收32長度的數據,超過的部分截斷后不接收,僅保留配置好的長度數據載荷。
消息拒絕(Reject)
僅保留配置好的長度的數據載荷(Data payload cut)
4重點解析
固定8個RXFIFO,同時CANFD每個通道有3個可配置的共享FIFO(RX/TX/GW)。
FIFO具備丟失、覆蓋、存儲位置、中斷等機制,可適應不同需求。
需要正確配置CFDGCFG.CMPOC以處理數據字段超長的情況。
這部分內容主要涉及CANFD FIFO機制的配置和管理,對于優化CAN通信和提升實時性具有重要作用。
下面我們解析一下普通消息緩沖區的一些基本用法:
1Normal RX Message Buffers功能
CANFD模塊通過AFL(Acceptance Filter List,接收過濾器列表)將不同通道接收的幀路由到配置的Normal RX Message Buffers(常規接收消息緩沖區)。
緩沖區數量:
可配置范圍:0x00(無緩沖區)至最大值=16×CAN通道數。
示例:2個CAN通道時,最大緩沖區數為32(0x20)。
配置寄存器:RX Message Buffer Number Register。
2關鍵配置限制
AFL條目與緩沖區的匹配:
AFL條目數量不可超過RX Message Buffer Number Register中配置的緩沖區數量。
風險提示:CANFD模塊無內部檢查機制,錯誤配置可能導致緩沖區溢出或消息丟失,需用戶自行確保正確性。
3數據字段大小與溢出處理
數據字段配置:
通過CFDRMNB.RMPLS[2:0]位配置,默認8字節,最大支持64字節。
溢出處理策略:
若接收幀超過配置大小,行為由CFDGCFG.CMPOC位決定:
拒絕消息(Message Rejecting)或截斷數據(Data Payload Cut)。
配置注意事項
緩沖區數量:需根據實際通道數計算最大值(如3個通道時,最大緩沖區為48)。
AFL條目:必須與緩沖區數量嚴格匹配,避免超限。
數據截斷風險:若系統要求完整數據幀,需將數據字段大小設為64字節(最大值)并啟用拒絕消息模式。
潛在問題
若AFL條目配置超過緩沖區數量,可能導致未定義行為(如覆蓋其他緩沖區數據)。
增加緩沖區數量會占用更多內存,需根據系統實時性需求平衡配置。
-
緩沖區
+關注
關注
0文章
35瀏覽量
9301 -
寄存器
+關注
關注
31文章
5410瀏覽量
123081 -
CAN
+關注
關注
57文章
2851瀏覽量
466522 -
fifo
+關注
關注
3文章
399瀏覽量
44556
原文標題:帶你解析RZN2L CANFD數據收發緩沖區及例程調試筆記(1)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
解析RZ/N2L CANFD模塊的緩沖區機制(2)

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

評論