0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA2L1系列CAN通信应用

RA生态工作室 ? 2024-06-26 08:06 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

wKgZomaCS6-AFTt0AAALYEkxgXc557.png

RA2L1产品组基于ArmCortex-M23 核心(现今 ArmCortex-M系列中功耗最低的 CPU)。这款产品采用优化的制程和瑞萨电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。RA2L1产品组能够支持1.6V至5.5V宽电压工作,CPU时钟频率最高48MHz,且运行模式电流和待机模式电流更低。RA2L1产品群配备了增强型电容式触摸感应单元(CTSU2)、CAN控制器局域网总线,串行通信接口高精度模拟电路和定时器。产品封装从48引脚到100引脚。

wKgaomaCTEaAKSfBAAIixMOkB48221.png

控制器局域网CAN模块简介

控制器局域网(CAN)模块使用基于消息的协议在电磁噪声应用中的多个从机和主机之间接收和传输数据。

该模块符合ISO11898-1(CAN2.0A / CAN2.0B)标准,最多支持32个邮箱,可配置为普通邮箱和FIFO模式下的发送或接收。支持标准(11位)和扩展(29位)消息格式。CAN模块需要额外的外部CAN收发器

CAN模块框图

wKgZomaCTEaAEO5AAACScAIDORY881.png

wKgaomaCS-WAUHazAAAfo_mCIs8093.png

CAN模块参数规格

wKgZomaCTEaAJah1AAMIgVqn2lQ785.pngwKgZomaCTEaAPOUMAACXFdojeYY446.png

RA2L1 CAN通信应用例程

使用官方e2studio开发工具创建RA2L1工程,并添加CAN外设模块底层应用。

wKgaomaCTEaAUpnTAABG5-X0Vjs570.png

配置CAN模块参数(包括通信速率、引脚配置等)。

wKgaomaCTEeAezt6AAChEAhcm3Y135.png

CAN应用参考代码

#define WAIT_TIME (500U) //wait time value #define CAN_MAILBOX_NUMBER_TX (0U) //mail box number #define CAN_MAILBOX_NUMBER_RX (1U) #define CAN_FRAME_TRANSMIT_DATA_BYTES (8U) //data length #define ZERO (0U) /* Private global variables*/ /* Flags, set from Callback function */ static volatile bool b_can_tx = false; //CAN transmission status static volatile bool b_can_rx = false; //CAN receive status static volatile bool b_can_err = false; //CAN error status /* CAN frames for tx and rx */ static can_frame_t g_can_tx_frame; //CAN transmit frame static can_frame_t g_can_rx_frame; //CAN receive frame void hal_entry(void) { /* TODO: add your own code here */ fsp_err_t err = FSP_SUCCESS; uint32_t time_out = WAIT_TIME; // time out uint8_t can_tx_msg[CAN_FRAME_TRANSMIT_DATA_BYTES] = {0,1,2,3,4,5,6,7}; uint8_t can_rx_msg[CAN_FRAME_TRANSMIT_DATA_BYTES] = {0}; /* Initializes the CGC module. */ err = R_CGC_Open(&g_cgc0_ctrl, &g_cgc0_cfg); /* Handle any errors. This function should be defined by the user. */ assert(FSP_SUCCESS == err); /* Start the CGC_CLOCK_MAIN_OSC. */ err = R_CGC_ClockStart(&g_cgc0_ctrl, CGC_CLOCK_MAIN_OSC, NULL); assert(FSP_SUCCESS == err); /* Initialize CAN module */ err = R_CAN_Open(&g_can_ctrl, &g_can_cfg); /* Error trap */ if(FSP_SUCCESS != err) { __asm("BKPT #0\n"); } g_can_tx_frame.id = CAN_MAILBOX_NUMBER_TX; g_can_tx_frame.type = CAN_FRAME_TYPE_DATA; g_can_tx_frame.data_length_code = CAN_FRAME_TRANSMIT_DATA_BYTES; /* copy the tx data frame with TX_MSG */ memcpy((uint8_t*)&g_can_tx_frame.data[ZERO], (uint8_t*)&can_tx_msg[ZERO], CAN_FRAME_TRANSMIT_DATA_BYTES); err = R_CAN_Write(&g_can_ctrl, CAN_MAILBOX_NUMBER_TX, &g_can_tx_frame); /* Error trap */ if (FSP_SUCCESS != err) { err = R_CAN_Close(&g_can_ctrl); if (FSP_SUCCESS != err) { __asm("BKPT #0\n"); } } while(1) { /* check if receive flag is set */ if (true == b_can_rx) { /* Reset flag bit */ b_can_rx = false; g_can_rx_frame.data[CAN_FRAME_TRANSMIT_DATA_BYTES-1] = g_can_rx_frame.id; /* Transmit the rx data frame as acknowledging the data transfer is successful */ err = R_CAN_Write (&g_can_ctrl, CAN_MAILBOX_NUMBER_TX, &g_can_rx_frame); /* Error trap */ if (FSP_SUCCESS != err) { err = R_CAN_Close(&g_can_ctrl); if (FSP_SUCCESS != err) { __asm("BKPT #0\n"); } } /* wait for transmit flag bit to set */ while ((true != b_can_tx) && (time_out--)); if (0 == time_out) { __asm("BKPT #0\n"); } /* Reset flag bit */ b_can_tx = false; } } } void can_callback(can_callback_args_t *p_args) { switch (p_args->event) { case CAN_EVENT_TX_COMPLETE: { b_can_tx = true; //set flag bit break; } case CAN_EVENT_RX_COMPLETE: { b_can_rx = true; //copy the received data to rx_frame memcpy(&g_can_rx_frame, p_args->p_frame, sizeof(can_frame_t)); break; } case CAN_EVENT_MAILBOX_MESSAGE_LOST: //overwrite/overrun error event case CAN_EVENT_BUS_RECOVERY: //Bus recovery error event case CAN_EVENT_ERR_BUS_OFF: //error Bus Off event case CAN_EVENT_ERR_PASSIVE: //error passive event case CAN_EVENT_ERR_WARNING: //error warning event { b_can_err = true; //set flag bit break; } } }

CAN通信实测验证

RA2L1芯片内部只有CAN控制器,需要与外部CAN设备通信时,还需要外接CAN收发器。

CAN收发器应用参考原理图

wKgZomaCTEeAHUQHAACZljcIrm8107.png

使用USB-CAN工具测试CAN通信

wKgaomaCTEeAb6u5AAOzHKSAYKo898.png

a. 接收不到ID为0的数据

wKgZomaCTEeAAowdAACgQvFixMQ916.png

b. 禁止Mask功能后,可接收所有ID的数据.

wKgaomaCTEeAO8QfAACkjXlEuDY022.png

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

    关注

    146

    文章

    18027

    浏览量

    369004
  • CAN通信
    +关注

    关注

    5

    文章

    98

    浏览量

    18488
  • 瑞萨
    +关注

    关注

    36

    文章

    22389

    浏览量

    88192
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RA2L1系列MCU简介和CAN通信应用例程

    RA2L1产品组基于Arm Cortex-M23 核心(现今 Arm Cortex-M系列中功耗最低的 CPU)。这款产品采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低
    的头像 发表于 10-27 15:50 ?2842次阅读

    RA2L1入门学习】1. 点亮LED

    参考“RA2L1入门教学实验.pdf”进行的,之前使用过STM32CubeIDE和STM32CubeMX软件,与之相对应的是e2studio和RASC软件,整体用起来还是挺方便的。
    发表于 01-29 22:17

    RA2L1入门学习】2. PWM呼吸灯

    开发板:RA-Eco-RA2L1-48PIN-V1.0 IDE:e2studio 程序烧录工具:RAFP 参考资料:“RA2L1入门教学实验.pdf” 本次使用的是32位GPT 1.编
    发表于 01-30 21:55

    RA2L1入门学习】+Key控制LED实验

    基于 Arm? Cortex?-M23 核心(现今 Arm? Cortex-M 系列中功耗最低的 CPU)。 这款产品采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。
    发表于 03-07 15:16

    RA2L1入门学习】+LED流水灯实验

    基于 Arm? Cortex?-M23 核心(现今 Arm? Cortex-M 系列中功耗最低的 CPU)。 这款产品采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。
    发表于 03-07 15:27

    RA2L1入门学习】+开箱评测

    R7FA2L1AB2DFL。RA2L1 产品组采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。 本次收到的开发板印刷RA
    发表于 03-09 07:40

    RA2L1入门学习】+UART测试

    基于 Arm? Cortex?-M23 核心(现今 Arm? Cortex-M 系列中功耗最低的 CPU)。 这款产品采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。
    发表于 03-09 16:52

    RA2L1入门学习】+Led flash

    ? Cortex?-M23 核心(现今 Arm? Cortex-M 系列中功耗最低的 CPU)。 这款产品采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。 RA2L
    发表于 03-09 17:12

    RA2L1入门学习】+Key control LED

    ? Cortex?-M23 核心(现今 Arm? Cortex-M 系列中功耗最低的 CPU)。 这款产品采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。 RA2L
    发表于 03-09 17:21

    RA2L1入门学习】+Uart printf

    ? Cortex?-M23 核心(现今 Arm? Cortex-M 系列中功耗最低的 CPU)。 这款产品采用优化的制程和电子的低功耗工艺技术,是业界一流水平的超低功耗微控制器。 RA2L
    发表于 03-09 17:33

    RA2系列开发板体验】RA2L1试用笔记

    前言??早听说过这个芯片品牌,好像是电赛的赞助商。有机会申请到了RA2L1 的开发板试用,因为工作上会用到CAN通信所以专门选了带
    发表于 12-14 15:15

    电子RA2L1英文数据手册

    本资料包含电子RA2L1英文数据手册
    发表于 10-21 16:21 ?0次下载

    RA2L1:使用CLKOUT给MCU CAN模块提供时钟

    RA2L1:使用CLKOUT给MCU CAN模块提供时钟
    的头像 发表于 11-02 16:27 ?1055次阅读
    <b class='flag-5'>RA2L1</b>:使用CLKOUT给MCU <b class='flag-5'>CAN</b>模块提供时钟

    电子RA2L1 MCU产品介绍

    RA2L1 MCU是RA家族RA2系列广受欢迎的一款产品。
    的头像 发表于 12-10 10:51 ?989次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA2L1</b> MCU产品介绍

    RA家族精品RA2L1产品介绍

    RA2L1MCU是RA家族RA2系列广受欢迎的一款产品。
    的头像 发表于 12-27 18:07 ?666次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>家族精品<b class='flag-5'>RA2L1</b>产品介绍