查看: 871|回复: 0

[评测分享] 【NXP OKdo E1双核Cortex M33开发板】测评+ MP3语音模块控制(兼...

[复制链接]
  • TA的每日心情
    奋斗
    2023-5-10 20:09
  • 签到天数: 1742 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2020-11-30 11:32:43 | 显示全部楼层 |阅读模式
    分享到:
    日子过的飞快,眨眼间测评期就要结束了,收获还是满多的,从零积累到多种功能配置的灵活使用。
    本次介绍的是使用串口来控制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_1和SPK_2连接扬声器,VCC和GND连接电源,RX和TX则交换连接串口的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. //FC2_RXD  PIO1_24
    7. IOCON->PIO[1][24] = (IOCON_FUNC1 | IOCON_MODE_INACT  | IOCON_DIGITAL_EN );
    8. //FC2_TXD  PIO0_27
    9. IOCON->PIO[0][27] = (IOCON_FUNC1 | IOCON_MODE_INACT  | IOCON_DIGITAL_EN );
    10. CLOCK_DisableClock(kCLOCK_Iocon);
    11. usart_config_t      s_UARTConfig;
    12. CLOCK_AttachClk(kFRO12M_to_FLEXCOMM2);
    13. USART_GetDefaultConfig(&s_UARTConfig);
    14. s_UARTConfig.baudRate_Bps = 9600;
    15. s_UARTConfig.enableTx = true;
    16. s_UARTConfig.enableRx = false;
    17. USART_Init(USART2, &s_UARTConfig, 12000000);
    18. USART_WriteBlocking(USART2, g_WelcomeBuffer, strlen((const char *)g_WelcomeBuffer));
    19. USART_WriteBlocking(USART2, cmd, 10);
    20. while (1)
    21. {
    22. }
    23. }
    复制代码

    实现了播放功能后,我们还要为它配上中文的歌单选择界面,并由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的播放音量加以调节。

    尽管试用有期限,但对NXP OKdo E1发板的探索之路还会继续,在此再次对活动的组织者及开发板的资助方表示感谢,并祝大家事业兴旺发达!

    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-26 06:29 , Processed in 0.111163 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.