查看: 3883|回复: 6

[原创] 【智能生活-KL25Z】基于KL25Z的MP3点播器实现方法

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

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7124
    最后登录
    2023-4-20
    发表于 2016-9-19 10:51:02 | 显示全部楼层 |阅读模式
    MCU上实现音频的输出不外乎这样几种方法,即:
    1)不借助外部器件,只凭MCU内部的DAC,外加功放的方式来实现。由于音频输出的数据量较大,故多需要依托于文件管理系统的支持,将音频数据存放于SD卡上。例如基于KL26Z开发板的语音故事书就是采用的这种方法。
    2)利用语音芯片来来实现音频录放,它是在外围器件的辅助下将音频信号存放到芯片内部的存储单元,当播放时再按顺序从存储单元读出以还原音频。如ISD1760就是此类芯片,其不足之处是音频数据的大小要受器件容量的限制,通常最多也就能播放几分钟的内容,多用于报站器或参数播报上。
    3)利用编解码芯片配以外围器件来实现,其音频数据的存储也基本是依托于SD卡,目前在许多中高挡的开发板上常采用该方式。由于此类芯片的引脚比较多,在自行增加该功能时,多采用购置功能模块的方式来实现。此外,它对技术水平的要求也相对高一些。
    4)采用MP3功能模块来实现,相对来讲,它从技术要求、价格、尺寸规格等方面都是首选的目标,故这里就主要介绍它的性能与用法。
    MP3播放模块的外观及引脚排列顺序如图1所示,其音频数据是由mini型SD卡来存储,存储形式为MP3格式的文件,在文件读取时是由模块内部来处理,无需使用者进行干预。该模块有2种工作模式,即简单的独立操控模式和基于通讯的指令操控模式。
    图片1.png
    图1 Mini MP3播放模块

    该模块各引脚的功能如表1所示。
    图片2.png
    当MP3播放模块以简单模式工作时,其线路原理图如图2所示。
    图片3.png
    图2简单控制方式
    可见在独立操控模式下,只需配置几个小按键就可对它进行控制,所对应的操作有播放第一首、下一首、上一首、增加音量、减小音量等。在配置相应电阻的情况下,还可通过电位的变化来实现播放顺序的指定。
    KL25的控制下,可通过菜单来显示当前歌曲的名称,并通过发送短脉冲的方式来控制歌曲的播放,而以发送长脉冲来调节播放的音量。
    由于独立操控模式无法实现歌曲的跳跃式的点播,所以要想增强操控的灵活性,就必须采用指令操控模式。其实现的方法是利用UART0的TXD引脚来连接MP3模块的RX引脚,进行控制指令的传送,其通讯波特率为9600bps。
    KL25中, 串口通讯的初始化语句为 uart0Init(9600,0,0,8,1);
    在指令操控模式下,常用的指令为:
    播放7E FF 06 0D 00 00 00 FE EE EF
    暂停7E FF 06 0E 00 00 00 FE ED EF
    上一首7E FF 06 01 00 00 00 FE FA EF
    一首:7E FF 06 02 00 00 00 FE F9 EF
    结束:7E FF 06 16 00 00 00 FE E5 EF
    按歌曲序号播放歌曲的函数如下:
    1. unsigned char cmd3[] = {0X7E, 0xFF, 0x06, 0X03, 0x00, 0x00, 0x01, 0xFE, 0xF7, 0XEF};
    2. void playn(unsigned int index) //play index
    3. {  //  index为歌曲顺序号:0~2999
    4.         u8 i;
    5.         u8 checksum = 0;      
    6.         cmd3[5] = (u8)(index >> 8);
    7.         cmd3[6] = (u8)(index);
    8.         for(i=2; i<8; i++)
    9.         {
    10.                 checksum += cmd3[i];   //计算校验和
    11.         }
    12.         cmd3[8] = (u8)~checksum;
    13. }
    复制代码
    控制播放音量的函数如下:
    1. unsigned char cmd6[] = {0X7E, 0xFF, 0x06, 0X06, 0x00, 0x00, 0x10, 0xFE, 0xE5, 0XEF}; //set  Volume
    2. void setVolume(u8 index) //play index
    3. {   //  index为音量等级:0~30
    4.         u8 i;
    5.         u8 checksum = 0;
    6.         cmd6[6] = (u8)(index);
    7.         for (i=2; i<8; i++)
    8.         {
    9.                 checksum += cmd6[i];
    10.         }
    11.         cmd6[8] = (u8)~checksum;
    12. }
    复制代码


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-10 15:47
  • 签到天数: 1251 天

    连续签到: 1 天

    [LV.10]以坛为家III

    6

    主题

    2396

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    7534
    最后登录
    2025-5-23
    发表于 2016-9-19 13:03:15 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-11-30 16:16
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    74

    主题

    2793

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    7895
    最后登录
    2025-4-11
    发表于 2016-9-19 15:36:59 | 显示全部楼层
    这个模块我也有一个,特别方便
    nxp.png
    来根华子
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.10]以坛为家III

    175

    主题

    2843

    帖子

    34

    金牌会员

    Rank: 6Rank: 6

    积分
    7124
    最后登录
    2023-4-20
     楼主| 发表于 2016-9-19 21:15:27 | 显示全部楼层
    混森蓝兽 发表于 2016-9-19 15:36
    这个模块我也有一个,特别方便

    的确好使,比编解码芯片好上手。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-6 16:47
  • 签到天数: 27 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    2

    主题

    318

    帖子

    0

    高级会员

    Rank: 4

    积分
    759
    最后登录
    2018-2-24
    发表于 2016-9-29 21:52:47 | 显示全部楼层
    前来学习一下
    110038az4g35rg4sggkott.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-10-27 20:36
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    0

    主题

    47

    帖子

    0

    注册会员

    Rank: 2

    积分
    102
    最后登录
    2016-12-4
    发表于 2016-10-20 20:08:01 | 显示全部楼层
    感谢楼主的分享!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-11 06:45
  • 签到天数: 37 天

    连续签到: 1 天

    [LV.5]常住居民I

    0

    主题

    167

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    342
    最后登录
    2023-7-19
    发表于 2016-10-21 05:02:05 来自手机 | 显示全部楼层
    的确好使,比编解码芯片好上手。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-10 15:14 , Processed in 0.097319 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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