在工業(yè)自動(dòng)化、智能交通、機(jī)器人等領(lǐng)域,CANFD(CAN with Flexible Data-Rate)技術(shù)正逐步取代傳統(tǒng)CAN,以適應(yīng)更高的數(shù)據(jù)速率和更復(fù)雜的通信需求。本文將深入解析RZ/N2L CANFD模塊的緩沖區(qū)機(jī)制,幫助工程師更高效地管理CAN消息,提高系統(tǒng)性能。(下面的內(nèi)容主要涉及RZN2L CANFD外設(shè)手冊(cè)的解讀,篇幅較長,感興趣的讀者可以收藏,以備日后不時(shí)之需)
RZN2L CAN-FD模塊提供高達(dá)8 Mbps的數(shù)據(jù)速率,支持豐富的緩沖管理機(jī)制(獨(dú)立緩沖、FIFO緩沖、共享緩沖),提供完整的消息過濾、錯(cuò)誤檢測(cè)、消息路由及傳輸管理,同時(shí)具備低功耗模式和測(cè)試功能,適用于工業(yè)控制、汽車電子、自動(dòng)化系統(tǒng)等需要高可靠性和高性能通信的應(yīng)用。
接著前面的章節(jié),下面了解一下在FIFO模式下的共享FIFO緩沖區(qū)的配置:
1共享FIFO緩沖區(qū)的模式配置
配置寄存器:通過CFDCFCCn.CFM[1:0]位設(shè)置共享FIFO緩沖區(qū)的模式。
00b(RX模式):默認(rèn)模式,僅允許從RX FIFO或配置為RX的共享FIFO讀取消息(消息存儲(chǔ)基于AFL條目)。
01b(TX模式):消息可以讀寫到以TX模式配置的共享FIFO緩沖區(qū)中,寫入的消息會(huì)被發(fā)送到對(duì)應(yīng)CAN通道。
10b(GW模式):僅允許讀取消息,但CPU讀取操作不改變讀寫指針(指針由CANFD模塊自動(dòng)管理)。
11b(保留模式):禁止寫入,否則可能導(dǎo)致未定義行為。
2GW模式下的緩沖區(qū)滿處理策略
行為控制位:由CFDCFCCEn.CFMOWM位決定緩沖區(qū)滿時(shí)的操作:
CFMOWM=0:丟棄新消息,并置位CFDCFSTSn.CFMLT標(biāo)志。
CFMOWM=1:覆蓋最舊數(shù)據(jù),讀指針自動(dòng)指向下一個(gè)舊消息,并置位CFDCFSTSn.CFMOW標(biāo)志。
錯(cuò)誤處理:
在發(fā)送緩沖區(qū)滿且發(fā)生總線錯(cuò)誤或仲裁丟失時(shí),消息丟失且不重傳,讀指針自動(dòng)后移。
3關(guān)鍵注意事項(xiàng)
硬件復(fù)位后狀態(tài):所有共享FIFO緩沖區(qū)默認(rèn)處于RX模式,需配置完成后再啟用。
指針管理:
GW模式:指針僅由CANFD模塊控制(如新消息存儲(chǔ)或發(fā)送完成時(shí))。
TX/RX模式:指針由CPU讀寫操作直接管理。
保留值風(fēng)險(xiǎn):不可配置為11b,否則可能引發(fā)系統(tǒng)異常。
配置建議
1模式選擇:
RX模式:適用于純接收?qǐng)鼍埃ㄈ?a href="http://www.tjjbhg.com/v/tag/117/" target="_blank">傳感器數(shù)據(jù)采集)。
TX模式:適用于需主動(dòng)發(fā)送消息的場(chǎng)景(如控制指令下發(fā))。
GW模式:適用于網(wǎng)關(guān)或數(shù)據(jù)轉(zhuǎn)發(fā)場(chǎng)景(需自動(dòng)管理緩沖區(qū))。
2溢出策略:
若需保留歷史數(shù)據(jù),選擇CFMOWM=0(丟棄新消息)。
若需保證最新數(shù)據(jù),選擇CFMOWM=1(覆蓋舊數(shù)據(jù))。
3錯(cuò)誤處理:
在GW模式下,需結(jié)合總線監(jiān)控機(jī)制,避免因仲裁丟失或錯(cuò)誤導(dǎo)致關(guān)鍵消息丟失。
潛在問題
指針不一致:在GW模式下,若手動(dòng)操作指針可能導(dǎo)致數(shù)據(jù)錯(cuò)亂,需嚴(yán)格依賴模塊自動(dòng)管理。
配置順序錯(cuò)誤:未完成模式配置前啟用FIFO緩沖區(qū),可能導(dǎo)致消息路由異常。
關(guān)于FIFOTX消息緩沖區(qū)的鏈接配置的解讀:
1FIFO TX消息緩沖區(qū)鏈接的必要性
應(yīng)用場(chǎng)景:當(dāng)共享FIFO配置為TX模式或GW模式時(shí),必須將其鏈接至一個(gè)Normal TX消息緩沖區(qū),以參與CAN通道的傳輸掃描。
核心作用:通過鏈接實(shí)現(xiàn)FIFO緩沖區(qū)與CAN通道的通信調(diào)度,確保數(shù)據(jù)傳輸?shù)膮f(xié)調(diào)性。
2關(guān)鍵配置規(guī)則
唯一性約束:
每個(gè)共享FIFO必須鏈接到唯一的TX消息緩沖區(qū),禁止多個(gè)FIFO共享同一緩沖區(qū)(避免數(shù)據(jù)沖突)
操作限制:
禁止向已鏈接的TX消息緩沖區(qū)直接寫入數(shù)據(jù)。
鏈接的TX消息緩沖區(qū)不可加入TX隊(duì)列(避免干擾FIFO傳輸邏輯)。
3配置方法
寄存器設(shè)置:通過CFDCFCCn.CFTML[4:0]位(5位字段)配置鏈接的TX消息緩沖區(qū)編號(hào)。
可選范圍:
0x00→TX Message Buffer 32
0x01→TX Message Buffer 33
...
0x1F→TX Message Buffer 63
緩沖區(qū)總數(shù):共32個(gè)專用TX消息緩沖區(qū)(編號(hào)3263)。
4注意事項(xiàng)
配置沖突風(fēng)險(xiǎn):若兩個(gè)FIFO鏈接到同一緩沖區(qū),可能導(dǎo)致數(shù)據(jù)覆蓋或傳輸錯(cuò)誤。
范圍限制:必須確保CFDCFCCn.CFTML[4:0]的值在0x000x1F范圍內(nèi)(超出會(huì)導(dǎo)致未定義行為)。
配置流程建議
1分配緩沖區(qū):
根據(jù)系統(tǒng)需求,為每個(gè)TX/GW模式的共享FIFO分配唯一的TX消息緩沖區(qū)(從32到63中選擇)。
2寄存器寫入:
通過CFDCFCCn.CFTML[4:0]位設(shè)置對(duì)應(yīng)的緩沖區(qū)編號(hào)。
3驗(yàn)證隔離性:
確保鏈接的緩沖區(qū)未加入TX隊(duì)列,且未被其他FIFO占用。
潛在問題與解決
傳輸失敗:若未正確鏈接緩沖區(qū),可能導(dǎo)致FIFO無法參與傳輸掃描,需檢查CFDCFCCn.CFTML配置。
數(shù)據(jù)丟失:若多個(gè)FIFO共享同一緩沖區(qū),需重新分配緩沖區(qū)編號(hào)并更新寄存器設(shè)置。
示例配置
FIFO1:配置為TX模式,鏈接至TXMessageBuffer32(CFTML[4:0]=0x00)。
FIFO2:配置為GW模式,鏈接至TXMessageBuffer33(CFTML[4:0]=0x01)。
其他FIFO:依此類推,確保編號(hào)唯一。
下面是關(guān)于FIFO深度配置的解讀:
1FIFO深度配置
(FIFO Depth Configuration)
配置寄存器:
RX FIFO:通過CFDRFCCn.RFDC[2:0]位設(shè)置深度。
共享FIFO:通過CFDCFCCn.CFDC[2:0]位設(shè)置深度。
關(guān)鍵限制:
RAM分配上限:總消息數(shù)(RX消息緩沖區(qū)+FIFO緩沖區(qū))不得超過((n+1)*256),n為CAN通道數(shù)或其他參數(shù))。
用戶需自行確保配置不超限,否則可能導(dǎo)致內(nèi)存溢出或數(shù)據(jù)丟失。
鏈接有效性條件:
當(dāng)共享FIFO深度≥4消息時(shí),其TX消息緩沖區(qū)鏈接始終有效(無論FIFO是否啟用)。
若深度為0,鏈接無效。
2FIFO有效載荷大小配置
(FIFO Payload Size Configuration)
配置寄存器:
RX FIFO:通過CFDRFCCn.RFDC[2:0]位設(shè)置深度。
共享FIFO:通過CFDCFCCn.CFDC[2:0]位設(shè)置深度。
默認(rèn)值:8字節(jié)(寄存器值000b)。
配置注意事項(xiàng)
1深度與鏈接關(guān)系:
若需使用共享FIFO的TX消息緩沖區(qū)鏈接,必須確保其深度≥4消息。
深度為0時(shí),F(xiàn)IFO無法啟用且鏈接無效。
2性能與容量權(quán)衡:
增加FIFO深度可緩存更多消息,但會(huì)占用更多RAM。
增大有效載荷支持更大數(shù)據(jù)幀,但可能降低實(shí)時(shí)性(需匹配總線速率)。
潛在問題與解決方案
配置超限風(fēng)險(xiǎn):若總消息數(shù)超過RAM上限,需減少FIFO深度或調(diào)整RX消息緩沖區(qū)數(shù)量。
無效鏈接操作:若深度<4時(shí)嘗試啟用鏈接,需檢查CFDCFCCn.CFDC[2:0]值并重新配置。
數(shù)據(jù)截?cái)啵喝艚邮諑^配置的有效載荷大小,需結(jié)合CFDGCFG.CMPOC位設(shè)置處理策略(見前文解析)。
示例配置
1共享FIFO配置:
模式:TX模式(CFDCFCCn.CFM[1:0]=01b)。
深度:16消息(CFDCFCCn.CFDC[2:0]=011b)。
有效載荷:64字節(jié)(CFDCFCCn.CFPLS[2:0]=111b)。
TX緩沖區(qū)鏈接:TXMessageBuffer32(CFDCFCCn.CFTML[4:0]=0x00)。
2RXFIFO配置:
深度:32消息(CFDRFCCn.RFDC[2:0]=100b)。
有效載荷:32字節(jié)(CFDRFCCn.RFPLS[2:0]=101b)。
-
緩沖區(qū)
+關(guān)注
關(guān)注
0文章
36瀏覽量
9345 -
寄存器
+關(guān)注
-
fifo
+關(guān)注
關(guān)注
3文章
400瀏覽量
44726 -
CANFD
+關(guān)注
關(guān)注
0文章
81瀏覽量
5291
原文標(biāo)題:帶你解析RZN2L CANFD數(shù)據(jù)收發(fā)緩沖區(qū)及例程調(diào)試筆記(2)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
解析RZ/N2L CANFD模塊的緩沖區(qū)機(jī)制(1)

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

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

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

RZ/T2M, RZ/T2L, RZ/N2L電機(jī)解決方案套件數(shù)據(jù)手冊(cè)

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

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

評(píng)論