本篇文章將以RA6E2為例,介紹如何使用瑞薩電子FSP CAN-FD lite的堆棧來設(shè)計和實現(xiàn)基于CAN的簡易系統(tǒng)。最后,使用兩套FPB-RA6E2和CAN收發(fā)器模塊通過CAN實現(xiàn)相互通信,按下一塊板上的按鍵S1會發(fā)送CANFD數(shù)據(jù)。
1安裝和準(zhǔn)備
本節(jié)要點(diǎn):
本節(jié)學(xué)習(xí)如何搭建應(yīng)用實例以及如何將套件連接至電腦端。
1.1 首先確保已安裝所有實例工具
e2 studio 2023-01及以上版本
FSP 4.3.0及以上版本
GCC ARM Embedded 10.3.1.20210824及以上版本
下載e2 studio 2023-04 + FSP 4.4.0
1.2 本實例將用到如下組件
兩塊FPB-RA6E2,兩塊CANFD收發(fā)器模塊,兩根USB micro-B線,十三根跳線。
CANFD收發(fā)器模塊,由瑞薩AE自制,如果有需要,請聯(lián)絡(luò)瑞薩銷售或者代理。也可使用其他CANFD收發(fā)器模塊。
1.3 使用杜邦線連接FPB板和CANFD收發(fā)器模塊
FPB-RA6E2和CANFD收發(fā)器模塊的連接方式:
FPB-RA6E2的J3:2(P401)與CANFD收發(fā)器模塊的CTX相接(母轉(zhuǎn)母杜邦線)
FPB-RA6E2的J3:3(P402)與CANFD收發(fā)器模塊的CRX相接(母轉(zhuǎn)母杜邦線)
FPB-RA6E2的J2:6(GND)與CANFD收發(fā)器模塊的GND相接(公轉(zhuǎn)母杜邦線)
FPB-RA6E2的J2:4(3.3V)與CANFD收發(fā)器模塊的3V3相接(公轉(zhuǎn)母杜邦線)
FPB-RA6E2的J2:5(5V)與CANFD收發(fā)器模塊的5V相接(公轉(zhuǎn)母杜邦線)
2塊CANFD收發(fā)器模塊的連接方式:
使用3根母轉(zhuǎn)母杜邦線分別連接兩個收發(fā)器模塊上的CANH、CANL和GND。
1.4 連接示意
1.5 使用Micro USB連接FPB-RA6E2,Micro USB一端接PC,另一端接FPB-RA6E2的J8。驗證如下現(xiàn)象:
Debug USB端口(J8)附近的綠色LED(POWER)是否亮起且不閃爍。
板子右上角的橙色LED(LED6)是否亮起。
2CANFD:創(chuàng)建FPB-RA6E2 Blinky工程
本節(jié)要點(diǎn):
本節(jié)學(xué)習(xí)項目開發(fā),熟悉e2 studio和FSP,創(chuàng)建簡單的Blinky工程,驗證FPB-RA6E2可以正常運(yùn)行。
2.1 運(yùn)行e2 studio,并打開workspace執(zhí)行如下步驟:
在菜單中選擇“New”。
下拉菜單中選擇“Renesas RA”。
2.2 輸入fpb_ra6e2_canfd_lab,您也可以自定義名稱。(但是不可以有中文、特殊字符)
2.3 選擇FPB-RA6E2,確保您使用的是FSP 4.3.0及以上,確保GCC版本為10.3.1.20210824:
2.4 下一頁面選擇默認(rèn)選項。
●工程類型:Flat (Non-TrustZone) Project
● RTOS選擇:No RTOS
最后一個頁面選擇Bare Metal - Blinky
2.5 如果系統(tǒng)提示打開“Configuration”透視圖,請單擊“Open Perspective”。
2.6 打開FSP Configuration
如果仍未打開,請在預(yù)覽窗口雙擊 configuration.xml 文件。
2.7 點(diǎn)擊編譯代碼。
2.8 高亮fpb_ra6e2_canfd_lab工程
按下調(diào)試按鈕
2.9 運(yùn)行代碼
檢查FPB-RA6E2板上的兩個綠色LED(LED1和LED2)燈是否同步閃爍。
2.10 按下斷開按鈕
3CANFD:發(fā)送CANFD數(shù)據(jù)
本節(jié)要點(diǎn):
本節(jié)學(xué)習(xí)如何發(fā)送CANFD數(shù)據(jù),要求按下任意一塊FPB-RA6E2板上的S1按鈕后,發(fā)送CANFD數(shù)據(jù)。
3.1 打開FSP Configuration
如果仍未打開,請在預(yù)覽窗口雙擊configuration.xml文件。
3.2 選擇Pins Tab,點(diǎn)擊 IRQ,確認(rèn)目前IRQ9已設(shè)為P304:
3.3 設(shè)置Stacks
點(diǎn)擊New Stack,選擇External IRQ (r_icu)。
3.4 設(shè)置External IRQ (r_icu)的屬性
Name: g_external_irq
Channel: 9
Digital Filtering: Enabled
Callback: user_irq_callback
3.5 點(diǎn)擊生成代碼
3.6 在Project Explorer窗口,雙擊src文件夾下的hal_entry.c文件。
在26行添加以下內(nèi)容:
左右滑動查看更多
#define APP_ERR_TRAP() __asm("BKPT #0 ") /* trap upon the error */ /* Boolean flag to determine switch is pressed or not.*/ volatile bool g_sw_press = false;
3.7 在hal_entry函數(shù)中第43行添加下方內(nèi)容(API可以通過從Developer Assistance下面拖拽的方式完成):
左右滑動查看更多
fsp_err_t err = FSP_SUCCESS; /* Initialize External IRQ driver*/ err = R_ICU_ExternalIrqOpen(&g_external_irq_ctrl, &g_external_irq_cfg); if(FSP_SUCCESS != err) { APP_ERR_TRAP(); } /* Enable External IRQ driver*/ err = R_ICU_ExternalIrqEnable(&g_external_irq_ctrl); /* Handle error */ if(FSP_SUCCESS != err) { APP_ERR_TRAP(); }
3.8 hal_entry.c文件中R_BSP_WarmStart()后,添加callback函數(shù)(也可以通過從Developer Assistance下面拖拽的方式完成)。
左右滑動查看更多
/* Callback function */ void user_irq_callback(external_irq_callback_args_t *p_args) { /* TODO: add your own code here */ fsp_err_t err = FSP_SUCCESS; /* Make sure it's the right interrupt*/ if(9 == p_args->channel) { g_sw_press = true; } }
3.9 點(diǎn)擊編譯代碼。
3.10 高亮fpb_ra6e2_canfd_lab工程
按下調(diào)試按鈕
3.11 在user_irq_callback中設(shè)置斷點(diǎn)(126行左側(cè)地址或者行數(shù)顯示處雙擊鼠標(biāo)左鍵)。
3.12 運(yùn)行代碼,并確認(rèn)按下板上S1時,能正確進(jìn)入callback中。
確認(rèn)后,請將這個斷點(diǎn)取消(斷點(diǎn)處雙擊鼠標(biāo)左鍵)。
3.13 選擇Pins Tab,點(diǎn)擊CANFD0,Pin Group Selection選擇_B Only的情況下,Operation Mode選擇Enabled,發(fā)生引腳使用沖突。
在Ports中找到P402,打開Mode的下拉菜單點(diǎn)擊Disabled,由于已經(jīng)設(shè)置了CANFD的引腳,此時Mode會自動切換為Peripheral mode,并確認(rèn)當(dāng)前P402為CANFD0_CRX0。
同樣地,修改P401的設(shè)置。
經(jīng)過以上修改,可以看到Pins Tab上的error就沒有了。
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351181 -
收發(fā)器
+關(guān)注
關(guān)注
10文章
3428瀏覽量
105997 -
瑞薩電子
+關(guān)注
關(guān)注
37文章
2866瀏覽量
72207 -
CANFD
+關(guān)注
關(guān)注
0文章
58瀏覽量
4945
原文標(biāo)題:RA MCU CANFD應(yīng)用實例(上)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論