在瑞薩RA系列MCU產(chǎn)品中,目前RA4E2、RA4T1、RA6E2、RA6T2和RA6T3搭載了CANFD Lite(硬件手冊(cè)中成為CANFD_B)模塊,相關(guān)的詳細(xì)IP介紹,請(qǐng)參見(jiàn)之前的文章
本篇將為您介紹如何使用FSP配置CANFD Lite模塊,請(qǐng)注意與RA6M5搭載的CANFD模塊的配置略有區(qū)別,這里不詳細(xì)講述。
首先,簡(jiǎn)單介紹一下FSP。瑞薩的Flexibility Software Package(FSP)是一種嵌入式軟件和開(kāi)發(fā)工具包,提供了集成的軟件平臺(tái),幫助開(kāi)發(fā)者快速設(shè)計(jì)、開(kāi)發(fā)和部署嵌入式系統(tǒng)。FSP提供了一系列軟件組件、設(shè)備驅(qū)動(dòng)程序、操作系統(tǒng)抽象層和中間件,以及與瑞薩微控制器相配套的開(kāi)發(fā)工具。通過(guò)使用FSP,開(kāi)發(fā)者可以減少開(kāi)發(fā)時(shí)間和成本,快速構(gòu)建高度可靠、高性能的嵌入式系統(tǒng)。
FSP具有以下特點(diǎn)和優(yōu)勢(shì):
靈活性和可擴(kuò)展性:FSP支持瑞薩廣泛的微控制器產(chǎn)品系列,使開(kāi)發(fā)者能夠選擇適合其需求的合適解決方案。
高度集成的軟件平臺(tái):FSP提供了一整套軟件組件,包括設(shè)備驅(qū)動(dòng)程序、操作系統(tǒng)抽象層和中間件,簡(jiǎn)化了系統(tǒng)開(kāi)發(fā)流程。
快速上手和開(kāi)發(fā):FSP提供了豐富的示例代碼、開(kāi)發(fā)工具和文檔,使開(kāi)發(fā)者能夠快速開(kāi)始開(kāi)發(fā)工作,并加速產(chǎn)品上市時(shí)間。
兼容性和維護(hù)性:FSP基于開(kāi)放標(biāo)準(zhǔn),并與瑞薩的先進(jìn)開(kāi)發(fā)工具集成,可以輕松集成第三方軟件和工具,同時(shí)享受瑞薩長(zhǎng)期的技術(shù)支持和維護(hù)。
通過(guò)FSP的圖形化界面可以設(shè)置RA CANFD Lite模塊的引腳和功能,使用FSP生成的函數(shù)可以執(zhí)行CANFD Lite模塊的初始化,發(fā)送&接收數(shù)據(jù),這樣可以加快項(xiàng)目完成,縮短用戶開(kāi)發(fā)時(shí)間。
而使用FSP如何設(shè)置RA CANFD Lite功能,將從以下幾個(gè)方面進(jìn)行說(shuō)明:
1添加CANFD Lite模塊
在e2 studio雙擊工程中的configuraion.xml文件,在Stacks選項(xiàng)卡中,點(diǎn)擊New Stack,選擇CANFD Lite (r_canfdlite)。
2設(shè)置時(shí)鐘
CANFD時(shí)鐘默認(rèn)為禁用狀態(tài)。選擇Clocks選項(xiàng)卡,將CANFDCLK設(shè)置為40MHz:
將PLL(鎖相環(huán))分頻器改為Div / 2
將PLL乘法器改為Mul x16.0
將CANFDCLK改為Src: PLL
將CANFDCLK分頻器改為Div /4
3設(shè)置引腳
選擇Pins Tab,點(diǎn)擊CANFD0,Pin Group Selection選擇Mixed的情況下,Operation Mode選擇Enabled,CRX0自動(dòng)選擇P102、CTX0自動(dòng)選擇P103,也可以通過(guò)右側(cè)的下拉箭頭根據(jù)用戶需要選擇其他可用引腳。
4設(shè)置CANFD Lite模塊屬性
切回Stacks選項(xiàng)卡,選擇CANFD lite,轉(zhuǎn)至Properties窗口(確保當(dāng)前為FSP配置透視圖的情況下,點(diǎn)擊右上方:
打開(kāi)Properties窗口。
或者通過(guò)Window→Show View→Other
搜索找到Properties窗口
4.1 設(shè)置標(biāo)稱比特率(Nominal Rate)和FD數(shù)據(jù)比特率(FD Data Rate)
可以選擇自動(dòng)生成比特率或者手動(dòng)設(shè)置比特率
請(qǐng)注意,如果選擇自動(dòng)生成比特率,“Use manual settings”一項(xiàng)需要設(shè)置為No。
4.2 修改AFL數(shù)量
由于RA6E2只有Channel 0,所以需要將“Channel 1 Rule Count”一項(xiàng)改為0。
另外,RA6E2的CANFD Lite模塊最多允許32個(gè)AFL條目。
4.3 設(shè)置使用的TX Mailbox 0(TX MB0)
例如通過(guò)TX Mailbox 0(TX MB0)發(fā)送數(shù)據(jù),則勾選“TX MB0”一項(xiàng)。
4.4 設(shè)置發(fā)送優(yōu)先級(jí)
發(fā)送優(yōu)先級(jí)有可以選擇CAN ID優(yōu)先(Message ID)或者消息緩沖區(qū)編號(hào)優(yōu)先(Buffer Number)。
4.5 設(shè)置接收MB的數(shù)量和大小
4.6 設(shè)置接收FIFO的中斷模式、中斷閾值、大小和深度
請(qǐng)注意,RX MB和FIFO位于有限的RAM區(qū)域中,所以在設(shè)置RX MB和FIFO時(shí),大小和深度的最大值取決于可用的RAM區(qū)域。從FSP v4.3.0開(kāi)始,如果超出CANFD RAM區(qū)域,F(xiàn)SP會(huì)提示錯(cuò)誤。
4.7 設(shè)置Callback函數(shù)名和優(yōu)先級(jí)
4.8 設(shè)置通道和全局錯(cuò)誤中斷,根據(jù)用戶實(shí)際需要進(jìn)行勾選
5添加AFL
RA CANFD使用AFL條目來(lái)過(guò)濾接收到的消息,AFL 的主要參數(shù)如下:
點(diǎn)擊查看大圖
例如想接收到以下要求的數(shù)據(jù),那么在hal_entry.c文件中hal_entry()函數(shù)前需要復(fù)制以下const來(lái)設(shè)置AFL:
Classical CAN Bus
Standard ID (11 bits)
RX MB 0 (to receive messages IDs 0x40 or 0x41)
左右滑動(dòng)查看更多
const canfd_afl_entry_t p_canfd0_afl[CANFD_CFG_AFL_CH0_RULE_NUM] = { { .id = { .id = 0x40, .frame_type = CAN_FRAME_TYPE_DATA, .id_mode = CAN_ID_MODE_STANDARD, }, .mask = { .mask_id = 0x7FE, .mask_frame_type = 0, .mask_id_mode = 1, }, .destination = { .minimum_dlc = CANFD_MINIMUM_DLC_0, .rx_buffer = CANFD_RX_MB_0, }, }, };
6CANFD相關(guān)API
點(diǎn)擊查看大圖
7用戶代碼中添加初始化函數(shù)、發(fā)送函數(shù)、接收函數(shù)和Callback函數(shù)
7.1 添加幾個(gè)變量聲明和一個(gè)宏定義
左右滑動(dòng)查看更多
/* Flags to be set in Callback function */ bool b_canfd_tx_complete = false; bool b_canfd_rx_complete = false; bool b_canfd_err_status = false; /* CANFD RX and TX variables */ can_frame_t g_can_tx_frame; can_frame_t g_can_rx_frame; can_frame_t g_can_rx_frame_fifo; uint8_t tx_data[64]; #define DATA_LENGTH (8)
7.2 添加初始化函數(shù)
左右滑動(dòng)查看更多
/* Initialize CANFD Lite driver*/ R_CANFD_Open(&g_canfd0_ctrl, &g_canfd0_cfg);
7.3 添加發(fā)送函數(shù)
左右滑動(dòng)查看更多
for( uint16_t i = 0; i < DATA_LENGTH; i++) ? ? ? ?{ ? ? ? ? ? ?tx_data[i] ? ? ? ? ?= (uint8_t) (i + 1); ? ? ? ?} ? ? ? ?memcpy((uint8_t*)&g_can_tx_frame.data[0], (uint8_t*)&tx_data[0], DATA_LENGTH); ? ? ? ?g_can_tx_frame.id ? ? ? ? ? ? ? = 0x60; ? ? ? ?g_can_tx_frame.id_mode ? ? ? ? ?= CAN_ID_MODE_STANDARD; ? ? ? ?g_can_tx_frame.type ? ? ? ? ? ? = CAN_FRAME_TYPE_DATA; ? ? ? ?g_can_tx_frame.data_length_code = 64;//8; ? ? ? ?g_can_tx_frame.options ? ? ? ? ?= CANFD_FRAME_OPTION_FD | CANFD_FRAME_OPTION_BRS;//0; ? ? ? ?g_can_tx_frame.options ? ? ? ? ?= 0; ? ? ? ?/* Write some data to the transmit frame */ ? ? ? ?R_CANFD_Write(&g_canfd0_ctrl, 0, &g_can_tx_frame);
7.4 當(dāng)使用RX MB接收數(shù)據(jù)時(shí),添加以下代碼
左右滑動(dòng)查看更多
/* Get the status information for CAN transmission */ R_CANFD_InfoGet(&g_canfd0_ctrl, &can_rx_info); /* Check if the data is received in FIFO */ if((can_rx_info.rx_mb_status & (1<<0)) == (1<<0)) ? ? ? ?{ ? ? ? ? ? ?/* Read the input frame received */ ? ? ? ? ? ?R_CANFD_Read(&g_canfd0_ctrl, 0, &g_can_rx_frame); ? ? ? ?}
7.5 添加Callback函數(shù)
左右滑動(dòng)查看更多
使用FIFO接收時(shí),需要在Callback中讀取接收到的數(shù)據(jù)。
/* Callback function */ void canfd0_callback(can_callback_args_t *p_args) { /* TODO: add your own code here */ switch (p_args->event) { case CAN_EVENT_TX_COMPLETE: { b_canfd_tx_complete = true; //set flag bit break; } case CAN_EVENT_RX_COMPLETE: // Currently driver don't support this. This is unreachable code for now. { b_canfd_rx_complete = true; memcpy(&g_can_rx_frame, &p_args->frame, sizeof(can_frame_t)); break; } case CAN_EVENT_ERR_WARNING: //error warning event case CAN_EVENT_ERR_PASSIVE: //error passive event case CAN_EVENT_ERR_BUS_OFF: //error Bus Off event case CAN_EVENT_BUS_RECOVERY: //Bus recovery error event case CAN_EVENT_MAILBOX_MESSAGE_LOST: //overwrite/overrun error event case CAN_EVENT_ERR_BUS_LOCK: // Bus lock detected (32 consecutive dominant bits). case CAN_EVENT_ERR_CHANNEL: // Channel error has occurred. case CAN_EVENT_TX_ABORTED: // Transmit abort event. case CAN_EVENT_ERR_GLOBAL: // Global error has occurred. case CAN_EVENT_FIFO_MESSAGE_LOST: // Transmit FIFO is empty. case CAN_EVENT_TX_FIFO_EMPTY: // Transmit FIFO is empty. { b_canfd_err_status = true; //set flag bit break; } } }
通過(guò)以上內(nèi)容,我們可以看到,瑞薩的FSP為嵌入式系統(tǒng)開(kāi)發(fā)者提供了一種快速、靈活和可靠的軟件開(kāi)發(fā)平臺(tái),幫助使用者快速將創(chuàng)意轉(zhuǎn)化為端產(chǎn)品,并滿足不同市場(chǎng)的需求。
審核編輯:湯梓紅
-
微控制器
+關(guān)注
關(guān)注
48文章
7454瀏覽量
150850 -
mcu
+關(guān)注
關(guān)注
146文章
16885瀏覽量
349912 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3551瀏覽量
129103 -
瑞薩
+關(guān)注
關(guān)注
34文章
22282瀏覽量
85938 -
FSP
+關(guān)注
關(guān)注
0文章
34瀏覽量
7100
原文標(biāo)題:RA MCU CANFD在FSP中的配置詳解
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論