本篇文章将以RA6E2为例,介绍如何使用瑞萨电子FSP CAN-FD lite的堆栈来设计和实现基于CAN的简易系统。最后,使用两套FPB-RA6E2和CAN收发器模块通过CAN实现相互通信,按下一块板上的按键S1会发送CANFD数据。
安装和准备
本节要点:
本节学习如何搭建应用实例以及如何将套件连接至电脑端。
1.1 首先确保已安装所有实例工具
复制下方对应的连接到浏览器中打开:
e2 studio 2023-01及以上版本
https://www.renesas.cn/cn/zh/software-tool/e-studio
FSP 4.3.0及以上版本
https://github.com/renesas/fsp/releases
GCC ARM Embedded 10.3.1.20210824及以上版本
https://developer.arm.com/downloads/-/gnu-rm
下载e2 studio 2023-04 + FSP 4.4.0
https://www.renesas.cn/cn/zh/software-tool/e2studio-information-ra-family
1.2 本实例将用到如下组件
两块FPB-RA6E2,两块CANFD收发器模块,两根USB micro-B线,十三根跳线。
FPB-RA6E2的具体资料您可复制以下链接到浏览器中打开查看:
https://www.renesas.cn/cn/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/fpb-ra6e2-fast-prototyping-board-ra6e2-mcu-group
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)是否亮起。
CANFD:创建FPB-RA6E2 Blinky工程
本节要点:
本节学习项目开发,熟悉e2 studio和FSP,创建简单的Blinky工程,验证FPB-RA6E2可以正常运行。
2.1 运行e2 studio,并打开workspace执行如下步骤:
在菜单中选择“New”。
选择“Renesas C/C++ project”。
下拉菜单中选择“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 按下断开按钮
CANFD:发送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行添加以下内容:
/* 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就没有了。
更多内容,您可复制下方网址到浏览器中打开进入瑞萨中文论坛查看:
https://community-ja.renesas.com/zh/frums-groups/mcu-mpu/
未完待续
推荐阅读
RA MCU CANFD在FSP中的配置详解
RA MCU CAN和CANFD IP介绍
CAN和CANFD协议简介(上)