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

    文章

    8651

    浏览量

    361816
  • 定时器
    +关注

    关注

    23

    文章

    3147

    浏览量

    112037
  • IAR
    IAR
    +关注

    关注

    5

    文章

    319

    浏览量

    36283
  • 串口
    +关注

    关注

    14

    文章

    1483

    浏览量

    74513
  • 数据接收
    +关注

    关注

    0

    文章

    11

    浏览量

    7783

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

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

收藏 人收藏

    评论

    相关推荐

    【瑞萨RA2系列开发板体验】初识RA2L1开发板

    1正面图2背面那RA2L1开发板都要哪些性能,其内容如下:48MHz Arm® Cortex®-M23128KB/ 256KB 代码闪存和 32KB SRAM(支持 ECC)8KB 数据
    发表于 11-29 10:06

    【瑞萨RA2系列开发板体验】瑞萨RA2L1应用笔记二

    前言  经过一段时间对RA2L1 开发板图形化配置功能的学习,对这款开发板板的应用有了初步了解,参考网友的例程,实现了触摸键、串口通信、模数转换的综合应用。一、主要功能模数转换是工业控制中常用的功能
    发表于 12-30 21:21

    Renesas RA2L1开发板之UART模块测评

    1、Renesas RA2L1开发板之UART  评测任务  首先非常感谢RT-Thread和Renesas给予测评CPK-RA2L1开发板的机会,本人所测评的模块是UART。这款
    发表于 10-18 10:38

    Renesas RA2L1开发板之PWM呼吸灯功能设计实现

    1、Renesas RA2L1开发板之PWM呼吸灯功能实现  CPK-RA2L1评估板  MCU:R7FA2L1AB2DFM,48MHz,A
    发表于 10-25 14:48

    Renesas RA2L1开发板之CAN介绍

    1、Renesas RA2L1开发板之CAN介绍  功能模块的硬件介绍  CPK-RA2L1评估板是一款专门针对中国本地的开发板,主MCU是一款主频为48MHz,内核为Arm® Cortex
    发表于 11-01 11:46

    Renesas RA2L1开发板之PWM方波配置相关资料推荐

    1、Renesas RA2L1开发板之PWM方波配置  工程的配置  时钟的配置  本次直接基于官方的例程进行开发,使用瑞萨的 RA Configuration 进行工程的配置。RA
    发表于 11-02 15:31

    Renesas RA2L1开发板之I2C接口评测

    1、Renesas RA2L1 开发板之 I2C  开发板介绍  CPK-RA2L1评估板是一款专门针对中国本地的开发板,主MCU是一款主频为48MHz,内核为Arm® Cortex®
    发表于 11-04 14:26

    RT-Thread与Renesas RA2L1实现1.8寸TFT屏幕显示的步骤

    使用过,本次借着RTT和本次参与RT-Thread与Renesas RA2L1的学习大挑战更深入的去学习RTT和Renesas。  计划使用RA2L1实现RTT的组件功能,外设功能等使用,本篇文章
    发表于 04-03 16:45

    基于RA2L1开发板的初识点灯

    。  3.开发板框图  4.学习记录(点灯+串口打印)  4.1 硬件连线  4.2 原理图  4.3 环境安装  这里是根据《瑞萨RA2L1开发实践指南》-零、实践指南操作,没有遇到任何障碍,只是下载
    发表于 04-03 16:55

    瑞萨RA2L1 ANE加解密协处理系统简介

    数据进行动态加解密,以实现鉴权和数据解析的效果。因为RA2L1内置了硬件的SEC外设,可以使用硬件计算AES,这大大提高了数据处理速度,更
    发表于 04-03 17:28

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

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

    RA2L1数据

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

    RA2L1数据

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

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

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

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

    基于RA2L1实现串口DTC数据接收
    的头像 发表于 10-10 09:34 155次阅读
    基于<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>