1805|6

2942

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

【瑞萨RA4E1评估板】GPIO和UART测试 [复制链接]

本次测试GPIO和UART,看上去这两项可能是最基本的项目了,但是在不熟悉的MCU系统环境的情况下,这还是有点复杂地。

首先,使用上次的方法创建一个项目。项目类型不要使用Blinky项目,应该选用Meal项目,名称goip

  根据原理图对项目进行规划,LED1—> P407,LED2—>P408,

 UART RX—>P110  ,UART TX—> P109

打开设置中的标签Pins,对LED1和LED2进行设置。

 PIN参数

Mode :输出,初始低电平。这个是根据原理图,LED在低电平时是不发光地。

Drive:驱动为高电平输出,现在的单片机输出能力较强,以前都需要三极管做驱动才能点亮LED,当然那时的LED也比较费电。

其它默认就可以,

相同设置方法,将LED2也设置完成。

接下来是uart设置,这个有点麻烦,首先是设置系统为SWD,默认可能是jtag,这样可以节省引脚,同时在本测试中因为和UART引脚冲突必须修改。

 UART引脚和Jtag冲突。

 修改成SWD,选择stacks >>uart,增加一个UART组件,现在都流行通用串行硬件了,看来思维应该改改了,需要进步啊。  修改通道为9,只有通道9才可以将引脚设置到arduino兼容引脚上。

 还有设置回调函数。

 user_uart_callback()这个函数是事件监听函数,一会需要用到。

设置完成后,同步到项目中。

 按这里就可以啦。

打开源程序hal_data.c 加入下面代码就可以让led交替闪烁了。

for(;;)
    {

        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_07, BSP_IO_LEVEL_HIGH);
        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_08, BSP_IO_LEVEL_LOW);
        R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);


        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_07, BSP_IO_LEVEL_LOW);
        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_08, BSP_IO_LEVEL_HIGH);
        R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);

    }

系统生成的程序已经完成了初始化设置,打开串口就可以发送数据了。

 这其中有一点小技巧:

打开右侧窗格处的问号,可以展开辅助文档和说明函数。而且想要使用什么函数直接拖到程序中就可以了。

#include "hal_data.h"

FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER

volatile bool uart_send_complete_flag = false;


/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
    fsp_err_t  err = FSP_SUCCESS;
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif

    /* Open the transfer instance with initial configuration. */
       err = R_SCI_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);
       assert(FSP_SUCCESS == err);

       unsigned char buff[]="EEWORLD RA4E1";
       size_t buff_len = strlen(buff);
       err = R_SCI_UART_Write(&g_uart0_ctrl, buff, buff_len);
       if(FSP_SUCCESS != err) __BKPT();
             while(uart_send_complete_flag == false){}
       uart_send_complete_flag = false;

    for(;;)
    {

        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_07, BSP_IO_LEVEL_HIGH);
        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_08, BSP_IO_LEVEL_LOW);
        R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);


        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_07, BSP_IO_LEVEL_LOW);
        err = R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_08, BSP_IO_LEVEL_HIGH);
        R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);

    }


}

/*******************************************************************************************************************//**
 * This function is called at various points during the startup process.  This implementation uses the event that is
 * called right before main() to set up the pins.
 *
 * @param[in]  event    Where at in the start up process the code is currently at
 **********************************************************************************************************************/
void R_BSP_WarmStart(bsp_warm_start_event_t event)
{
    if (BSP_WARM_START_RESET == event)
    {
#if BSP_FEATURE_FLASH_LP_VERSION != 0

        /* Enable reading from data flash. */
        R_FACI_LP->DFLCTL = 1U;

        /* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and
         * C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */
#endif
    }

    if (BSP_WARM_START_POST_C == event)
    {
        /* C runtime environment and system clocks are setup. */

        /* Configure pins. */
        R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
    }
}

#if BSP_TZ_SECURE_BUILD

FSP_CPP_HEADER
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();

/* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()
{

}
FSP_CPP_FOOTER

#endif

/* Callback function */
void user_uart_callback(uart_callback_args_t *p_args)
{
    /* TODO: add your own code here */
    switch(p_args->event)
    {
        case UART_EVENT_TX_COMPLETE:
            uart_send_complete_flag =true;
            break;
        default:
            break;
    }
    if(p_args->event == UART_EVENT_TX_COMPLETE)
         {
             uart_send_complete_flag = true;
         }


}

这是主要的代码,回调函数就是拖出来了,不需要写的。启动程序就可以看到输出了。

  终结:

这次的测试由于开发环境不是很熟悉导致了多次测试问题,主要有测试的设备选择问题,开始选了OpenOCD经过出现了各种问题,后来才发现可以选择Renesas GDB设备,

 还有就是每次都要将项目clearn,还需要中断所有的才可以,当然我的经验也可能不对,如果有什么正宗的方法请告知在下,先行谢谢!

 

最新回复

优秀优秀!这芯片用起爽不爽呀!   详情 回复 发表于 2023-7-2 13:04
点赞 关注

回复
举报

2942

帖子

4

TA的资源

五彩晶圆(中级)

沙发
 

 开发板没有把uart串口引脚DAP上来真是不方便,不过也可能是因为串口模块紧张的缘故吧

 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

好东西,学习以一下。

 
 
 

回复

1633

帖子

0

TA的资源

五彩晶圆(初级)

4
 
这家的产品没有用过,凑个热闹,来看看楼主的学习笔记
 
 
 

回复

2942

帖子

4

TA的资源

五彩晶圆(中级)

5
 
lkh747566933 发表于 2023-7-1 14:36 这家的产品没有用过,凑个热闹,来看看楼主的学习笔记

他家的电机驱动做的很好,单片机做控制也不错。主要是以前不重视中小企业,主要是高端大客户,所以中小企业市场知名度不高。

 
 
 

回复

1633

帖子

0

TA的资源

五彩晶圆(初级)

6
 
bigbat 发表于 2023-7-1 15:24 他家的电机驱动做的很好,单片机做控制也不错。主要是以前不重视中小企业,主要是高端大客户,所以中小企 ...

感谢楼主的回复。正好学习学习别人家的设计。

好好看看

 
 
 

回复

7063

帖子

11

TA的资源

版主

7
 

优秀优秀!这芯片用起爽不爽呀!

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表