课题4:基于REPL MicroPython实现本地音乐播放

一、基础编程环境配置

拿到富芮坤FR3068x-C开发板,原本板载的程序是一个LVGL的demo案例,开机动画之后,可以跳入目录界面,由于标配的屏幕不具有触摸功能,在demo案例中,是通过使用板载的按键(K1、K2、K3)进行基本控制,如下图所示,其中三个按键的功能分别是(返回,确认,切换):

183731b49m14hdhmuacccw

Demo案例中,是不具有真实功能的,仅为演示效果。基于这一demo案例,配合官方提供的例程,进行之后的项目学习和拓展功能。

按照目录打开lvgl_demo

(..富芮坤FR3068E-基础开发文件_202412\sdk__202411\examples\evb_demo\lvgl_demo\MDK-ARM)

183731bwi4ii2giw56sd6z

一开始由于KEIL MDK的版本过低,打开之后,弹窗警告无法正常索引到目标设备——这将导致无法正常编译、引导和下载文件到板载的芯片中,根据工程师的协助,重新将MDK的版本置换为V5.36,便可以正常索引到目标设备,如下图所示,可以看到富芮坤 FR3068E-C 这款开发板使用的内核是ARM Cortex M33系列中的_DSP_FP,这个设备类是置换KEIL MDK V5.36之后,就默认安装的,不需要额外安装PACK包。

183731axxxgmxcdf7lppxl

官网下载的lvgl_demo工程无法正常通过在线编译的方式编译和下载文件,无论怎么选配下载选项,都会提示SWD/JTAG Communication Failure:

183732esxiti18tjdj8zms

在群里与大佬们取经后,需要做如下的配置,才能正常检测到芯片:

(1)硬件上,需要短接SWCLK和PB10,短接SWDIO和PB11,硬件上默认出厂时,短接帽安装在RX和TX上。实际上PB4,PB5,PB10和PB11可以全部都安装短接帽,他们引脚并不冲突;

183732bt8b3owcvdic9cb4

(2)通过串口下载一个没有占用PB10和PB11的程序,因为出厂时,LCD数据驱动部分占用了这两个引脚,而出厂程序是lvgl_demo,对屏幕进行了读写,因此这两个引脚被复用为GPIO功能,无法使用SWCLK和SWDIO复用功能。所以需要先下载一个不使用这两个引脚的程序,并且复用SWDIO和SWCLK功能,才能正常使用SWD在线仿真;

183732p9we55vgip9o52op

通过串口下载,需要使用到官方提供的烧录工具(..\富芮坤FR3068E-基础开发文件_202412\烧录工具\FreqChip_Download V1.3.8.7\FreqChip_Download V1.3.8.7)

183733wlzz9l0hqxyhq4lq

打开烧录工具之后,按照下图进行烧录前的准备,注意这里需要烧录一个不占用SWCLK和SWDIO的工程,才能复用SWD功能,图示中为了演示而选用例程做例子说明如何使用串口烧录,

183733t2l1p0s5dgdyv1dh

配置完成后,按照下图的方式进行正式串口烧录进程:

183733hplpodw57m77eeff

接下来③按下板子的复位按钮:

183735haxeqdeaakdpmy1m

按下复位后,可以看到串口打印的提示信息和烧录的进度:

183735fjcww4r4c88r6r68

烧录成功提示:

183735jd2mh9xh95ohw66h

同样的,烧录其他核的bin文件也是一样的,重复上述操作即可。需要注意的是,比如说lvgl_demo,需要烧录burn文件才能有功能效果:

183736q8axdx7axda7bwxt

另外注意到这里烧录burn之后,打印乱码,需要调整波特率(①关闭串口,②调整波特率为串口波特率921600,③打开串口),可以看到正常打印报文,其他的例程也是如此,按照这个方法下载即可,

183736uo1jtloaijo1ho1o

(3)复用SWCLK和SWDIO之后,还不能马上使用在线仿真功能,需要进行一些配置:

启动路径调整:

183736s1w1k2akjekx9zo0

引用的路径:..\..\..\..\components\tools\keil\debug_xip_flash.ini

复制..\fr30xxc_sdk__202411\components\tools\keil下的算法文件flm文件到keil的算法下载路径下,路径如何自查?(参考路径:..\Keil_v5\ARM\Flash):

183737nrzy2hekky1ne9rf

加载算法文件:(如果不复制FLM文件,是无法选到FR30xx flash)

183737jvitqvyr4otl9rct

在开发手册中提及到,还需要修改开始地址,

183737n9e2snqxiy6sn61i

183739x7fm2i86ppzx8e2x

到此,KEIL MDK上的配置完成;

(3)硬件上,别忘记短接SWCLK和PB10,短接SWDIO和PB11。

二、基于REPL MicroPython实现本地音乐播放

这里是参考论坛大牛qinyunti的开源项目,开源地址是:https://gitee.com/qinyunti/fr3068-e-c-micropython.git

大佬太牛了!!!

我们需要准备一些东西:

1、SecureCRT软件,也是大牛qinyunti在视频中所使用的用来调试串口的软件;

2、蜂鸣器或者扬声器;

硬件构成:

183739rjn4eux0ge428uy4

固件烧录:qinyunti的开源项目,开源地址是:https://gitee.com/qinyunti/fr3068-e-c-micropython.git

软件界面:启动后自动挂载文件系统,并进行自检测试

183739g0k53cp8xsg0s2ge

三、项目说明

大佬qinyunti分享项目的具体用法在视频中,为了便于大家更好使用,这里笼统说明一下具体要做的事情:

(1)下载https://gitee.com/qinyunti/fr3068-e-c-micropython.git中的固件到板载芯片中,下载方法参考上面的具体步骤(可使用SWD下载或者使用串口下载均可);

(2)连接好蜂鸣器;

(3)打开SecureCRT软件,创建serial窗口,连接到对应的COM中,笔者这里使用到的是COM5,所以是Serial-COM5,注意波特率配置为921600,其他配置保持默认即可;

183739nkyylykyuy9dwd2w

(4)烧录好的固件中,可以使用所有功能,但是.wav文件没有并在固件中,因此需要用户通过rxfile 2:/haikuotiankong.wav 1920078命令,将本地的wav文件通过串口传输到板子上;

183739lhx8jjjgkgthst37

使得根目录中,含有至少一个.wav文件,才能正常使用项目功能(播放音乐等)。

如何传输?这里要输入上边的指令,注意名称要和文件名称对应,然后1920078,是文件的大小,文件大小可以通过右键属性进行查阅:

183739vdx1xokxxoxokd5d

183740feledydq92ltqde9

等到这个C出来之后,就可以使用Xmodem协议传送本地文件了,如下图:

183740ok677zojdnj7jrn7

然后弹出文件选择窗口,选择上述名字的wav文件,进入正式传输(传输速度取决于串口和硬件,请耐心等待):

183740a2qp67kq5qeukjjn

传输完成后会显示:

183741gf0n1aj2nepzjkay

此时通过ls 2:/ 命令可以查询根目录文件,如果文件正常,即可进行下一步的测试(ps:如果忘记了命令,可以通过help指令,查询shell指令列表)

183741d1xfmfdvxxdxdd11

然后我们可以使用shell列表中的音乐控制命令进行播放控制(播放,停止,音量调节)

Eg1:dacplay 2:/leiqiao.wav

说明:播放根目录中leiqiao.wav文件

183741hjqd0djk447z72xb

Eg2:dacstop

说明:终止播放

183741f9qq99rl2q99ut1l

Eg3:dacvolume 10

说明:播放音量调节到10,范围:0~100

183741j3nglz4ko46yn95k

Eg4:dacpa

说明:使能,1为使能,0为静音

183741r8qgsl8bjqblsssi

接下来可以使用本地MicroPython的调用功能:

在shell指令表中,可以看到micropython指令,这是大佬给的提示符,可以输入进入micropython界面,看一下反馈:

183742hezeana80464qlhn

183742ve0tve05ti9vy111

项目中,将音频的功能放在了pyb模块中,先导入这个模块:

183742nqeg43ouxx3sx583

创建一个实例:(注意ID从1开始)

183742o8rc08auz58f0u0a

然后play一下指定文件即可:

183742qh0t0fqleddzel43

终止播放:(ps:不需要参数)

183742vrov4o2u1r1u0ffk

调节音量:(ps:参数写在()中)

183743m1byilzij1a7l7lb

静音:(ps:注意这里逻辑是反的, 1就是静音)

183743cesu971i159pv555

退出micropython模式,Ctrl+D

183743iiqqn64k1ek6qqgt


四、评价及总结

在这个项目中,可以体会中M33内核确实很牛,运算等非常丝滑。在DAC播放音乐的时候,即便通过ffmeg压缩了音质为16位,播放还是非常nice的,说明了开发板这个芯片的音频输出功能其实是非常不错的。如果是沿用低成本方案的话,完全可以省略外部需要外拓的音频编解码芯片了。


五、播放音乐的操作演示视频