126|1

2922

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

【Follow me第二季第3期】作品提交 [复制链接]

 

一、基础任务

搭建环境,下载调试示例程序,Blink,按键,这个任务我使用VSCode、e2 studio、keil都成功完成。

(1)使用vscode搭建开发环境

首相下载,vscode、setup_fsp_v5_6_0_rasc_v2024-10.exe、ninja-win、 cmake、gnu arm编译器等软件,vscode的插件使用vscode安装。

vscode安装下载最新版的软件安装包VSCode-win32-x64-1.96.0.zip,解压到目录当中。配置好path路径。

  照着上图,安装插件、C/C++、Cortex-debug、Cmake插件,注意安装cmake前先安装ninja工具。建议安装clang插件

(2)安装嵌入式开发工具

下载arm-gnu-toolchain-13.3.rel1-mingw-w64-i686-arm-none-eabi.zip软件并安装,安装llvm工具,安装完成后,

安装setup_fsp_v5_6_0_rasc_v2024-10.exe工具完成后,在安装Renesas插件。

 

安装完成后,测试是否安装成功。

使用fsp工具创建项目

 

运行测试。

二、基础任务

(1)原始quad-spi flash和octo-spi flash速度测试

quad-spi flash和octo-spi flash配置及读写速度测试;DAC配置生成波形及性能测试;

由于jlink-RTT输出在vscode项目无法输出,该项目使用e2studio和vscode共同完成的。qspi和ospi项目共同完成。qspi项目使用vscode项目加uart完成。

使用e2studio打开quickstart_ek_ra6m5_ep项目,编译并下载程序

 

使用终端测试QSPI和OSPI速度。

 (2)vscode和uart测试QSPI输出测试

详细步骤见【Follow me第二季第3期】基础任务:2、Qflash和Oflash测试及Uart输出 - DigiKey得捷技术专区 - 电子工程世界-论坛

项目中使用了uart作为输出,进行测试

(3)DAC输出测试

该项目使用vscode和uart测试完成。

详细步骤见【Follow me第二季第3期】基础任务:1、DAC配置生成及Uart输出 - DigiKey得捷技术专区 - 电子工程世界-论坛

设计思路:

将DAC引脚配置为将P014为DAC0输出。

三、进阶任务

示例程序中新增命令打印信息

该任务使用e2studio完成。

任务设计描述:

(1)导入quickstart_ek_ra6m5_ep项目,打开menu_main.c文件

修改st_menu_fn_tbl_t代码

static char_t s_print_buffer[BUFFER_LINE_LENGTH] = {};


/* Table of menu functions */
static st_menu_fn_tbl_t s_menu_items[] =
{
    {"Kit Information"                         , kis_display_menu},
    {"Web Server"                              , eth_emb_display_menu},
    {"Network Name Lookup"                     , eth_www_display_menu},
    {"Quad-SPI and Octo-SPI Speed Comparison"  , ext_display_menu},
    {"Cryptography and USB High speed (MSC)"   , enc_display_menu},
    {"Display My info"   , my_display_menu},
    {"Next Steps", ns_display_menu },
    {"", NULL }
};

新建menu_my.c文件,仿照menu_ns.c文件修改如下:

/*
 * menu_my.c
 *
 *  Created on: 2024年12月15日
 *      Author: yuan
 */

#include "FreeRTOS.h"
#include "FreeRTOSConfig.h"
#include "semphr.h"
#include "queue.h"
#include "task.h"

#include "common_init.h"
#include "common_utils.h"
#include "menu_my.h"

#define CONNECTION_ABORT_CRTL    (0x00)
#define MENU_EXIT_CRTL           (0x20)

#define MODULE_NAME     "\r\n%d. NEXT STEPS\r\n"

#define SUB_OPTIONS     "\r\nVisit the following URLs to learn about the kit and the RA family of" \
                        "\r\nMCUs, download tools and documentation, and get support" \
                        "\r\n" \
                        "\r\n a) EK-RA6M5 resources:       renesas.com/ra/ek-ra6m5 " \
                        "\r\n b) EK-RA6M5 resources:       renesas.com/ra" \


static char_t s_print_buffer[BUFFER_LINE_LENGTH] = {};

/**********************************************************************************************************************
 * Function Name: ns_display_menu
 * Description  : .
 * Return Value : The next steps screen.
 *********************************************************************************************************************/
test_fn my_display_menu(void)
{
    int8_t c = -1;

    sprintf (s_print_buffer, "%s%s", gp_clear_screen, gp_cursor_home);

    /* ignoring -Wpointer-sign is OK when treating signed char_t array as as unsigned */
    print_to_console((void*)s_print_buffer);
    sprintf (s_print_buffer, MODULE_NAME, g_selected_menu);

    /* ignoring -Wpointer-sign is OK when treating signed char_t array as as unsigned */
    print_to_console((void*)s_print_buffer);
    sprintf (s_print_buffer, SUB_OPTIONS);

    /* ignoring -Wpointer-sign is OK when treating signed char_t array as as unsigned */
    print_to_console((void*)s_print_buffer);
    sprintf (s_print_buffer, MENU_RETURN_INFO);

    /* ignoring -Wpointer-sign is OK when treating signed char_t array as as unsigned */
    print_to_console((void*)s_print_buffer);

    while ((CONNECTION_ABORT_CRTL != c))
    {
        c = input_from_console ();
        if ((MENU_EXIT_CRTL == c) || (CONNECTION_ABORT_CRTL == c))
        {
            break;
        }
    }
    return (0);
}
/**********************************************************************************************************************
 End of function ns_display_menu
 *********************************************************************************************************************/

显示的内容

 

四、扩展任务

1、任务介绍

本次使用uart串口、两个按键、DAC、QSPI等外设搭建一个简易信号发生器。瑞萨作为全球三大汽车用ECU芯片供应商,出品的芯片稳定性已经得到了行业的认可。本人在NEC时代就使用瑞萨的芯片。所以对瑞萨的芯片印象较好。

项目使用的硬件。
硬件:ek-ra6m5开发板、TTL转USB模块
软件:VScode集成环境、FSP配置软件、串口助手软件

user key 1(用户按键1):控制信号的频率,控制修改timer的计时间隔。
user key 2(用户按键2):控制信号是否输出,信号关闭时,按键开启输出。信号输出时,按键关闭输出。
串口输出项目运行信息
系统使用定时器作为DAC电压输出计时控制,QSPI作为信号发生器的信号波形电压存储。
3、设计思路与程序

(1)用户按键使用r_icu中断作为按键的检测。在中断中标记按键值,然后在循环中检测是否按下按键。

(2)设计一个状态列表,显示各状态信息

(3)DAC的值使用一个变量控制每一个周期的计算输出幅值。

(4)用户按键1,时间控制数值的增减挡位。

(5)用户按键2,根据状态数值,修改DAC的转换状态。同时保存输出的设置值
4、项目设置

(1)系统设置

因为需要使用sprintf()功能,需要将Heap的尺寸。

 

(2)用户按键中断设置

用户按键1中断,函数user_irqkey0_callback(),用户按键2中断,函数user_irqkey1_callback()

 (3) uart设置

中断函数user_uart_callback,串口参数:115200,8,1,N

  (4)DAC设置

dac使用dac0,引脚使用P014引脚

(5) QSPI设置

将QSPI的程序包加入当中

 5、程序代码

主要程序如下:

    double w = 0;
    double dac_value = 0;
    uint16_t freq = 0;
    /* Define the units to be used with the software delay function */
    const bsp_delay_units_t bsp_delay_units = BSP_DELAY_UNITS_MILLISECONDS;
    const double cyclePien = 2*PI/1000;

while (1)
    {
        
        if(g_sw1_press)
        {
            freq = (uint16_t) ( freq++ )%10;
            g_sw1_press = false;
            APP_ERR_PRINT("Freg Add\r\n");
        }

        if(g_sw2_press)
        {
            g_dac_sw = !g_dac_sw;
            g_sw2_press = false;

            if(g_dac_sw)
            {
                 APP_ERR_PRINT("OUT ON\r\n");
            }
            else
            {
                APP_ERR_PRINT("OUT OFF\r\n");
            }

        }

        w += cyclePien/(freq+1);
        if (w >= (2 * PI))
        {
            w = 0;
        }
        
        dac_value = (sin(w) + 1)*2047;

        if(g_dac_sw)
        {
            dac_value = 0;
        }

        err = R_DAC_Write (&g_dac0_ctrl, (uint16_t) dac_value);
	    err = R_DAC_Start (&g_dac0_ctrl);    R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);

        /* Delay */
        R_BSP_SoftwareDelay(delay, bsp_delay_units);
 }

原理:

三角函数的角度区间为[0,2*PI],之间变化,该程序是没有1个毫秒变化一次,程序最大的周期是1秒,那么每次增加的角度为cyclePien (即 cyclePien=2*PI/1000),如果角度的变化减小到1/2则cyclePienx=cyclePien/2,程序有10个挡位。即: [0,1,2,3,4,5,6,7,8,9],周期最大为1,最小为10;

6、程序演示

(1)开始程序启动进行调试

 

(2)开始测试使用的是方波

 

项目文件 FSP_DAC_EXT.zip (1.84 MB, 下载次数: 0)

 

 

 

点赞 关注
 
 

回复
举报

2922

帖子

4

TA的资源

五彩晶圆(中级)

沙发
 

本贴子视频补充。

项目总结

项目中存在的问题

1、FSP配置工具不支持从其它项目中拷贝设置。

2、E2 STUDIO集成工具与非jlink工具支持较弱。容易与友商配置冲突。

    建议使用CMAKE+Ninja组合管理项目或者更多选择。多使用系统变量配置指定工具配置。

3、瑞萨ARM类芯片系统、外设等应用文档较少。

4、GNU Arm Embedded Toolchain 数学库(math.h)连接编译困难。

5、无法知晓DSP等硬件的支持库使用说明,或其它数学工具库的资料。


 

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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