本帖最后由 秋雪 于 2025-2-14 21:15 编辑

背景
感谢面包板社区和富芮坤电子给予本次评测机会。
富芮坤FR3068x-C开发板有着丰富的外设和外围器件。MCU本身 为主频可达156MHz的M33 32bit ARM,额外有一颗单独的核心负责BLE/BT蓝牙网关功能,支持I2C i2s pdm spi uart usb can等常规接口;外围方面除常规的串口、flash、调试口、按键、led、屏幕外,还贴装了较为少见的mic、音频pa,可以说在硬件资源上足以支撑复杂任务了,非常有吸引力。

image.png

image.png
MicroPython是一种专为微控制器和嵌入式设备设计的Python实现,能够在单片机非常有限的资源上运行python。由于python可以不经过编译就能直接运行,相比c语言更接近高级语言的书写习惯,同时又能直接控硬件接口(如GPIO、I2C、SPI等),降低了开发门槛,非常适合初学者或希望快速实现功能。结合microPython和已有硬件资源,本案选题为使用REPL MicroPython播放本地音乐。


预装Demo体验
上电后屏幕直接顺利点亮,但是折腾了好一会儿才发现这个demo仅仅是lvgl测试,通过按键可以切换不同的场景,但是仅仅是动画效果,并不是真的实现了功能或者综合测试demo。因此这一部分就不做深入测试了。

开发环境准备

如我的前文所诉( https://mbb.eet-china.com/forum/topic/148721_1_1.html  )
由于直播时推荐议在wsl/LINUX + PYTHON环境进行编译micropython。而我常用操作系统为window,因此尝试了使用基于Linux + python环境的jupyter notebook进行开发和编译。虽然demo能够编译和运行,但是由于这种方式的开发难度过大,最终还是改为了使用Keil MDK环境,使用qinyunti移植的工程 https://gitee.com/qinyunti/fr3068-e-c-micropython.git  才完成的课题。感谢伟大的先行者!

由于之前其他项目已经安装keil和Python,这里就不重新安装了。
据一些朋友反馈开发环境对keil版本有要求,实测我使用的版本可以正常编译。
image.png

在 开发文档\FR306x开发环境说明书V1.1.pdf 中已经详细说明keil的设置方式。
Device选择M33, 如果没有提前安装会自动跳转到安装界面安装arm m33的包;
image.png

Linker 页面需要确认配置是否正确
image.png

打开工程 sdk__202411\examples\evb_demo\lvgl_demo\MDK-ARM\Project.uvprojx 等待加载完成后,如未产生错误,即可得到固件
image.png

打开 FreqChip_Download 软件,从目录sdk__202411\examples\evb_demo\lvgl_demo\MDK-ARM\output下找到 Project_burn.bin,点击打开烧录、打开串口后按下开发板 的reset按钮重启后软件自动完成烧录(初次烧录应该是使用115200波特率);烧录结束后板卡自动重启并打印启动信息。

image.png


简易测试
如打印信息有乱码,注意此固件默认串口频率为921600。
启动后进入shell环境,可以输入help查看支持的命令。
image.png

输入micropython命令进入Python环境。简单测试一下1+1数学计算和print函数
image.png

音频播放硬件准备
由于已经预装音频输出的pa,因此只需要准备1个发声单元即可(电路只接了一路输出)。

image.png
因地制宜地使用了一个旧手机的扬声器模块,直接拉线接入到连接器即可。(同样由于电路只接了一路输出),不需要考虑输出音频的声道和相位问题,也就无所谓正反接线。
IMG_20250214_020009.jpg


音频播放文件准备

由于常用音频文件mp3格式解码较为复杂,项目只支持wav格式的音乐播放。而wav格式体积比较大,因此需要使用工具对音乐格式进行转换并裁剪,这里使用了ffmpeg。
image.png

转换后的文件可以透过预先编译的rxfile命令传输到flash空间。
在secureCRT软件中链接串口,输入命令rxfile path filesize后,选择传输协议并直接拖拽文件到窗口,选择协议xmodem来发送文件。(由于文件传输实现的并不完善,我使用了多个串口工具最后发现只有secureCRT方便传输,不建议再浪费时间使用其他工具传输文件了)
image.png

如果传输发生错误,可能需要先使用rm命令删除未传输成功的文件,再重新传输(或者换个保存的文件路径)
image.png
使用ls命令可以检查文件传输是否成功(当然也可以更进一步使用hash命令来比较)如果传输失败可以在试一次或者格式化后再传输。
image.png


音频功能测试
输入micropython命令,进入Python环境后,使用Python播放刚才传输的文件,尽管wav文件只保留了16khz的采样率,实际播放音质还是相当不错的。在实际项目开发中,可以直接当做“高保真”音频回放系统使用。当然也可以进一步降低采样率和位深,从而在有限的flash中存放更多内容,降本增效。音频播放结束之后,自动打印play done信息
image.png
目前没有实现exit和quit函数,使用Ctrl+d可以退出micropython环境。
播放过程中可以通过volume函数设置音量,调节到100爆音严重(说明扬声器和pa严重不匹配),1-10音效很好,后续需要内置衰减系数,对音量范围重新映射,从而让音量范围更有效。
image.png
总结
富芮坤FR3068E-C芯片资源多,性能强,芯片的内部资源以及外部PA能够实现本地音频播放功能(实际上也可以直接用蓝牙核播放蓝牙音频)并且有相当不错的播放效果,是相当不错的方案。板卡本身这样的设计也有利于开发和成果转换,可以尝试做更多应用!
经过这次体验,我第一次使用了microPython。得益于Python灵活的脚本语言特性,是一个比较好用的快速开发和调试的环境,可以多做一些这方面的尝试。