本篇文章將以RA6E2為例,介紹如何使用瑞薩電子FSP CAN-FD lite的堆棧來設計和實現基于CAN的簡易系統。最后,使用兩套FPB-RA6E2和CAN收發器模塊通過CAN實現相互通信,按下一塊板上的按鍵S1會發送CANFD數據。
1安裝和準備
本節要點:
本節學習如何搭建應用實例以及如何將套件連接至電腦端。
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收發器模塊,兩根USB micro-B線,十三根跳線。
CANFD收發器模塊,由瑞薩AE自制,如果有需要,請聯絡瑞薩銷售或者代理。也可使用其他CANFD收發器模塊。
1.3 使用杜邦線連接FPB板和CANFD收發器模塊
FPB-RA6E2和CANFD收發器模塊的連接方式:
FPB-RA6E2的J3:2(P401)與CANFD收發器模塊的CTX相接(母轉母杜邦線)
FPB-RA6E2的J3:3(P402)與CANFD收發器模塊的CRX相接(母轉母杜邦線)
FPB-RA6E2的J2:6(GND)與CANFD收發器模塊的GND相接(公轉母杜邦線)
FPB-RA6E2的J2:4(3.3V)與CANFD收發器模塊的3V3相接(公轉母杜邦線)
FPB-RA6E2的J2:5(5V)與CANFD收發器模塊的5V相接(公轉母杜邦線)
2塊CANFD收發器模塊的連接方式:
使用3根母轉母杜邦線分別連接兩個收發器模塊上的CANH、CANL和GND。
1.4 連接示意
1.5 使用Micro USB連接FPB-RA6E2,Micro USB一端接PC,另一端接FPB-RA6E2的J8。驗證如下現象:
Debug USB端口(J8)附近的綠色LED(POWER)是否亮起且不閃爍。
板子右上角的橙色LED(LED6)是否亮起。
2CANFD:創建FPB-RA6E2 Blinky工程
本節要點:
本節學習項目開發,熟悉e2 studio和FSP,創建簡單的Blinky工程,驗證FPB-RA6E2可以正常運行。
2.1 運行e2 studio,并打開workspace執行如下步驟:
在菜單中選擇“New”。
下拉菜單中選擇“Renesas RA”。
2.2 輸入fpb_ra6e2_canfd_lab,您也可以自定義名稱。(但是不可以有中文、特殊字符)
2.3 選擇FPB-RA6E2,確保您使用的是FSP 4.3.0及以上,確保GCC版本為10.3.1.20210824:
2.4 下一頁面選擇默認選項。
●工程類型:Flat (Non-TrustZone) Project
● RTOS選擇:No RTOS
最后一個頁面選擇Bare Metal - Blinky
2.5 如果系統提示打開“Configuration”透視圖,請單擊“Open Perspective”。
2.6 打開FSP Configuration
如果仍未打開,請在預覽窗口雙擊 configuration.xml 文件。
2.7 點擊編譯代碼。
2.8 高亮fpb_ra6e2_canfd_lab工程
按下調試按鈕
2.9 運行代碼
檢查FPB-RA6E2板上的兩個綠色LED(LED1和LED2)燈是否同步閃爍。
2.10 按下斷開按鈕
3CANFD:發送CANFD數據
本節要點:
本節學習如何發送CANFD數據,要求按下任意一塊FPB-RA6E2板上的S1按鈕后,發送CANFD數據。
3.1 打開FSP Configuration
如果仍未打開,請在預覽窗口雙擊configuration.xml文件。
3.2 選擇Pins Tab,點擊 IRQ,確認目前IRQ9已設為P304:
3.3 設置Stacks
點擊New Stack,選擇External IRQ (r_icu)。
3.4 設置External IRQ (r_icu)的屬性
Name: g_external_irq
Channel: 9
Digital Filtering: Enabled
Callback: user_irq_callback
3.5 點擊生成代碼
3.6 在Project Explorer窗口,雙擊src文件夾下的hal_entry.c文件。
在26行添加以下內容:
左右滑動查看更多
#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函數中第43行添加下方內容(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函數(也可以通過從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 點擊編譯代碼。
3.10 高亮fpb_ra6e2_canfd_lab工程
按下調試按鈕
3.11 在user_irq_callback中設置斷點(126行左側地址或者行數顯示處雙擊鼠標左鍵)。
3.12 運行代碼,并確認按下板上S1時,能正確進入callback中。
確認后,請將這個斷點取消(斷點處雙擊鼠標左鍵)。
3.13 選擇Pins Tab,點擊CANFD0,Pin Group Selection選擇_B Only的情況下,Operation Mode選擇Enabled,發生引腳使用沖突。
在Ports中找到P402,打開Mode的下拉菜單點擊Disabled,由于已經設置了CANFD的引腳,此時Mode會自動切換為Peripheral mode,并確認當前P402為CANFD0_CRX0。
同樣地,修改P401的設置。
經過以上修改,可以看到Pins Tab上的error就沒有了。
審核編輯:湯梓紅
-
mcu
+關注
關注
146文章
17317瀏覽量
352630 -
收發器
+關注
關注
10文章
3454瀏覽量
106242 -
瑞薩電子
+關注
關注
37文章
2876瀏覽量
72402 -
CANFD
+關注
關注
0文章
59瀏覽量
5014
原文標題:RA MCU CANFD應用實例(上)
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論