"RL78/F24 CANFD实用示例,简洁高效,立即体验!"

2024-06-17

RL78/F24新一代超低功耗汽车微控制器,非常适用于实现未来高可靠性的智能执行器和传感器,是低端车身ECU的理想之选。作为对现有RL78/F1x MCU的创新扩展,RL78/F24可满足未来市场的多种需求。RL78/F24具有更高的CPU性能、耐高温能力和更强的外设功能,非常适合各种应用。为了响应E/E汽车架构的新趋势,RL78/F24配备了CAN FD接口。

目前在官网上对于CANFD模块,提供了所使用的RL78/F24 RS-CANFD lite Module Software Integration System和相关介绍文档。本篇文章主要介绍如何使用该Middleware在e2 studio中完成CANFD参考例程,并使用RL78/F24 Target Board(RTK7F124FPC01000BJ)配合PCAN进行测试。

1. 所使用的硬件

瑞萨官方RL78/F24 (R7F124FPJ) Target Board,需要用户焊接CN5(CANFD接口),如果需要外部供电,还需要焊接TP1(VDD)和TP2(GND)。

另外,RL78/F24 Target Board上,CANFD部分电路没有终端电阻,针对本测试系统,需要在CANH和CANL之间焊上120Ω电阻。

调试器:瑞萨官方调试器E2或者E2 Lite(需要注意,E2 Lite只能提供3.3V供电,E2可以提供5V或者3.3V供电)。

辅助设备:使用CANFD其他器件用于测试发送和接收结果,这里使用PCAN(包括硬件和软件,硬件上设置有终端电阻)。

PCAN上设置波特率、采样点和过滤规则:

2. 软件开发环境

e2 studio:v2024-01(因为IAR需要License,所以没有使用官网给出的IAR参考例程)

Renesas CC-RL Compiler v1.13.00(RSCANFD驱动只能用于CC-RL编译器)

Smart Configurator中

Board Support Packages. -v1.62 (r_bsp)

Ports v 1.4.0

RS-CANFD lite Module Software Integration System (r_rscanfd_rl78) v1.00

注意,用户需要自己添加RS-CANFD lite Module Software Integration System (r_rscanfd_rl78)。

可以使用下面两种方法的其中之一进行添加:

• 打开SC,选择“Components”,点击“Add Component”,点击“Download RL78 Software Integration System modules”。

选择相应的模块进行下载。

• 将“r01an6334xx0100-rl78f24-sis”中内容,拷贝到Module Download文件夹。

3. 时钟和模块设置

1

根据文档“r01an6982ed0090-rl78f24”中内容,需要根据实际板子需求配置时钟。

在这种情况下,CANFD模块的属性设置中DLC时钟选择Internal clock。

2

RL78的Smart Configurator中对于波特率的设置,需要手动设置。

本测试代码中以fCAN=20MHz、nominal Baud Rate = 500kbps、data Baud Rate = 2Mbps为例。

波特率

500kbps

2Mbps

Prescaler

0

0

Time Segment 1

29

7

Time Segment 2

10

2

SJW

1

1

Sample Point (%)

75.00

80.00

4. 调试配置

1由于CANFD收发器需要5V供电,所以需要外部电源给板子提供5V供电。

RL78/F24 (R7F124FPJ) Target Board上有VDD和EVDD,可以分别供电,比如可以VDD使用3.3V供电,EVDD使用5V供电。但是此Target Board默认将VDD和EVDD连接在一起,所以一起用外部电源提供5V电源,此时,外部调试器选择不供电。

2由于系统使用外部主时钟,所以调试器的配置需要做相应修改。

5. 软件流程

参考文档“RL78/F24 RS-CANFD lite Module Software Integration System Rev.1.00”(r01an6334ej0100-rl78f24)中内容。

Application Note:RL78/F24 RS-CANFD lite Module Software Integration System Rev.1.00

1设置P12:输出模式,输出低电平,以保证CANFD收发器处于Normal模式。

2添加RSCANFD组件,并设置属性(属性的详细内容请参考文章后附上的参考工程)。

3

添加相应的中断函数

4在主函数中添加CAN相关头文件、R_CAN_Create函数和R_CAN_SetConfig函数,并等待通信就绪。

左右滑动查看完整内容

长按可保存查看大图

5配置帧属性,准备将要发送的数据,然后发送CANFD数据。

左右滑动查看完整内容

长按可保存查看大图

本测试代码中,发送帧为标准数据帧,ID为0x7FE,数据长度为8,数据内容为0x11、0x22、0x33、0x44、0x55、0x66、0x77、0x88。

从PCAN中可以接收到RL78/F24发送的CANFD数据。

可以看出,数据类型为FD,并且切换波特率。

通过逻辑分析仪观察CTX和CRX波形,可以看到Nominal段和Data段波特率不一样。

6设置接收filter功能

在R_CAN_SetConfig()函数后,添加接收规则。

左右滑动查看完整内容

长按可保存查看大图

接收标准帧、ID为0x700的数据、将数据接收到RXBUF0中。

7接收CANFD数据

在中断函数RSCFD_A_GlobalMBReceiveIRQ中添加接收代码。

左右滑动查看完整内容

长按可保存查看大图

使用PCAN发送以下ID(0x700)和数据,注意要勾选“CAN FD”和“Bit Rate Switch”。

MCU可以正常接收,可以看到FDF和BRS的值都为1。

左右滑动查看完整内容

长按可保存查看大图

验证如果PCAN发送的ID为0x701(除0x700以外的ID,此处以0x701为例),MCU不会进入中断。

6. 需要注意的问题

1在接收中断中,需要使用R_CAN_ReadRXMBInHandler,而并非R_CAN_ReadRXMB。

R_CAN_ReadRXMB

从RX消息缓冲区读取接收到的数据。

R_CAN_ReadRXMBInHandler

从RX消息缓冲区读取接收到的数据。(在中断处理进程中)

2发送FD数据,需要注意以下发送帧类型。

s_tx_frame.Head.Bits.FDCTR

可从以下几种类型中进行选择

左右滑动查看完整内容

/* for FDCTR (st_can_tx_frame_t) (ESI is effective when ESIC=1 and not error passive) */
#define CAN_FDCTR_CLASSICAL     (0x00u)     /* Classical Frame              */
#define CAN_FDCTR_FD        (0x06u)     /* FD Frame (use Data Baud Rate)       */
#define CAN_FDCTR_FD_NMNL      (0x04u)     /* FD Frame (only Nominal Baud Rate)     */
#define CAN_FDCTR_FD_ESI      (0x07u)     /* FD Frame (use Data Baud Rate and ESI)   */
#define CAN_FDCTR_FD_NMNL_ESI    (0x05u)     /* FD Frame (only Nominal Baud Rate, use ESI)

3发送FD数据时,需要根据所用CANFD收发器的特性和所用波特率设置TDC(收发器延迟补偿)。

原因:如果数据阶段使用高波特率(例如5 Mbps),则发送器延迟可能会大于 TSEG1。在这种情况下,发送器将始终检测到CAN-FD帧的数据阶段中的位错误。TDC(收发器延迟补偿)可补偿发送器无法在该位的采样点接收其自身发送的位。(详情请参考RL78/F24硬件手册中的“18.15.1.5 CAN Transmitter Delay Compensation”)。

RL78/F24硬件手册

基于TDC原理和板上使用的高速CAN收发器。

对于此收发器,当波特率为2M时,应将TDC设置为Disabled。

通过计算(1/(140+140)*10^9=3.57M),当使用的波特率超过3.57M时,请考虑使用TDC。

至此,使用RL78/F24进行CANFD发送和接收的参考例程已完成,参考例程请从Gitee上下载。用户可以在此例程的基础上,针对用户板进行配置上的修改,也可以调整发送数据类型。

文章推荐

相关推荐