tag 标签: REPL

相关博文
  • 2025-2-23 22:23
    60 次阅读|
    0 个评论
    【富芮坤FR3068x-C】基于REPL MicroPython实现本地音乐播放
    收到富芮坤开发板已经有很久了,今天与大家分享基于REPL MicroPython实现本地音乐播放。什么是REPL?其实REPL是Read-Eval-Print Loop 的缩写,中文可以理解为“读取-求值-输出循环”。它是一种交互式编程环境,允许用户输入代码并立即看到执行结果。REPL 是许多编程语言(如 Python、JavaScript 等)的常见特性。在 MicroPython 中,REPL 是一个非常重要的工具,它允许开发者通过串口与 MicroPython 设备(如 ESP32、ESP8266、Raspberry Pi Pico 等)进行交互式编程和调试。 本次根据官方提供的题目方向,与大家分享基于REPL MicroPython实现本地音乐播放的操作。 拿到FR3068x-C低功耗开发板首先是跑了一下关于官方提供的例程,例程基于是在官网下载的,使用的是keil打开,打开例程如下“富芮坤FR3068E-基础开发文件_202412\富芮坤FR3068E-基础开发文件_202412\sdk__202411\examples\evb_demo\lvgl_demo\MDK-ARM” 在编译的时候,发现有2个错误,按理来说官方提供的例程不会有编译报错的问题,但是确实是报错了,报错如下: ../Src/main.c(138): error: call to undeclared function 'rtc_running'; ISO C99 and later do not support implicit function declarations ../Src/main.c(323): error: call to undeclared function 'rgb_controller_reinit'; ISO C99 and later do not support implicit function declarations 这两个错误可以如下解决: 解开main.c中被屏蔽的头文件 //#include "fr_device_rtc.h" 在main.c中新增 #include "driver_st7282_rgb_hw.h" 在app_config.h中修改: #define ENABLE_PSRAM 0 再次编译发现会编译通过,没有error,这时就可以将生成的bin烧录在开发板之中。生成的bin文件Project_burn.bin路径如下:富芮坤FR3068E-基础开发文件_2024121\富芮坤FR3068E-基础开发文件_202412\sdk__202411\examples\evb_demo\lvgl_demo\MDK-ARM\output 接下来讲讲烧录,烧录使用官方提供的烧录工具即可,也可以使用daplink,其实官方板载是有个daplink的,但是daplink与屏幕引脚复用了,如果使用daplink的话,需要按住复位然后点击烧录的一瞬间松开复位(该操作需要重复若干次,即可实现烧录成功),硬件方面需要将PB10和PB11用跳线的方式跳接到SWDC和SWDO。如果用keil烧录的话,还需要将路径为“富芮坤FR3068E-基础开发文件_2024121\富芮坤FR3068E-基础开发文件_202412\sdk__202411\components\tools\keil”中的关于FR3068E的flm算法,复制到keil的Keil_v5\ARM\Flash之中才可以。本次使用的是串口烧录,串口烧录比较简单,官方板载的烧录器支持USB虚拟串口,因此不需要外接其他的线,保证PB5和PB1接入到RX和TX上即可,这样就可以利用板载的虚拟串口与FR3068E进行串口通讯。串口烧录的话就需要打开下图软件,同时知道虚拟串口在电脑的设备管理器中占用的是COM几,在这里选择好,把波特率设置为115200,打开串口,同时将要烧录的固件加载好即可。在硬件部分上电串口接好之后,按下复位键,即可实现自动烧录程序固件,该时间较长,看进度条和提示框提示即可,在提示烧录成功正常固件以成功烧录。 接下来就是基于REPL MicroPython实现本地音乐播放,由于不是很会MicroPython。所以这里参考借鉴了大佬qinyunti的工程,在这里致敬感谢,大佬的项目地址如下,各位看官需要请跳转: https://gitee.com/qinyunti/fr3068-e-c-micropython 根据大佬移植的程序固件,了解到,操作就是基于串口与 MicroPython 设备(这里指FR3068E)进行交互式编程和调试。将生成好的固件烧录开发板之中,本次需要自己接入一个扬声器,接入方法如下图所示。 既然都知道REPL是一种交互式编程环境,那我们就可以把它理解成ssh的操作了,之前大家都推荐使用SecureCRT,那我们就利用SecureCRT来实现数据的交互“音乐播放”吧。 关于SecureCRT简单配置一下,按照如下配置即可。步骤就是先创建一个回话,选择串口通讯,接下来选择正确接入开发板的串口和波特率,这里注意波特率是921600。 接下来就是配置会话交互,不然你就只能看到接收窗口,而不能输入内容。要输入内容需要如下配置: 进入到这里之后,就可以进行数据交互了,接下来就是要看交互命令是否可用呀,这时候最常用的就是help命令了,输入help命令,接收窗口会有数据返回,则代表固件烧录成功,并且已经支持了REPL。 看到help命令是不是很熟悉啊,跟ssh或者win命令差不多啊,OK,我们接着往下走,既然需要播放音乐,我们就需要加载音乐啊,本次需要利用ssh传输音频到开发板之中,然后进行播放。 传输指令如下: rxfile 2:/libiekaichuhua.wav 1921024 指令解释:rxfile:rxfile name len,传输文件,格式为名字,长度 filepath 表示文件路径,如2:/libiekaichuhua.wav filesize 表示wav文件的大小,以字节为单位,如libiekaichuhua.wav文件在磁盘的大小为 1921024 字节 将编辑好的命令,复制到交互窗口之中,如下图所示。 将命令发送之后,会有返回CCCC,这是等待接收数据的状态,接下来就是需要将数据加载上去了。加载音频操作如下:点击传输,发送xmodem,接下来选择要发送的文件即可。 接下来就会有显示开始传输字样,速度较慢,需要等待一些时间。当传输至100%之后,并且没有报错,则说明传输成功了。接下来就可以播放了。 操作命令参考: 打开功放 dacpa 1 播放音频 dacplay 2:/ libiekaichuhua.wav 停止播放 dacstop 调整音量 dacvolume 5 关闭功放 dacpa 0 这里需要打开功放,播放音频,调整音量,停止播放几个操作,均测试没问题。 至此,关于基于REPL MicroPython实现本地音乐播放得以顺利完成,这里着重感谢大佬@qinyunti分享的移植工程,感谢富芮坤电子与面包板社区的给力活动,得以学习这么优秀的MCU,品其MCU性能很是强大,关于lvgl界面做的十分流畅,后续做关于智能家居方面的产品确实是一个不错的方案选择。最后祝社区与富芮坤电子越来越好,生态做的越来越棒