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

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

3天内不再提示

基于RA2L1实现串口DTC数据接收

瑞萨MCU小百科 来源:瑞萨MCU小百科 2023-05-04 10:50 次阅读

介绍

开发环境:IAR FOR ARM 9.30.1

RASC V4.3.0

芯片型号:R7FA2L1AB2DFL#AA0

功能描述

在串口+DTC功能时无法得知接收一帧数据是否接收结束。本例程配合ELC功能联动定时器来判断串口接收字节与字节之间超时来判断一帧数据的接收完成。

主要内容

1新建RASC工程

RASC v4.3.0下载链接:

https://github.com/renesas/fsp/releases

如下图所示:

dfd44254-e71f-11ed-ab56-dac502259ad0.png

2安装好RASC

默认安装目录:

C:RenesasRAsc_v2023-01_fsp_v4.3.0

双击dfe5afd0-e71f-11ed-ab56-dac502259ad0.png 运行RASC

dff0512e-e71f-11ed-ab56-dac502259ad0.png

3打开后如下图所示:

dff98b90-e71f-11ed-ab56-dac502259ad0.png

4新建工程

e0048b8a-e71f-11ed-ab56-dac502259ad0.pnge012d24e-e71f-11ed-ab56-dac502259ad0.pnge0225e62-e71f-11ed-ab56-dac502259ad0.pnge02dd81e-e71f-11ed-ab56-dac502259ad0.pnge037ea34-e71f-11ed-ab56-dac502259ad0.png

5配置串口PIN脚功能

e044378a-e71f-11ed-ab56-dac502259ad0.png

6添加串口功能

e066db00-e71f-11ed-ab56-dac502259ad0.png

7添加串口dtc收发功能

e06ff82a-e71f-11ed-ab56-dac502259ad0.pnge07a4cee-e71f-11ed-ab56-dac502259ad0.png

8配置串口属性

e08194a4-e71f-11ed-ab56-dac502259ad0.pnge08e2994-e71f-11ed-ab56-dac502259ad0.png

9添加定时器

e098d560-e71f-11ed-ab56-dac502259ad0.png

10配置定时器

这里以超时时间为2ms为例,用户可以根据实际情况超时时间。

e0a90836-e71f-11ed-ab56-dac502259ad0.pnge0c04b0e-e71f-11ed-ab56-dac502259ad0.pnge0caf0fe-e71f-11ed-ab56-dac502259ad0.png

11添加ELC

e0d50f30-e71f-11ed-ab56-dac502259ad0.png

12所需外设都已经配置好,生成IAR工程

e0ef3608-e71f-11ed-ab56-dac502259ad0.png

13打开IAR工程

e0fc28fe-e71f-11ed-ab56-dac502259ad0.png

14在hal_entry.c文件添加如下代码:

#define TRANSFER_LENGTH     512
transfer_properties_t uart0_dtcinfo1;


typedef struct sf_uart_conf
{
  uint8_t uart_txflag;                //发送标志
  uint8_t uart_rxflag;                //接收标志
  uint16_t uart_txlen;                //发送长度
  uint16_t uart_rxlen;                //接收长度
  uint8_t uart_rxbuf[TRANSFER_LENGTH];        //接收buf
  uint8_t uart_txbuf[TRANSFER_LENGTH];        //发送buf
} sf_uart_conf_t;


sf_uart_conf_t uart0;
//2ms定时器0回调函数
void uart0_rxtimeout_cb( timer_callback_args_t* p_args )
{
  if ( TIMER_EVENT_CYCLE_END == p_args->event )
  {
    //关定时器0
    ( void ) R_GPT_Stop( &g_timer0_ctrl );
    //获取串口0 接收DTC信息
    R_DTC_InfoGet( &g_transfer1_ctrl, &uart0_dtcinfo1 );
    //计算串口0接收长度
    uart0.uart_rxlen = TRANSFER_LENGTH - uart0_dtcinfo1.transfer_length_remaining;
    //置发送标志
    uart0.uart_rxflag = 1;
  }
}
//串口中断回调函数
void uart0isr_cb( uart_callback_args_t* p_args )
{
  /* Handle the UART event */
  switch ( p_args->event )
  {
    /* Received a character */
    case UART_EVENT_RX_CHAR:
      {
        break;
      }
    /* Receive complete */
    case UART_EVENT_RX_COMPLETE:
      {
        break;
      }
    /* Transmit complete */
    case UART_EVENT_TX_COMPLETE:
      {
       //置串口0发送完成标志,清接收标志
        uart0.uart_rxflag = 0;
        uart0.uart_txflag = 1;
        break;
      }
    default:
      {
      }
  }
}
void hal_entry(void)
{
 /* TODO: add your own code here */
 //初始化定时器0 2ms间隔中断
  R_GPT_Open( &g_timer0_ctrl, &g_timer0_cfg );
  //初始化串口0
  R_SCI_UART_Open( &g_uart0_ctrl, &g_uart0_cfg );
  //初始化ELC联动
  R_ELC_Open( &g_elc_ctrl, &g_elc_cfg );
  //使能ECL
  R_ELC_Enable( &g_elc_ctrl );
  //使能定时器0
  ( void ) R_GPT_Enable( &g_timer0_ctrl );
  //智串口0发送标志
  uart0.uart_txflag = 1;
  while ( true )
  {
    if ( uart0.uart_rxflag )
    {
      uart0.uart_rxflag = 0;
      uart0.uart_txlen = uart0.uart_rxlen;
      R_SCI_UART_Write( &g_uart0_ctrl, uart0.uart_rxbuf, uart0.uart_txlen );
    }
    if ( uart0.uart_txflag )
    {
      uart0.uart_txflag = 0;
      R_SCI_UART_Read( &g_uart0_ctrl, uart0.uart_rxbuf, TRANSFER_LENGTH );
    }
  }
#if BSP_TZ_SECURE_BUILD
  /* Enter non-secure code */
  R_BSP_NonSecureEnter();
#endif
}

15

仿真测试如下图所示:

e105774c-e71f-11ed-ab56-dac502259ad0.png

结论

该方式没有问题,可以正常应用到开发中。

审核编辑:汤梓红

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

    关注

    134

    文章

    9063

    浏览量

    367024
  • 定时器
    +关注

    关注

    23

    文章

    3242

    浏览量

    114577
  • IAR
    IAR
    +关注

    关注

    5

    文章

    345

    浏览量

    36635
  • 串口
    +关注

    关注

    14

    文章

    1549

    浏览量

    76273
  • 数据接收
    +关注

    关注

    0

    文章

    12

    浏览量

    7809

原文标题:基于RA2L1实现串口DTC数据接收

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    瑞萨电子RA2L1英文数据手册

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

    RA2L1硬件用户手册(中英)

    RA2L1硬件用户手册(中英)
    发表于 11-07 19:49 6次下载
    <b class='flag-5'>RA2L1</b>硬件用户手册(中英)

    RA2L1开发板资料

    RA2L1开发板资料
    发表于 11-07 19:50 18次下载
    <b class='flag-5'>RA2L1</b>开发板资料

    基于RA2L1串口及J-Link的烧写说明

    使用串口和J-Link对RA2L1烧写程序 本节介绍使用串口工具对RA2L1进行程序的烧写。采用CPK-RA2L1开发板,硬件如下图所示。
    的头像 发表于 11-25 12:40 1549次阅读

    基于RA2L1串口及J-Link的烧写说明

    本节介绍使用串口工具对RA2L1进行程序的烧写。采用CPK-RA2L1开发板,硬件如下图所示。
    的头像 发表于 11-25 13:55 1703次阅读

    RA2L1 组用户手册:硬件

    RA2L1 组用户手册:硬件
    发表于 01-09 19:06 5次下载
    <b class='flag-5'>RA2L1</b> 组用户手册:硬件

    RA2L1数据

    RA2L1数据
    发表于 01-09 19:06 0次下载
    <b class='flag-5'>RA2L1</b> 组<b class='flag-5'>数据</b>表

    RA2L1 组电容式触控评估系统快速入门指南

    RA2L1 组电容式触控评估系统快速入门指南
    发表于 02-03 19:24 0次下载
    <b class='flag-5'>RA2L1</b> 组电容式触控评估系统快速入门指南

    RA2L1 组用户手册:硬件

    RA2L1 组用户手册:硬件
    发表于 06-30 18:50 1次下载
    <b class='flag-5'>RA2L1</b> 组用户手册:硬件

    RA2L1数据

    RA2L1数据
    发表于 06-30 18:50 0次下载
    <b class='flag-5'>RA2L1</b> 组<b class='flag-5'>数据</b>表

    RA2L1 组 Capacitive Touch Evaluation System 用户手册

    RA2L1 组 Capacitive Touch Evaluation System 用户手册
    发表于 07-04 20:38 0次下载
    <b class='flag-5'>RA2L1</b> 组 Capacitive Touch Evaluation System 用户手册

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

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

    基于RA2L1串口及J-Link的烧写说明

    基于RA2L1串口及J-Link的烧写说明
    的头像 发表于 08-19 08:08 558次阅读
    基于<b class='flag-5'>RA2L1</b>的<b class='flag-5'>串口</b>及J-Link的烧写说明

    基于RA2L1实现串口DTC数据接收

    基于RA2L1实现串口DTC数据接收
    的头像 发表于 10-10 09:34 511次阅读
    基于<b class='flag-5'>RA2L1</b><b class='flag-5'>实现</b><b class='flag-5'>串口</b><b class='flag-5'>DTC</b><b class='flag-5'>数据</b><b class='flag-5'>接收</b>

    瑞萨RA2L1系列CAN通信应用

    瑞萨RA2L1系列CAN通信应用
    的头像 发表于 06-26 08:06 576次阅读
    瑞萨<b class='flag-5'>RA2L1</b>系列CAN通信应用