一. 简介
距离Ebullient硬件发布已有一段时间,小一个月吧,在这段时间内在努力的编写代码,现在终于完成了第一阶段的功能设计,算是一个小型的样机吧,基本的代码框架基本确定了,相信后续的会快一点(希望如此吧),下面就给大家介绍一下整体的软件框架与具体功能的介绍吧。
二. 软件框架
- 第一点就是核的使用,主控是ESP32S3双核,所以本次将两个核都使用起来了,一个核用来跑界面,另外一个核用来跑驱动相关的代码,两个核之间的通讯使用全局变量,一个核只置位变量,另外一个核只复位变量,尽量的保证变量的值不出错。使用全局变量可能不妥的地方,后期可能会根据需要换成消息队列、信号量等等RTOS中进程间通讯的方法。
-
第二点就是LVGL的页面管理,在整个设计的过程中,会涉及到非常多的界面,如果在开始的时候就对它们进行初始化,内存肯定是吃不消的,只有加载对应的页面的时候,才对其进行初始化;还有界面之间的切换,如何优雅便捷的进行切换也是一个难点。
页面管理的的过程大概如下,将新页面的初始化函数,以及页面ID等等相关的数据添加到页面堆里面,如果页面管理通过页面ID来进行当前页面的显示,最简单的管理过程就是这样的。本次实现的页面管理在之前发布过的一个页面管理的代码上进行了修改和完成,使其更加完善。
每个页面都添加了一些新的属性: 父页面ID,子页面ID,回调函数设置函数指针。父页面ID和子页面ID可以让界面间的切换更加优雅高效。而回调函数设置函数指针(后续可能会添加界面销毁的函数指针),类似于C++类的析构和构造函数,更加优雅高效的初始化、复位变量和释放资源。
- 第三点就是LVGL界面与功能函数。这将其分成了两个.c文件进行编写,一个只用于对界面进行初始化,另外一个用来响应界面相关的动作;这样在后续的界面优化与功能优化会简单很多。
以上,就是当前的一个软件架构了,感兴趣的话可以访问Gitee仓库自行下载: https://gitee.com/whpUp/ebullient
三. 软件功能
FPGA之旅 出品
在硬件发布的时候,已经明确了三大基本功能,所以本次阶段性总结也是围绕这点:
- 音乐播放:可以通过读取TF卡中的WAV音乐文件进行音乐的播放,暂停,快进,上一曲和下一曲等基本功能,另外还通过DSP库提供的FFT函数进行音乐的频谱分析,在界面上绘制音乐的频谱图。
- 通讯: 完成了WIFI连接和TCP服务器的连接,WIFI和TCP的信息存储在TF卡中,方便修改(蓝牙和WIFI类似,放在后面做);完成了NRF2.4GL01底层驱动,可以完成与其进行数据的读写。本次只实现了通讯的可行性,确保了三种方式的正确性,还未完成具体的通讯协议,将在下一阶段中完成。
- OTA升级: 完成了从TF卡中加载固件进行升级,验证了OTA升级的可行性,下一阶段再扩展到WIFI,蓝牙和NRF2.4GL01无线通讯进行升级。
以上就是这三个主要功能完成的一个基本情况,还有许多不完善的情况,需要在下一阶段进一步的完善。
最后就是一个演示视频啦:
跳转链接(公众号)
需要实物的也可以私聊哦,感兴趣的话可以访问Gitee仓库自行下载: https://gitee.com/whpUp/ebullient