[开发板与模块] 【ESK32-30519 + ESK32-21001测评】+菜单式MP3播放控制

[复制链接]
 楼主| jinglixixi 发表于 2022-9-29 09:01 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2022-9-29 09:04 编辑

尽管在ESK32-21001扩展板上配有I2S功能单元,但HT32F54253却没有 I2S接口,因此就无法借助它来实现语音播放功能了。为此,我们可以借助MP3功能模块来实现音乐播放的功能,其外观及引脚布局见图1所示。

1.jpg
1 MP3功能模块

MP3功能模块支持2种工作模式,即按键操控模式和串口控制模式。为了便于直观地以菜单的方式来选取乐曲,是由MDM_2802显示模块来显示播放菜单,并以“★”来进行指示标识,其界面效果如图2所示。
2.jpg
2 界面效果
进行选取操作则是通过扩展板上机械按键,并采用巡回的处理方式来处理,其效果如图3所示。
3.jpg
3 菜单选择
在菜单选取时,K1键是向下选取,K2键则是向上选取。,按键的电路连接如图4所示。
4.jpg
4 按键原理图
K1键的处理函数为:
  1. void  KEY1(void)
  2. {
  3.   int i;
  4.   FlagStatus InputStatus = SET;
  5.   InputStatus = GPIO_ReadInBit(HT_GPIOB, GPIO_PIN_2);
  6.   if(InputStatus == RESET)
  7.   {
  8.                    if(w<180)
  9.                    {
  10.                               showhanzi16(30,75+w,37,RED,RED);
  11.                               playn(w/30);
  12.                               w=w+30;
  13.                               showhanzi16(30,75+w,37,YELLOW,RED);
  14.                               for(i=0; i<10; i++)
  15.               {
  16.                     UxART_TxSend(cmd3[i]);
  17.               }
  18.                    }
  19.                    else
  20.                    {
  21.                               showhanzi16(30,255,37,RED,RED);
  22.                               w=0;
  23.                               showhanzi16(30,75+w,37,YELLOW,RED);
  24.                    }
  25.                    while(GPIO_ReadInBit(HT_GPIOB, GPIO_PIN_2) == RESET);
  26.   }
  27. }

K2键的处理函数为:
  1. void  KEY2(void)
  2. {
  3.   int i;
  4.   FlagStatus InputStatus = SET;
  5.   InputStatus = GPIO_ReadInBit(HT_GPIOD, GPIO_PIN_3);
  6.   if(InputStatus == RESET)
  7.   {
  8.                    if(w>=30)
  9.                    {
  10.                               showhanzi16(30,75+w,37,RED,RED);
  11.                               playn(w/30);
  12.                               w=w-30;
  13.                               showhanzi16(30,75+w,37,YELLOW,RED);
  14.               for(i=0; i<10; i++)
  15.               {
  16.                  UxART_TxSend(cmd3[i]);
  17.               }
  18.                    }
  19.                    else
  20.                    {
  21.                               showhanzi16(30,75,37,RED,RED);
  22.                               w=180;
  23.                               showhanzi16(30,255,37,YELLOW,RED);
  24.                    }
  25.                    while(GPIO_ReadInBit(HT_GPIOD, GPIO_PIN_3) == RESET);
  26.   }
  27. }

在MP3功能模块的控制上是将其RX引脚与PA4相连接,从而接收核心板所发送的指令,其测试结果如图6所示。
5.jpg
图5 串口通信接口
6.jpg
图6 指令发送
实现菜单显示及选择处理的主程序为:
  1. int main(void)
  2. {
  3.     HT32F_DVB_LEDInit(HT_LED1);
  4.     UxART_Configuration();
  5.     UxART_TxTest();
  6.          app_tft_init();
  7.          ili9341_init();
  8.          ili9341_clear(RED);
  9.          LCD_DrawLine(WHITE ,0, 50, 239, 50);
  10.          LCD_DrawLine(WHITE,0, 290, 239, 290);
  11.          BACK_COLOR=RED;
  12.          POINT_COLOR=YELLOW;
  13.          showimage();
  14.          GUI_DispChar('M', 80,16);
  15.          GUI_DispChar('P', 90,16);
  16.          GUI_DispChar('3', 100,16);
  17.          showhanzi16(115,16,32,WHITE,RED);
  18.          showhanzi16(135,16,33,WHITE,RED);
  19.          showhanzi16(155,16,34,WHITE,RED);
  20.          showhanzi16(175,16,35,WHITE,RED);
  21.          showhanzi16(195,16,36,WHITE,RED);
  22.          showhanzi16(60,75,0,YELLOW,RED);
  23.          showhanzi16(80,75,1,YELLOW,RED);
  24.          showhanzi16(100,75,2,YELLOW,RED);
  25.          showhanzi16(30,75,37,YELLOW,RED);
  26.          showhanzi16(60,105,3,YELLOW,RED);
  27.          showhanzi16(80,105,4,YELLOW,RED);
  28.          showhanzi16(100,105,5,YELLOW,RED);
  29.          showhanzi16(120,105,6,YELLOW,RED);
  30.          showhanzi16(60,135,7,YELLOW,RED);
  31.          showhanzi16(80,135,8,YELLOW,RED);
  32.          showhanzi16(60,165,9,YELLOW,RED);
  33.          showhanzi16(80,165,10,YELLOW,RED);
  34.          showhanzi16(60,195,11,YELLOW,RED);
  35.          showhanzi16(80,195,12,YELLOW,RED);
  36.          showhanzi16(100,195,13,YELLOW,RED);
  37.          showhanzi16(120,195,14,YELLOW,RED);
  38.          showhanzi16(60,225,15,YELLOW,RED);
  39.          showhanzi16(80,225,16,YELLOW,RED);
  40.          showhanzi16(100,225,17,YELLOW,RED);
  41.          showhanzi16(120,225,18,YELLOW,RED);
  42.          showhanzi16(140,225,19,YELLOW,RED);
  43.          showhanzi16(60,255,20,YELLOW,RED);
  44.          showhanzi16(80,255,21,YELLOW,RED);
  45.          showhanzi16(100,255,22,YELLOW,RED);
  46.          showhanzi16(120,255,23,YELLOW,RED);
  47.          showhanzi16(140,255,24,YELLOW,RED);
  48.          showhanzi16(160,255,25,YELLOW,RED);
  49.          showhanzi16(180,255,26,YELLOW,RED);
  50.          LCD_ShowString(60,294,"BY: jinglixixi");
  51.          key_Configuration();
  52.          while (1)
  53.          {
  54.                      KEY1();
  55.                      KEY2();
  56.          }
  57. }





tifmill 发表于 2022-10-1 14:44 | 显示全部楼层
I2S可以spi模拟吗              
xiaoyaodz 发表于 2022-10-1 15:05 | 显示全部楼层
这个设计的非常棒呢。              
jstgotodo 发表于 2022-10-1 15:29 | 显示全部楼层
向楼主学习一下 了。        
mituzu 发表于 2022-10-1 16:03 | 显示全部楼层
如何实现直接解析mp3的功能呢              
bartonalfred 发表于 2022-10-1 16:39 | 显示全部楼层
使用是什么gui实现的?              
 楼主| jinglixixi 发表于 2022-10-2 16:47 | 显示全部楼层
tifmill 发表于 2022-10-1 14:44
I2S可以spi模拟吗

估计够呛
 楼主| jinglixixi 发表于 2022-10-2 16:47 | 显示全部楼层
xiaoyaodz 发表于 2022-10-1 15:05
这个设计的非常棒呢。

感谢支持!!!
 楼主| jinglixixi 发表于 2022-10-2 16:48 | 显示全部楼层
jstgotodo 发表于 2022-10-1 15:29
向楼主学习一下 了。

感谢支持!!!
 楼主| jinglixixi 发表于 2022-10-2 16:51 | 显示全部楼层
mituzu 发表于 2022-10-1 16:03
如何实现直接解析mp3的功能呢

模块内部自身实现的,用户只需串口发送指令使用即可。
 楼主| jinglixixi 发表于 2022-10-2 16:52 | 显示全部楼层
bartonalfred 发表于 2022-10-1 16:39
使用是什么gui实现的?

没有调用现有的GUI,只是设计几个基本函数来实现的。
Henryko 发表于 2022-10-4 19:53 | 显示全部楼层
好厉害,向楼主学习
 楼主| jinglixixi 发表于 2022-10-5 09:03 | 显示全部楼层
Henryko 发表于 2022-10-4 19:53
好厉害,向楼主学习

感谢支持
chenjun89 发表于 2022-10-5 12:04 来自手机 | 显示全部楼层
背景色可以换一个
 楼主| jinglixixi 发表于 2022-10-5 12:40 | 显示全部楼层
rosemoore 发表于 2023-1-6 20:27 | 显示全部楼层
非常完整的设计              
 楼主| jinglixixi 发表于 2023-1-7 00:37 | 显示全部楼层

感谢支持!!!
lzmm 发表于 2023-1-7 16:26 | 显示全部楼层
这个可以做蓝牙音频播放吗?              
 楼主| jinglixixi 发表于 2023-1-7 22:56 | 显示全部楼层
lzmm 发表于 2023-1-7 16:26
这个可以做蓝牙音频播放吗?

问题不大,加个串口转蓝牙的模块。但只是传指令而不是传数据。
wengh2016 发表于 2023-1-9 12:58 | 显示全部楼层
菜单式开发应该很简单了 。              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

517

主题

2932

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部