![wKgZomaCciuAAdRnAABX6vT-EbQ022.png](https://file1.elecfans.com/web2/M00/F6/9B/wKgZomaCciuAAdRnAABX6vT-EbQ022.png)
首先,簡單介紹一下FSP。瑞薩的Flexibility Software Package(FSP)是一種嵌入式軟件和開發(fā)工具包,提供了集成的軟件平臺,幫助開發(fā)者快速設(shè)計(jì)、開發(fā)和部署嵌入式系統(tǒng)。FSP提供了一系列軟件組件、設(shè)備驅(qū)動程序、操作系統(tǒng)抽象層和中間件,以及與瑞薩微控制器相配套的開發(fā)工具。通過使用FSP,開發(fā)者可以減少開發(fā)時(shí)間和成本,快速構(gòu)建高度可靠、高性能的嵌入式系統(tǒng)。
![wKgZomaCckCAHaXKAACFJTS5DfI014.png](https://file1.elecfans.com/web2/M00/F6/9B/wKgZomaCckCAHaXKAACFJTS5DfI014.png)
通過FSP的圖形化界面可以設(shè)置RA CANFD Lite模塊的引腳和功能,使用FSP生成的函數(shù)可以執(zhí)行CANFD Lite模塊的初始化,發(fā)送&接收數(shù)據(jù),這樣可以加快項(xiàng)目完成,縮短用戶開發(fā)時(shí)間。
而使用FSP如何設(shè)置RA CANFD Lite功能,將從以下幾個(gè)方面進(jìn)行說明:
添加CANFD Lite模塊
在e2 studio雙擊工程中的configuraion.xml文件,在Stacks選項(xiàng)卡中,點(diǎn)擊New Stack,選擇CANFD Lite (r_canfdlite)。
![wKgaomaCczKAfl0tAAHwa6Ok3D0281.png](https://file1.elecfans.com/web2/M00/F7/87/wKgaomaCczKAfl0tAAHwa6Ok3D0281.png)
設(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
![wKgZomaCczKAcD_NAAFiuyu9TTw034.png](https://file1.elecfans.com/web2/M00/F6/9C/wKgZomaCczKAcD_NAAFiuyu9TTw034.png)
設(shè)置引腳
選擇Pins Tab,點(diǎn)擊CANFD0,Pin Group Selection選擇Mixed的情況下,Operation Mode選擇Enabled,CRX0自動選擇P102、CTX0自動選擇P103,也可以通過右側(cè)的下拉箭頭根據(jù)用戶需要選擇其他可用引腳。
![wKgZomaCczKACmWCAAFJD6ETvto309.png](https://file1.elecfans.com/web2/M00/F6/9C/wKgZomaCczKACmWCAAFJD6ETvto309.png)
設(shè)置CANFD Lite模塊屬性
切回Stacks選項(xiàng)卡,選擇CANFD lite,轉(zhuǎn)至Properties窗口(確保當(dāng)前為FSP配置透視圖的情況下,點(diǎn)擊右上方:
![wKgaomaCczKAV1u3AAAqFfooqJc223.png](https://file1.elecfans.com/web2/M00/F7/87/wKgaomaCczKAV1u3AAAqFfooqJc223.png)
打開Properties窗口。
或者通過Window→Show View→Other
![wKgZomaCczOAJ6lGAACE26mVz_U478.png](https://file1.elecfans.com/web2/M00/F6/9C/wKgZomaCczOAJ6lGAACE26mVz_U478.png)
搜索找到Properties窗口
![wKgaomaCczOAR5fFAACo2BAi8AY687.png](https://file1.elecfans.com/web2/M00/F7/87/wKgaomaCczOAR5fFAACo2BAi8AY687.png)
4.1 設(shè)置標(biāo)稱比特率(Nominal Rate)和FD數(shù)據(jù)比特率(FD Data Rate)
可以選擇自動生成比特率或者手動設(shè)置比特率
請注意,如果選擇自動生成比特率,“Use manual settings”一項(xiàng)需要設(shè)置為No。
![wKgaomaCczOAeBdjAACxAdyCSGo531.png](https://file1.elecfans.com/web2/M00/F7/87/wKgaomaCczOAeBdjAACxAdyCSGo531.png)
4.2 修改AFL數(shù)量
由于RA6E2只有Channel 0,所以需要將“Channel 1 Rule Count”一項(xiàng)改為0。
另外,RA6E2的CANFD Lite模塊最多允許32個(gè)AFL條目。
![wKgZomaCczOAc9B9AABdRW0OSWo749.png](https://file1.elecfans.com/web2/M00/F6/9C/wKgZomaCczOAc9B9AABdRW0OSWo749.png)
4.3 設(shè)置使用的TX Mailbox 0(TX MB0)
例如通過TX Mailbox 0(TX MB0)發(fā)送數(shù)據(jù),則勾選“TX MB0”一項(xiàng)。
![wKgaomaCczOASxdfAACKw2Ebduo582.png](https://file1.elecfans.com/web2/M00/F7/87/wKgaomaCczOASxdfAACKw2Ebduo582.png)
4.4 設(shè)置發(fā)送優(yōu)先級
發(fā)送優(yōu)先級有可以選擇CAN ID優(yōu)先(Message ID)或者消息緩沖區(qū)編號優(yōu)先(Buffer Number)。
![wKgZomaCczOAR9c6AAC6EIBekPc589.png](https://file1.elecfans.com/web2/M00/F6/9C/wKgZomaCczOAR9c6AAC6EIBekPc589.png)
4.5 設(shè)置接收MB的數(shù)量和大小
![wKgaomaCczOAMdT-AACz52oRjoU934.png](https://file1.elecfans.com/web2/M00/F7/87/wKgaomaCczOAMdT-AACz52oRjoU934.png)
4.6 設(shè)置接收FIFO的中斷模式、中斷閾值、大小和深度
![wKgZomaCczOATEizAADcONV6zgk008.png](https://file1.elecfans.com/web2/M00/F6/9C/wKgZomaCczOATEizAADcONV6zgk008.png)
請注意,RX MB和FIFO位于有限的RAM區(qū)域中,所以在設(shè)置RX MB和FIFO時(shí),大小和深度的最大值取決于可用的RAM區(qū)域。從FSP v4.3.0開始,如果超出CANFD RAM區(qū)域,F(xiàn)SP會提示錯(cuò)誤。
4.7 設(shè)置Callback函數(shù)名和優(yōu)先級
![wKgaomaCczOAQyYsAACGXDSTkhA125.png](https://file1.elecfans.com/web2/M00/F7/87/wKgaomaCczOAQyYsAACGXDSTkhA125.png)
4.8 設(shè)置通道和全局錯(cuò)誤中斷,根據(jù)用戶實(shí)際需要進(jìn)行勾選
![wKgZomaCczOAIPt9AADGU9k9HZY931.png](https://file1.elecfans.com/web2/M00/F6/9C/wKgZomaCczOAIPt9AADGU9k9HZY931.png)
5
添加AFL
RA CANFD使用AFL條目來過濾接收到的消息,AFL 的主要參數(shù)如下:
![wKgZomaCczOAMsnsAAI_6J5Wk3E887.jpg](https://file1.elecfans.com/web2/M00/F6/9C/wKgZomaCczOAMsnsAAI_6J5Wk3E887.jpg)
點(diǎn)擊查看大圖
例如想接收到以下要求的數(shù)據(jù),那么在hal_entry.c文件中hal_entry()函數(shù)前需要復(fù)制以下const來設(shè)置AFL:
● Classical CAN Bus
● Standard ID (11 bits)
● RX MB 0 (to receive messages IDs 0x40 or 0x41)
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, }, }, };
CANFD相關(guān)API
![wKgaomaCczOAYEtRAAJ3DaARJok237.jpg](https://file1.elecfans.com/web2/M00/F7/87/wKgaomaCczOAYEtRAAJ3DaARJok237.jpg)
點(diǎn)擊查看大圖
用戶代碼中添加初始化函數(shù)、發(fā)送函數(shù)、接收函數(shù)和Callback函數(shù)
7.1 添加幾個(gè)變量聲明和一個(gè)宏定義
/* 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ù)
/* Initialize CANFD Lite driver*/ R_CANFD_Open(&g_canfd0_ctrl, &g_canfd0_cfg);
7.3 添加發(fā)送函數(shù)
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í),添加以下代碼
/* 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ù)
/* 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; } } }
通過以上內(nèi)容,我們可以看到,瑞薩的FSP為嵌入式系統(tǒng)開發(fā)者提供了一種快速、靈活和可靠的軟件開發(fā)平臺,幫助使用者快速將創(chuàng)意轉(zhuǎn)化為端產(chǎn)品,并滿足不同市場的需求。
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351186 -
FSP
+關(guān)注
關(guān)注
0文章
34瀏覽量
7141 -
CANFD
+關(guān)注
關(guān)注
0文章
58瀏覽量
4945
發(fā)布評論請先 登錄
相關(guān)推薦
RA MCU CANFD的應(yīng)用實(shí)例(上)
![<b class='flag-5'>RA</b> <b class='flag-5'>MCU</b> <b class='flag-5'>CANFD</b>的應(yīng)用實(shí)例(上)](https://file1.elecfans.com/web2/M00/AC/08/wKgZomU4ye6AP3E7AAAh6As-6L4937.jpg)
瑞薩RA產(chǎn)品家族通過PSA 2級和SESIP認(rèn)證 進(jìn)一步擴(kuò)大在物聯(lián)網(wǎng)安全領(lǐng)域的領(lǐng)導(dǎo)地位
RA系列使用FSP配置外設(shè)驅(qū)動相關(guān)資料介紹
【瑞薩RA4系列開發(fā)板體驗(yàn)】基于Renesas FSP配置USART
使用RA2E1 MCU和FSP實(shí)現(xiàn)超低設(shè)計(jì)
![使用<b class='flag-5'>RA</b>2E1 <b class='flag-5'>MCU</b>和<b class='flag-5'>FSP</b>實(shí)現(xiàn)超低設(shè)計(jì)](https://file.elecfans.com//web2/M00/3F/0D/poYBAGJmAvuAHSkbAADD87HpsQ8154.jpg)
使用瑞薩e2 studio FSP基于RA2E1定時(shí)器配置PWM輸出
瑞薩MCU RA6T2的16位模數(shù)轉(zhuǎn)換器操作 [4] 配置RA6T2 ADC模塊 (1)
![瑞薩<b class='flag-5'>MCU</b> <b class='flag-5'>RA</b>6T2的16位模數(shù)轉(zhuǎn)換器操作 [4] <b class='flag-5'>配置</b><b class='flag-5'>RA</b>6T2 ADC模塊 (1)](https://file1.elecfans.com/web2/M00/8D/DA/wKgZomTA0P-ATvNiAAAhS9ol-Jc109.jpg)
RA MCU CAN和CANFD IP介紹
![<b class='flag-5'>RA</b> <b class='flag-5'>MCU</b> CAN和<b class='flag-5'>CANFD</b> IP介紹](https://file1.elecfans.com/web2/M00/8E/8C/wKgaomTHxvOABfPAAAADbu4X9Ec396.gif)
RA MCU CAN和CANFD IP介紹
![<b class='flag-5'>RA</b> <b class='flag-5'>MCU</b> CAN和<b class='flag-5'>CANFD</b> IP介紹](https://file1.elecfans.com/web2/M00/BB/1B/wKgZomWXtb6ACk_NAAARMuEl9ZA261.png)
RA Overwrite模式在FSP中的支持
![<b class='flag-5'>RA</b> Overwrite模式<b class='flag-5'>在</b><b class='flag-5'>FSP</b><b class='flag-5'>中</b>的支持](https://file1.elecfans.com/web2/M00/EE/25/wKgaomZqXzSAUxZRAAATebl6RjI832.png)
評論