参加了Renesas的线下研讨会,并进行了实践操作体验。该板卡搭载全球颗480MHz Arm Cortex-M85芯片,支持Helium和TrustZone技术。提供的SDK包里集成了OpenMV机器视觉例程,配合MicroPython解释器,使其可以流畅地开发机器视觉应用。下午开始线下研讨会,主要介绍Arm Cortex-M85的超强性能,尤其是Helium技术。
演说完成后,进入到实践操作环节,提供了两个场地,一个是基于Arm Cortex-M85芯片的Helium展开的开发板,另一个是基于Vision Board板的RT-Thread设计。本人选择的是Vision Board板的场地,来到分会场后,工作人员将一本《RA8D1 Vision Board实践手册》发给每一位参与实践体验的小伙伴,接着就将小而美的vision开发板提供给每个参与者,同时并签上自己的大名,说是板子只提供线下实践操作,实践后需要上交,如有需要可打折优惠出售。拿到板子后,工作人员提供U盘,让每位参与者都将资料拷贝到自己的电脑中,当然这些资料也是可以事先从指定网站上获取到的。
Vision Board实物图展示如下:
《RA8D1 Vision Board实践手册》封面展示如下:
该实践手册提供了四个参考实例,参与者可以按照手册完成这四个实验的体验。由于本人没带笔记本电脑的充电器,并且事先没有准备好开发环境,因此只完成了前面两个。这块开发板性能比较强大,搭载了全球首款基于ARM Cortex-M85架构的瑞萨电子RA8 MCU,6.39 CoreMark/MHz,可以快速而高效地运行机器视觉算法,实现图像处理等功能。完全兼容OpenMV开发平台,用户可以直接使用OpenMV IDE进行编程和开发,利用丰富的API和库函数进行图像处理和计算机视觉任务。
下面就实验操作步骤分享如下:
资料获取
百度网盘:https://pan.baidu.com/s/1_9UNZbchYImCzTTRpwsmFw?pwd=azsd#list/path=%2F
密码:azsd
环境搭建
1)资料获取后,首先将ENV工具包解压出来,并运行。注册到系统环境变量中。
2)安装FSP配置工具,这里提供的是“setup_fsp_v5_1_0_rasc_v2023-10.exe”版本,安装目录必须放在无中文字符路径下。
3)下载SDK仓库
https://github.com/RT-Thread-Studio/sdk-bsp-ra8d1-vision-board
https://gitee.com/RT-Thread-Studio-Mirror/sdk-bsp-ra8d1-vision-board
这里值得注意的是,OpenMV工程目前只支持MDK开发。
4)安装好MDK,这里MDK的版本必须是v5.38版本或以上。进入到SDK下“sdk-bsp-ra8d1-vision-board\projects”目录下,选择任意一个工程,这里笔者选择“vision_board_blink_led”工程,而后按照如下图所指引操作:
而后使用MDK打开目录下的“project.uvprojx”文件,可编译下载,连接开发板后,即可将编译后的可执行文件下载到开发板,开发板上的蓝色指示灯会闪烁。至此基本环境搭建完毕。
按键中断实验
1)实验中需要在MDK中打开FSP配置界面,因此需要将RA配置选项使能。
2)配置按键外部中断引脚
首先我们可以通过SDK目录下“sdk-bsp-ra8d1-vision-board\documents”可获知板卡的电路原理图。打开“Vision_Board_schematic”可查看按键K1连线,当按键按下时会将引脚P907拉低,产生中断触发,方式为下降沿触发。
接着打开安装好的FSP配置工具“Renesas RA Smart Configurator 5.1.0”,进入到Pins设置界面,按照如下图所示,配置P907管脚占用中断10。
然后进入Stack界面,依次选择,按下图所示:
最终将中断10通道配置成如下图参数:
保存配置文件到指定工程目录下,接着点击配置工具中靠上边的“Generate Project Content”菜单图标,即可将新的配置信息载入到工程中。
3)回到MDK工程中,将hal_entry.c文件替换成如下代码,然后再编译,下载。即可实现按下K1按键,对应LED指示灯被点亮,同时终端中会有信息输出。如果网友有这块开发板可以体验体验。
/* * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2023-12-17 Rbb666 first version */ #include <rtthread.h> #include <rtdevice.h> #include "hal_data.h" #define IRQ_TEST_PIN "p907" void irq_callback_test(void *args) { rt_kprintf("\n IRQ10 triggered!!!! \n"); } void hal_entry(void) { rt_kprintf("\nHello RT-Thread!\n"); /*init */ rt_uint32_t pin = rt_pin_get(IRQ_TEST_PIN); rt_kprintf("\n pin number : 0x%04X \n",pin); rt_err_t err = rt_pin_attach_irq(pin,PIN_IRQ_MODE_FALLING,irq_callback_test,RT_NULL); if (RT_EOK != err) { rt_kprintf("\n attach irq failed. \n"); } err = rt_pin_irq_enable(pin,PIN_IRQ_ENABLE); if ( RT_EOK != err) { rt_kprintf("\n enable irq failed. \n"); } }