一、基础任务
搭建环境,下载调试示例程序,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)开始测试使用的是方波
|