查看: 1669|回复: 4

[原创] 【OKdo E1双核Cortex M33开发板】基于OKdo E1开发板的中文歌单M...

[复制链接]
  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7092
    最后登录
    2023-4-20
    发表于 2020-11-30 11:56:47 | 显示全部楼层 |阅读模式
    本帖最后由 jinglixixi 于 2020-12-10 11:41 编辑

    本次介绍的是用串口来控制MP3播放模块,以选取歌曲的播放内容,其硬件构成包括:
    1.双色OLED屏,以显示歌曲名称等;
    2.MP3播放模块,及朋友送的T卡以存放MP3音乐;
    3.扬声器以产生音箱效果;
    4. NXP OKdo E1开发板,及其板载的小按键以选择播放内容;
    5.USB接口来提供电源支持。
    1.jpg
    1  硬件构成

    由于MP3播放模块的控制要用到串口,故先对串口的通讯功能进行了测试及功能修改。
    在测试过程中,所用的串口为USART2,占用的引脚为PIO0_27PIO1_24,见图2所示。
    2.jpg
    2  USART2的引脚占用

    经程序的修改及测试,串口能以字节的方式来发送MP3播放模块的控制指令,见图3所示。
    有了串口的控制功能,设计的目标就基本实现了一半,接上MP3播放模块就已经能听音乐了!
    3.jpg
    3  发送MP3控制指令

    下面就该MP3播放模块上场了,该模块的引脚分别如图4所示。
    4.jpg
    4  MP3播放模块引脚图


    其中,SPK_1SPK_2连接扬声器,VCCGND连接电源,RXTX则交换连接串口的USART2
    MP3播放模块的指令集比较小,故可以将其存放在数组中以便调用。
    其形式为:
    uint8_tcmd[10]  = {0X7E, 0xFF, 0x06, 0X0D, 0x00,0x00, 0x00, 0xFE, 0xEE, 0XEF};  //play
    uint8_tcmd3[10] = {0x7E, 0xFF, 0x06, 0x03, 0x00, 0x00, 0x01, 0xFE, 0xF7, 0XEF};   //*play index
    uint8_tcmd6[10] = {0X7E, 0xFF, 0x06, 0X06, 0x00, 0x00, 0x10, 0xFE, 0xE5, 0XEF};   //*set Volume

    指令测试的主程序为:
    1. int main(void)
    2. {
    3. POWER_SetBodVbatLevel(kPOWER_BodVbatLevel1650mv, kPOWER_BodHystLevel50mv, false);
    4. BOARD_BootClockFROHF96M();
    5. CLOCK_EnableClock(kCLOCK_Iocon);
    6. IOCON->PIO[1][24] = (IOCON_FUNC1 | IOCON_MODE_INACT  | IOCON_DIGITAL_EN );
    7. IOCON->PIO[0][27] = (IOCON_FUNC1 | IOCON_MODE_INACT  | IOCON_DIGITAL_EN );
    8. CLOCK_DisableClock(kCLOCK_Iocon);
    9. usart_config_t      s_UARTConfig;
    10. CLOCK_AttachClk(kFRO12M_to_FLEXCOMM2);
    11. USART_GetDefaultConfig(&s_UARTConfig);
    12. s_UARTConfig.baudRate_Bps = 9600;
    13. s_UARTConfig.enableTx = true;
    14. s_UARTConfig.enableRx = false;
    15. USART_Init(USART2, &s_UARTConfig, 12000000);
    16. USART_WriteBlocking(USART2, g_WelcomeBuffer, strlen((const char *)g_WelcomeBuffer));
    17. USART_WriteBlocking(USART2, cmd, 10);
    18. while (1)
    19. {
    20. }
    21. }
    复制代码
    实现了播放功能后,我们还要为它配上中文的歌单选择界面,并由OLED屏来显示,其效果如图5所示。
    5.jpg
    5  歌曲播放及选择界面

    在板载按键的配合下,歌单的处理程序如下:
    1. while (1)
    2. {
    3. if(key_read()== KEY3_NUM)  // WAKE
    4. {                                          
    5. while(key_read()== KEY3_NUM);
    6. num++;
    7. if(num >= 6) num=0;
    8. }
    9. if(key_read()== KEY1_NUM)  // USER
    10. {
    11. while(key_read()== KEY1_NUM);
    12. if(num >0) num--;
    13. }
    14. if(key_read()== KEY2_NUM)  // ISP
    15. {
    16. playn(num); //play index
    17. USART_WriteBlocking(USART2, cmd3, 10);
    18. }
    19. }
    20. OLED_ShowNum(0,4,num,1,16);
    21. if(num== 0)
    22. {
    23. OLED_ShowString(24,4,"        ",16);
    24. OLED_ShowCHinese(24,4,0);
    25. OLED_ShowCHinese(40,4,1);
    26. }
    27. if(num== 1)
    28. {
    29. OLED_ShowString(24,4,"        ",16);
    30. OLED_ShowCHinese(24,4,2);
    31. OLED_ShowCHinese(40,4,3);
    32. }

    33. if(num== 2)
    34. {
    35. OLED_ShowCHinese(24,4,4);
    36. OLED_ShowCHinese(40,4,5);
    37. OLED_ShowCHinese(56,4,6);
    38. }
    39.                       。。。

    40. SysTick_DelayTicks(200U);
    41. }
    复制代码
    在按键的功能分配上,其功能划分为:
    WAKE键:向下选取歌曲;
    USER键:向上选取歌曲;
    ISP键: 控制歌曲的播放。


    此外,若使用I/O来读取MP3的运行状态,还能对MP3的播放音量加以调节。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-28 09:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    4

    主题

    35

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    357
    最后登录
    2022-9-29
    发表于 2020-11-30 12:11:10 | 显示全部楼层
    牛逼!!!
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3300

    主题

    6547

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32035
    最后登录
    2024-4-26
    发表于 2020-11-30 12:37:11 | 显示全部楼层
    这个MP3厉害了
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7092
    最后登录
    2023-4-20
     楼主| 发表于 2020-11-30 13:58:11 | 显示全部楼层

    多谢您的支持!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-2-15 00:12
  • 签到天数: 969 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7092
    最后登录
    2023-4-20
     楼主| 发表于 2020-11-30 13:58:39 | 显示全部楼层

    感谢支持!!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-28 05:23 , Processed in 0.128081 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表