RA MCU CANFD的应用实例(上)

描述

本篇文章将以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线,十三根跳线。

CANFDCANFD

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 连接示意

CANFDCANFDCANFD

1.5 使用Micro USB连接FPB-RA6E2,Micro USB一端接PC,另一端接FPB-RA6E2的J8。验证如下现象:

Debug USB端口(J8)附近的绿色LED(POWER)是否亮起且不闪烁。

板子右上角的橙色LED(LED6)是否亮起。

CANFD

2CANFD:创建FPB-RA6E2 Blinky工程

本节要点:

本节学习项目开发,熟悉e2 studio和FSP,创建简单的Blinky工程,验证FPB-RA6E2可以正常运行。

2.1 运行e2 studio,并打开workspace执行如下步骤:

在菜单中选择“New”。

选择“Renesas C/C++ project”。

下拉菜单中选择“Renesas RA”。

CANFD

2.2 输入fpb_ra6e2_canfd_lab,您也可以自定义名称。(但是不可以有中文、特殊字符)

CANFD

2.3 选择FPB-RA6E2,确保您使用的是FSP 4.3.0及以上,确保GCC版本为10.3.1.20210824:

CANFD

2.4 下一页面选择默认选项。

● 工程类型:Flat (Non-TrustZone) Project

● RTOS选择:No RTOS

最后一个页面选择Bare Metal - Blinky

CANFD

2.5 如果系统提示打开“Configuration”透视图,请单击“Open Perspective”。

2.6 打开FSP Configuration

如果仍未打开,请在预览窗口双击 configuration.xml 文件。

CANFD

2.7 点击CANFD编译代码。

CANFD

2.8 高亮fpb_ra6e2_canfd_lab工程

按下调试按钮CANFD

2.9 运行代码CANFD

检查FPB-RA6E2板上的两个绿色LED(LED1和LED2)灯是否同步闪烁。

CANFD

2.10 按下断开按钮CANFD

3CANFD:发送CANFD数据

本节要点:

本节学习如何发送CANFD数据,要求按下任意一块FPB-RA6E2板上的S1按钮后,发送CANFD数据。

3.1 打开FSP Configuration

如果仍未打开,请在预览窗口双击configuration.xml文件。

CANFD

3.2 选择Pins Tab,点击 IRQ,确认目前IRQ9已设为P304:

CANFD

3.3 设置Stacks

点击New Stack,选择External IRQ (r_icu)。

CANFD

3.4 设置External IRQ (r_icu)的属性

Name: g_external_irq

Channel: 9

Digital Filtering: Enabled

Callback: user_irq_callback

CANFD

3.5 点击CANFD生成代码

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下面拖拽的方式完成):

CANFD

左右滑动查看更多

 

    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下面拖拽的方式完成)。

CANFD

左右滑动查看更多

 

/* 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 点击CANFD编译代码。

CANFD

3.10 高亮fpb_ra6e2_canfd_lab工程

按下调试按钮CANFD

3.11 在user_irq_callback中设置断点(126行左侧地址或者行数显示处双击鼠标左键)。

CANFD

3.12 运行代码CANFD,并确认按下板上S1时,能正确进入callback中。

CANFDCANFD

确认后,请将这个断点取消(断点处双击鼠标左键)。

3.13 选择Pins Tab,点击CANFD0,Pin Group Selection选择_B Only的情况下,Operation Mode选择Enabled,发生引脚使用冲突。

CANFD

在Ports中找到P402,打开Mode的下拉菜单点击Disabled,由于已经设置了CANFD的引脚,此时Mode会自动切换为Peripheral mode,并确认当前P402为CANFD0_CRX0。

CANFDCANFD

同样地,修改P401的设置。

CANFDCANFD

经过以上修改,可以看到Pins Tab上的errorCANFD就没有了。

  审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分