本篇文章将以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 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 按下断开按钮
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就没有了。
苹果Pro Display XDR显示器4999美元起
向“别人家的XX”说不 智能家居我做主
长光辰芯推出小面阵全局快门CMOS图像传感器
51单片机的最小系统应用说明
中国制造如何?德媒一文介绍中国制造的实力
RA MCU CANFD的应用实例(上)
由MCU控制的TOPSwitch?FZ单片开关电源电路图
固态氧化物燃料电池和CIGS太阳能电池薄膜材料简介
一文详解精密整流电路
简单分析一下固体柜的未来发展前景
英特尔最新的Alder Lake-S处理器信息曝光
工信部对“ZAO”App曝光用户隐私协议不规范,展开问询约谈
曝十代酷睿将有10核20线程 频率也将达到5.3GHz
摩托罗拉P50将于7月4日与联想Z6一同发布
利和兴正式登陆创业板募集资金总额为3.4亿元
有方无线通信模组占印度市场首位 美光与联电扩大合作关系
英特尔公布物联网投资布局 3家中国公司
面向xEV和工业应用的新一代SiC MOSFET
润和软件承办“基于RISC-V架构的OpenHarmony应用开发创意赛”, 欢迎组队参赛
工业物联网模块应用之砂芯库桁架机器人远程无线控制