21ic小能手 发表于 2024-6-7 11:25

国产MCU专栏 第85期 80篇!资深工程师APM32F411V Tiny Board测评报告


极海APM32 MCU 论坛
*阅读说明:排名不分先后,详细测评过程及源码资料等请戳原链接查看。


[*]测评1:
开箱环境搭建与工程模板建立环境搭建和点灯。
按键、串口、定时器简测结合官方例程,对APM32进行串口接收中断初始化。
移植RT-ThreadRT-Thread Nano 是一个极简版的硬实时内核,它是由 C 语言开发,采用面向对象的编程思维,具有良好的代码风格,是一款可裁剪的、抢占式实时多任务的 RTOS。
RT-Thread定时器与MultiButton按键检测1.先申请一个按键结构。2.初始化按键对象,绑定按键的GPIO电平读取接口read_button_pin() ,后一个参数设置有效触发电平。3.定义与注册按键事件。4.启动按键。5.设置一个5ms间隔的定时器循环调用后台处理函数。
TencentOS tiny内核移植使用极海APM32F411V Tiny开发板进行示例移植,其他 ARM Cortex M系列开发板和芯片移植方法类似。
嵌入式框架Zorb Framework移植Zorb Framework是一个轻量级的嵌入式框架,搭建目的是为在不能运行Linux的芯片上快速开发应用,不用反复造轮子。
GCC Makefile Pyocd 工程模板建立
APM32F4xx_DAL_Driver工程模板建立这几天在极海半导体官网逛的时候看到了APM32F4xx_DAL_SDK相关东西比较好奇,所以研究了研究。APM32F4xx_DAL_Driver是APM32F4系列的类似STM32-HAL抽象层的库,国产APM32芯片从标准固件库终于到HAL库了。



[*]测评2:
开箱+UART轮询示例APM32F411V Tiny Board 板载调试器,仅需在调试器这头USB Type-C接入到电脑USB即可,即可供电,又可以下载调试,还能当串口使用。
示例工程SPI_FullDuplexSPI1 和 SPI2 互联进行数据收发,其中 SPI1 作为 Master,SPI2 作为 Slave。
驱动 SPI LCD在某宝购买的一块 TFT LCD,2.4寸液晶屏,SPI串口,带字库。其型号为 ZJY240S10Z0TG11,显示屏驱动IC为 ST7789。
Debug运行LVGL出问题运行一个最简单的 lvgl 示例工程,却导致了 HardFault。
移植 LVGLLVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用。
LVGL 提速-篇章1前面的章节移植 LVGL 成功,但是刷屏速度很慢,无论是 FreeRTOS 版本还是 Baremetal 版本,速度差不多。所以问题出在哪里呢?
LVGL 提速 -- 篇章2 -- DMA+SPI上一篇文章 LVGL 提速,仅仅是在刷屏时逐个打点替换为刷数组,速度肉眼可见的提升了,但是刷屏速度还需要再提一提 -- SPI + DMA。
代码、文档和工具勘误



[*]测评3:
开箱点灯
定时器和PWM输出测试使用Timer9实现一个1ms周期的定时器,先配置一下系统时钟,开启外部高速晶振,PLL到120MHz。
串口测试
I2C点亮OLED和读取温湿度传感器数据原本想用硬件驱动的,结果和评测407时一样总是搞不定,官方的bsp_i2c也是用的模拟I2C,官网搜I2C相关文档也只能搜到模拟I2C与EEPROM通讯的,最后放弃改用软件模拟I2C。
SPI驱动LCD并显示RTC时间
实现一个简易U盘TXT阅读器



[*]测评4:
APM32F411V开发板开箱点灯和在RTOS下点灯
用OLED屏显示板载RTC时间与日期外接了一块SSD1306驱动芯片的OLDE屏,用OLED屏来显示APM32F411V芯片自带的RTC时间,本来想用自带的IIC驱动来驱动oled,测试了一下,没有显示成功,索性就直接用模拟iiC实现吧,接的单片机PB6和PB7,查了数据手册,硬件iic也是这两个接口。   
体验随机数生成并用OLED显示APM32F411这个单片机可以生成随机数,而且demo里自带,我这里就移植显示在OLED上。



[*]测评5:
开发板开箱点LED灯完成点LED灯。
通过UART更新外FLASH驱动TFT项目的一个前置部分,通过UART更新外置FLASH中的图片数据。
硬件SPI驱动1.54 IPS TFT已经完UART更新外置FLASH中的图片数据,那么今天开始驱动TFT屏了。



[*]测评6:
XX32F411V HAL库UART开发APM32F411VET6的USART3,UART4,UART5在XX32F411VET6是没有的,保留了相应的地址空间。在APM32F411VET6中这部分地址空间被用作了USART3,UART4,UART5。在使用XX32f411的XX32CubeMX开发时,没有相关的外设配置选项,我们可以自己改HAL库,以支持USART3,UART4,UART5。
PlatformIO开发AMP32F411



[*]测评7:
linux下开发环境(gcc+makefile+pyocd)搭建&点灯顺着linux下pyocd+cmake环境搭建并点灯+printf uart输出组建开发环境已经非常方便,下面说说APM32f411V特别的地方或者说需要在已有linux开发环境基础上再做什么即可搭建用于APM32F411V的开发环境。
pyocd加载固件到SRAM并从sram启动这个测评贴就是来展示pyocd如何加载点灯固件到sram并从sram启动。
如何给主线RT-Thread添加支持本来想移植nuttx这款RTOS的,但恰好近一个月以来RT-Thread玩得比较多,所以练手目标改成RT-Thread了。
SRAM启动RT-Thread充分利用APM32F411大sram的特性,在开发阶段尽可能避免烧写flash,从而加快开发验证速度和延长flash寿命。
从sram和flash运行coremark不同性能数据移植了一下coremark,坛子里coremark移植比较多,移植步骤就简单说一说,重点在后面从sram运行coremark的性能数据比从flash执行的要差,是一件比较奇怪的事情。



[*]测评8:
开发板开箱
UART输出UART输入输出是开发板开发及调试过程中不可缺少的过程,也是很多外设进行交互通讯的必须接口。
ADC变换APM32F411V Tiny 的ADC功能是转换模拟信号为数字信号,这个是众多产品所用传感器的基础,如自动计量秤等,都是这样安排的。
RT-thread Nano的使用APM32F411V 内存足够大,可以容纳核心很多中间件的使用,其中最常用的就是RTOS实时操作系统,这里选择rt-thread进行开发。
USB 接口与使用APM32F411V一个重要的功能是USB接口,USB栈固化进了硬件层,通过函数调用就可以简单使用,而且同时支持DEVICE和HOST两种模式。



[*]测评9:
硬件测试点灯
cubemx生成RT thread



[*]测评10:
开箱以及板卡介绍
配置开发环境及调试验证
GPIO的输入与输出
调试串口的printf实现
定时器的使用(基础定时+PWM)



[*]测评11:
开箱
SHT31温湿度传感器测试在SHT20的基础上提升了精度,缩小了体积。同时通信命令增加了一位。
驱动1.3寸SPI屏幕驱动方式就是SPI通信,所以打开CUBEMX生成SPI接口。
SPI_SDCARD+Fatfs简单测试本程序主要针对SD卡2.0 HC2.0高容量卡协议进行说明。
LVGL移植
LVGL显示温湿度数据前面我们保留我们的温湿度传感器读取方式,在移植了LVGL之后我们就可以通过其进行简单的数据显示了。



[*]测评12:
开箱点灯
测试RT-Thread由于RT-Thread Studio中并没有支持APM32F411系列的芯片,所以另辟蹊径直接使用STM32F411芯片进行创建工程。
测试点亮OLED使用RT-Thread Studio来添加u8g2软件点亮OLED屏幕。



[*]测评13:
环境搭建以及点灯
定时器测试定时器主要是用到了他的计数功能,当然还有其他的输入捕获,互补输出等功能我们首先看看定时器的时钟树,可以更加清楚的了解到定时器的脉络。
串口测试APM32的开发板上是有两个对外串口可以使用的,串口一和串口2,通过板子上的跳线就可以实现串口介入DAP的选择。
CoreMARK跑分以及同行业芯片对比



[*]测评14:
点灯和串口printf打印输出测试点个灯和串口输出测试一下。
串口shell移植nr_micro_shell和letter_shell移植一下串口shell,方便命令控制。
硬件I2C读取传感器测试研究了一下APM32F411的I2C接口功能。
ADC采样测试研究一下APM32F411的ADC外设功能。



[*]测评15:
环境搭建与点灯
iic代码测试和mpu6050传感器的驱动对 APM32F411V Tiny Board 的 IIC 代码进行测试,并尝试驱动 MPU6050 传感器。
adc代码测试和压力薄膜传感器的驱动对 APM32F411V Tiny Board 的 ADC 代码进行测试,并尝试驱动压力薄膜传感器。
pwm代码测试和震动马达的驱动对 APM32F411V Tiny Board 的 PWM 代码进行测试,并尝试驱动震动马达。
iic代码测试和oled的驱动对 APM32F411V Tiny Board 的 IIC 代码进行测试,并尝试驱动 0.96 寸 IIC 协议的 OLED 蓝黄双色模块。
基于压力播磨传感器和mpu6050的振动马达驱动



[*]测评16:
开箱以及点灯
使用ADC采集HC-SR312数据程序通过ADC(模数转换器)进行连续转换,采集模拟信号并通过USART串口输出结果。
GPIO实现呼吸灯



[*]测评17:
开箱搭建环境
使用SPI+DMA驱动WS2812SPI+DMA驱动WS2812,其实WS2812是一种常见的LED灯珠,通常用于制作RGB全彩LED矩阵。



[*]测评18:
建立工程
时钟配置与freertos配置



[*]测评19:
编程环境的搭建按照步骤完成搭建后,将程序下载至开发板,可以看到两个LED按照编程内容愉快的闪烁了。



[*]测评20:
USB工程调测



[*]测评21:
开箱点灯


访问 极海APM32 MCU 论坛,可查看更多开源作品~

merrickhuang 发表于 2024-6-7 22:17

谢谢分享

SDSZHHY 发表于 2024-6-9 23:27

感谢分享

WoodData 发表于 2024-6-14 09:36

感谢分享

sdrcust 发表于 2024-6-26 13:27

我也想评测{:titter:}

chenqianqian 发表于 2024-8-5 08:36

RTThread现在应用挺广泛啊
页: [1]
查看完整版本: 国产MCU专栏 第85期 80篇!资深工程师APM32F411V Tiny Board测评报告