【Follow me第二季第3期】Renesas开发套件EK-RA6M5 任务提交和问题记录
[复制链接]
本帖最后由 firefire666 于 2024-12-15 21:43 编辑
很高兴能参与电子工程世界论坛https://bbs.eeworld.com.cn/和得捷DigiKey联合推出的【Follow me第二季第3期】活动。
通过老师的讲解,快速上手熟悉瑞萨renesas这款芯片的特点,熟悉e2 studio的开发环境,收获巨大。
物料展示
开箱大礼包很是规整,比较明显的区别就是包装全是环保的,各种纸结构,连填充料也是纸张和裁割的垫纸。塑料包装很少,除了开发板用了一个防静电袋。
物件一共包括开发板,两条micro USB转type A连接线(区别为type A端分别是公头、母头),一根网线。
开发调试中,下载调试和运行查看串口使用的是开发板上两个不同的micro USB插口,需要经常插拔板上插口,为了方便和开发板安全,板上两接口分别独立连线接用比较好,最好再自备一条micro USB转type A公头线使用。
活动介绍中的开发板是这个样子的。实际一致。只是没想到这个简单的芯片竟然会有这么大的开发板(大约是10cm*20cm)。不愧是大牌出名!
本期任务一共有四个,
入门任务:搭建环境,下载调试示例程序,Blink,按键;
基础任务:quad-spi flash和octo-spi flash配置及读写速度测试;DAC配置生成波形及性能测试;
进阶任务:示例程序中新增命令打印信息;
扩展任务:设计一个类似信号发生器功能的例程。可在示例程序上修改。通过命令或按键,设置DAC输出波形,可通过flash存储历史波形等信息。
因为示波器无法外用,扩展任务未能完成。
前面3个基本任务,主打的思路就是跟着老师学习快速跑通,剩下的就是沉下心学习开发了。不得不说,演示老师的讲解还是很到位的,瑞萨家的IDE开发环境也是功能强大很容易上手的。特别喜欢它家的各种操作小技巧,有点发现小彩蛋的感觉。假如有人记笔记的话, 老师起码得讲了有一二十条操作技巧了。
任务进行过程
入门任务:搭建环境,下载调试示例程序,Blink,按键
对于一个开发板来说,开发者最大的想法可能就是要快速容易的上手。这里做的还是不错的。
也没多少需要注意的,只是其中,360安全卫士得停用了,后面IDE使用中也是。还有,Github严重的水土不服,前后一共连接了五六回,只有某天半夜突然稳定好用了打开了下载下来,后期采用此开发板进行项目的话,一定要考虑本土环境安装包的可靠性、一致性。
按演示导入例程工程,编译下载到开发板,再按键调试就成。这就是一个熟悉开发板和开发IDE程序的过程。开发板上提供了两个用户按钮,程序中都用到了,一个是调节指示灯亮度,程序中用调节PWM波形占空比来实现,一个是调节指示灯闪烁,程序中就是调节每次指示灯熄灭到下次点亮的延时。
演示中是在区间中增加了一个值,两个按钮分别由3个状态增加到4个状态。作为一个拥有不少测试经验的开发,本来准备在取值区间之前增加一个选项值,就是在1Hz前增加一个0.5Hz的,看看会不会导致出什么有意思的结果来。结果去实现代码发现,代码中涉及的函数参数类型不是uint32_t就是uint8_t,动起来就也是个大工程了,果断的弃了。
那就增加了中间值的选项,20%占空比的和2Hz的按钮选项。
common_init.h
#define LED_INTENSITY_10 (10) /* 10 percent */
#define LED_INTENSITY_20 (20) /* 20 percent */
#define LED_INTENSITY_50 (50) /* 50 percent */
#define LED_INTENSITY_90 (90) /* 90 percent */
#define BLINK_FREQ_1HZ (60000000) /* 1HZ */
#define BLINK_FREQ_2HZ (30000000) /* 2HZ */
#define BLINK_FREQ_5HZ (12000000) /* 5HZ */
#define BLINK_FREQ_10HZ (6000000) /* 10HZ */
board_mon_thread_entry.c
uint32_t g_pwm_dcs[4] =
{ LED_INTENSITY_10, LED_INTENSITY_20, LED_INTENSITY_50, LED_INTENSITY_90 };
uint32_t g_pwm_rates[4] =
{ BLINK_FREQ_1HZ, BLINK_FREQ_2HZ, BLINK_FREQ_5HZ, BLINK_FREQ_10HZ };
uint8_t g_pwm_dcs_data[] =
{ 10, 20, 50, 90 };
uint8_t g_pwm_rates_data[] =
{ 1, 2, 5, 10 };
调试中确实在按键时,调试界面的表达式监测窗口,对应的变量值从0-3循环变化了,指示灯闪烁区别也能明显察觉。
最初只是0-2循环,应该是有问题的,然后查了一下,发现是数值循环处理的% 3没改,改成% 4就按预期运行了。
流程图:
基础任务:quad-spi flash和octo-spi flash配置及读写速度测试;DAC配置生成波形及性能测试;
QSPI和OSPI的配置基本没动,快速过了一下例程的代码,涉及到flash读写的,主打就是一个过程复杂。直接用例程写好的,输入个32K的选项运行看了一下结果。写速度基本是2倍,读的看不出来啥情况,后面再研究一下原因了。
流程图:
DAC的配置任务,老师其实讲解的很详细,包括中断、PIN的配置使能,使用开发助手引入回调函数。这里是很重要的,干货满满!
照着演示加入了DAC输出正弦波代码,但可惜不能用示波器,看不到可爱的波形了。以这款开发板的资源,估计也不需要使用存储数组方式进行正弦函数算法性能优化了。
流程图:
进阶任务:示例程序中新增命令打印信息;
这个任务是很简单的,主要就是调用print_to_console()函数输出到终端,修改menu_main.c,menu_kis.c里面内容就行了。
偷了个懒,复制了kis_display_menu(void)函数实现,删除了大部分,简单的打了一段文字就差不多了。但是,没想到也出了点小故障,后面也是解决了。
再来看看一下使用和编程中的遇到的问题和解决
- GitHub获取问题,不多说了,开发狗的痛
- 安装、使用中都不要开360,其它的安全软件不知道
- 用户手册上说的是J11。废了很大劲找到了,但1-2-3是怎么标记,怎么算连接的,就完全没找到了,只能寄希望开发板是出厂装配稳定可靠的了。这一点对于一个开发板上手快速需求来说,其实是不合适的。
- 开启IDE的Terminal后无响应
刚开始搭建环境后连接调试,e2直接程序未响应了,杀掉以后再用依然如此。后面偶然插拔了USB线才解决。大概率是建立串口连接通信持续失败造成的。
- Terminal窗口显示
按键任务里,在IDE里面看串口Kit information显示时,温度数据重复占了两行,后面的指示灯亮度和占空比数值都下移了,跟前面的说明信息对应不上,开始以为时代码哪出错了,又怀疑串口设置错误,结果都没解决。后面把Terminal窗口点成最大就好了,窗口改回来一样没问题。问题是解决了,但是没想通。
- 修改不全的打印代码显示
新增命令打印任务里,为了偷懒,就简单拷贝kit information的函数代码,删除了绝大部分,只直接用了个打印“day day good”的信息的处理,结果切换菜单后除了期望的结果,还有不断刷新的温度信息。快速排查了一下,里面有一段区域信息保护的代码,注释掉就好了,这段代码挺有意思了,需要详读了。
#if 0
/* provide small delay so board_status should be up to date */
vTaskDelay (s_ticks_to_wait);
xEventGroupSetBits (g_update_console_event, STATUS_DISPLAY_MENU_KIS);
#endif
- 工程编译中hal_data.h文件缺失
然后就是后面导入OSPI例程,编译工程,直接就报错了。开始时差点就懵 了。又看了一下错误信息的含义,HAL的词义代表这似乎是个设备层文件,以我250个月的开发经验灵光一闪,点了工程里的配置文件configuration.xml,然后它估计就自动生成了,然后再编译就过了!
项目总结
在这次活动中,照着演示老师的快速跑通了程序,熟悉了开发板和开发环境,收获很大。后面有时间还是要把其它的例程都跑通理解的。希望可以更努力的参与活动,能对社区论坛也有点点的贡献。
视频
|