KT404A芯片使用手册_3.串口通讯协议3.4

3.4 串口控制指令详解

以下我们对关键的地方进行详细的说明--针对控制指令:

  1. 指定曲目播放
  2. 指定播放的音量
  3. 指定播放的设备
  4. 全部循环播放指令
  5. 组合播放功能[亮点]
  6. 带音量参数的指定曲目播放

3.4.1 指定歌曲播放指令[0x03]

    们给出的指令是支持指定曲目播放的,歌曲的选择范围为0~3000.其实是可以支持更多的,因为涉及到文件管理的原因,支持过多的歌曲,会导致系统操作缓慢,一般的应用也不需要支持这么多的文件。如果客户有非常规的应用,请事前和我们沟通。此指令在TF卡和U盘状态是按照存储的物理顺序指定的。FLASH同样也是按照物理顺序[拷贝的先后顺序]

(1)、例如选择第一首歌播放,串口的发送部分7E FF 06 03 00 00 01 FE E7 EF

数据

详解

0x7E

起始字节

0xFF

版本信息

0x06

数据长度[不包含校验]

0x03

命令字节

0x00

是否需要应答[0x01=需要应答  0x00=不需要应答]

0x00

曲目的高字节[DH]

0x01

曲目的低字节[DL],这里代表的是一首歌播放

0xFE

校验高字节

0xF7

校验低字节

0xEF

结束字节

(2)、对于选曲,如果选择第100首,首先将100转化为16进制,默认为双字节,就为0x0064。

DH = 0x00  ; DL = 0x64

(3)、其它的操作依次类推即可,因为在嵌入式领域采用16进制是最为方便的一种操作。

3.4.2 指定音量播放指令[0x06]

  1. 、我们系统上电默认的音量为30级,如果要设置音量的话,直接发送相应的指令即可
  2. 、芯片内部设置的音量细分级数为0--30.请用户注意

(3)、例如指定音量为15级,串口发送的指令:7E FF 06 06 00 00 0F FF D5 EF

(4)、DH = 0x00 ; DL = 0x0F ,15转化为16进制为0x000F。可以参照播放曲目部分的说明

3.4.3 单曲循环播放指令[0x08]

循环播放第一曲

7E FF 06 08 00 00 01 xx xx EF

循环播放第二曲

7E FF 06 08 00 00 02 xx xx EF

  1. 争对一些需要单曲循环播放的要求,我们改进这一条控制指令0x08。在操作TF卡或者U盘/以及FLASH时,按照的是文件存储的物理顺序指定,这点请用户注意。
  2. 在循环播放的过程中,可以正常的操作播放/暂停,上一曲、下一曲、音量调节,包括EQ等等并且状态仍然是循环播放.可以通过指定单曲触发播放或者停止来关闭循环播放状态  

 

3.4.4 指定播放设备[0x09]

1、我们的模块默认是支持4种类型的播放设备,只有设备在线才能指定设备去播放设备是否在线,我们软件会自动检测,无需用户关系。

2、看下表,选择合适的指令发送         

(3)、指定设备之后。模块会自动进入停止解码状态,等待用户指定曲目播放。从接收到指定设备到模块内部完成初始化文件系统。大概需要200ms。请等待200ms之后再发送指定曲目的指令。           

指定播放设备-U盘

7E FF 06 09 00 00 01 xx xx EF

xx xx:代表校验

指定播放设备-TF卡

7E FF 06 09 00 00 02 xx xx EF

 

指定播放设备-FLASH

7E FF 06 09 00 00 04 xx xx EF

 

指定播放设备-PC

7E FF 06 09 00 00 05 xx xx EF

指[下载]模式

指定播放设备-SLEEP

7E FF 06 09 00 00 06 xx xx EF

 

 

3.4.5 进入睡眠[0x0A]

进入睡眠模式

7E FF 06 0A 00 00 00 FE F1 EF

xx xx:代表校验

 

指定芯片进入睡眠之后,有两种方式对芯片或者模块进行唤醒

  1.  、指定一下播放的设备,指定播放U盘或者TF卡,或者FLASH都可以唤醒
  2. 、对当前的设备进行一次拔出,再插入也是可以直接唤醒

芯片或者模块进入睡眠之后,待机功耗大概在10MA。功耗依然较大,所以用户对功耗有要求的地方,请注意了。可以选择使用一个pmos管和一个三极管来控制芯片或者模块的供电,不需要的时候可以完全断电。如下图:

 

3.4.6 指定文件夹文件名播放[0x0F]

文件夹01的001xxx.mp3

7E FF 06 0F 00 01 01 xx xx EF

文件夹11的100xxx.mp3

7E FF 06 0F 00 0B 64 xx xx EF

文件夹99的255xxx.mp3

7E FF 06 0F 00 63 FF xx xx EF

 

1、指定文件夹播放是我们制定的扩展功能,默认文件夹的命名方式为"01","11"这样的方式为了系统的稳定性和歌曲切换的速度每个文件夹下默认最大支持255首歌,最支持99个文件夹

2、例如指定"01"文件夹的100xxx.MP3文件,串口发送的指令为:7E FF 06 0F 00 01 64 xx xx EF

DH:代表的是文件夹的名字,默认支持99个文件,即01 -- 99的命名

DL:代表的是曲目,默认最多255首歌,即0x01 ~ 0xFF

3、为了模块的标准性,必须同时指定文件夹和文件名,来锁定一个文件。单独指定文件夹或者单独指定文件名也是可以的,但是这样文件的管理会变差。指定文件夹和指定曲目是支持MP3、WAV

4、下面截两个图说明文件夹和文件名的指定[分左右两个图]

     

5、SPIFLASH的操作和TF卡以及U盘一致,只是SPIFLASH的空间有限,能存放的语音数量有限

这个还需要根据客户对音质的要求进行压缩语音,来存放更多的语音信息

3.4.8 全部循环播放指令[0x11]

循环播放开始

7E FF 06 11 00 00 01 xx xx EF

循环播放所有曲目

循环播放停止

7E FF 06 11 00 00 00 xx xx EF

停止循环播放曲目

 

1、争对一些需要循环播放根目录下面曲目的要求,我们加多这一条控制指令0x11

2、在循环播放的过程中,可以正常的操作播放/暂停,上一曲、下一曲、音量调节,包括EQ等等

3、循环播放开始之后,模块会不停的播放设备里面的曲目,按照存储的物理顺序。播完一遍之后会继续再播放一边,直到接收到播放完成,或者暂停等等指令

3.4.9 播放停止指令[0x15][0x16]

停止播放广告

7E FF 06 15 00 00 00 FE E6 EF

停止当广告,回到背景音乐继续播

停止播放

7E FF 06 16 00 00 00 FE E5 EF

停止软件解码

1、在模块的播放过程中,我们有两种停止方式,一种是停止当前的插播广告,回到当前断点处继续播放背景音乐。另一种是停止所有的播放,包括背景音乐

2、假如当前在播放插播广告,这时发送停止指令0x16,芯片会停止所有播放任务.0x16的停止指令的优先级别是最高的,请用户留意

3.4.10 指定文件夹开始循环顺序播放[0x17]

指定文件夹循环播放

7E FF 06 17 00 00 02 FE E2 EF

指定02文件夹循环播放

 

7E FF 06 17 00 00 01 FE E3 EF

指定01文件夹循环播放

 

1、对于TF卡和U盘或者SPIFLASH,文件夹的命名方式必须是”01” --- “99”。不可以超过99

2一旦指定文件夹循环之后,可以使用播放/暂停/上一曲/下一曲。这些操作命令都不会打断当前的文件夹循环播放状态。也就是说,发送下一曲指令之后,还是会循环当前的文件夹。

3、用户可以发送停止指令0x16来结束循环播放,返回至触发播放状态

 

3.4.11 随机播放设备文件[0x18]

随机播放

7E FF 06 18 00 00 00 xx xx EF

整个设备的随机播放

1、此指令是随机播放设备里面存储的所有语音文件,是按照物理顺序随机播放,不分设备里面是否带有文件夹。并且播放的第一个语音文件一定是设备里面的第一个语音文件

 

3.4.12 对当前的曲目设置为循环播放[0x19]

循环播放开启关闭

7E FF 06 19 00 00 00 FE E2 EF

单曲循环播放开启

 

7E FF 06 19 00 00 01 FE E1 EF

单曲循环播放关闭

1、在播放的过程中发送此指令,会循环播放当前的曲目。如果当前是处理暂停或者停止状态,则芯片不会响应此指令

2、如果要关闭单曲循环播放,发送关闭的指令即可,这样会把当前的曲目播放完毕之后,就停止。

3.4.14 组合播放功能指令[0x21]

组合播放

7E FF 09 21 01 02 02 03 01 04 EF

播放[1,2][2,3][1,4]

 

7E FF 15 21 01 02 02 03 01 04 01 03 01 04 01 05 02 08 03 04 03 01 FE 9A EF

带校验[1,2][2,3][1,4][1,3][1,4][1,5][1,8][3,4][3,1]

 

7E FF 15 21 01 02 02 03 01 04 01 03 01 04 01 05 02 08 03 04 03 01 EF

[1,2][2,3][1,4][1,3][1,4][1,5][1,8][3,4][3,1]

 

1很多应用场合需要用到TTS的功能,譬如报时,报温度,报金额等等应用,如果用户拿我们的模块模仿简单的TTS功能的话,可能会在效果上面大打折扣,矛盾点就是在语音和语音之间的延时。直接按照一个一个文件的指定播放的话,会存在语音和语音之间的延时,这样是不能接受的。因此我们增加了组合播放的功能,同时最多支持指定播放30个语音,按照串口发送的顺序依次播放。

2、发送7E FF 15 21 01 02 02 64 01 04 01 40 01 06 01 07 02 08 03 04 03 02 EF这一帧数据,我们分析一下

CMD= 0x21 --- 查阅指令表

LEN = 0x15 = 21 个字节 ---FF 15 21 01 02 02 64 01 04 01 40 01 06 01 07 02 08 03 04 03 02[其中一段语音,由两个参数组成,即“文件夹编号”和“文件名编号”]

模块会依次播放01文件夹第002曲、02文件夹第100曲、01文件夹第004曲、01文件夹第064曲,01文件夹第006曲、01文件夹第007曲、02文件夹第008曲、03文件夹第004曲、03文件夹第002曲这9段语音。播放完毕就停止。其中每播放完一段语音都会有串口数据返回[按照物理编号]这样就实现了跨文件夹的语音组合播放功能。

特别注意,这里面所有的参数是16进制,请用户注意,如02 64 = 代表02文件夹里面的100.mp3这个文件

3、在组合播放的过程中,是允许用户进入播放暂停和设置音量,但是不允许指定上下曲。如果用户对组合播放的要求比较高的话,请用户对音源自行编辑一下,去掉音源头和尾的一些静音。这样就可以减少语音和语音之间的延时,可以采用“Adobe Audition CS5.5”或者“GoldWave.exe”等等专业音频软件制作。

4、有了这个功能,就可以很方便的实现“欢迎光临,现在时间是13年12月24日”这样的灵活播报方式,大大提高了产品的竞争力。

5、另外在组合播放的过程中,需要停止,可以直接发送停止指令。组合播放的过程中,不允许穿插其他的组合播放,要打断组合播放之前,必须先发送停止指令。

6、组合播放的文件,必须存放在“01”或者“02”或者其他“03-99”文件夹里面,文件必须重命名为“001xx.mp3或者其他,如下截图。组合播放一定是要带文件夹的根目录里面是不支持的,因为根目录是不利于文件管理

     

7、如果组合播放发送的指定文件播放,而设备中没有对应的文件的话,组合播放会在当前停止。

请一定让发送的指令能找到相对应的文件。一旦出错,就会停止在出错的文件位置

  1. 此指令比较长,所以我们去掉了反馈字节,也就是“FEEDBACK”请用户留意
  2. 在组合播放的过程中,busy引脚是持续拉低的,直到播放完成之后才会拉高,这个可以用来检测组合播放结束

3.4.16 多文件夹插播功能[0x25]

插播"ADVERT1"的文件夹,曲目为"001"

7E FF 06 25 00 01 01 FE D4 EF

插播"ADVERT1"的文件夹,曲目为"002"

7E FF 06 25 00 01 02 FE D3 EF

插播"ADVERT2"的文件夹,曲目为"001"

7E FF 06 25 00 02 01 FE D3 EF

        

1、在之前我们的插播基础上,我们增加了多文件夹的插播功能,命名的方式如上图

2、文件夹最多支持9个,也就是从ADVERT1 --- ADVERT9 ,文件夹的命令请一定按照我们给出的规则,否则会导致出错。请注意上图的文件夹命名格式

3、单个插播文件夹下的文件最大不能超过255,也就是“255xxx.MP3/WAV”,请注意上图的文件名的命名格式。

4、完善了插播的相关应用,如当前播放的文件处于单曲循环或者当前文件夹循环,即使有插播进来,也不会改变当前状态,还会是单曲循环或者文件夹循环播放,除非用户使用停止指令。

5、插播的原理请参见3.4.6.

6、此插播的功能,支持TF卡、U盘以及SPIFLASH。插播的文件仅仅允许在同一个设备内进行。

7、在停止状态,可以直接播放ADVERTn文件夹里面的曲目,就像指定文件夹文件名播放一样。

只要是播放ADVERTn文件夹里面的曲目,就不存在插播的问题,也就是说,当前播放的“ADVERT1”

里面的001文件,在没有播放完之前,还可以继续指定播放002文件[此时会打断001文件]。

3.4.17 复位和睡眠的说明[0x0A][0x0B][0x0C]

[进入睡眠模式]

7E FF 06 0A 00 00 00 FE F1 EF

[唤醒睡眠]

7E FF 06 0B 00 00 00 FE F0 EF

[模块复位]

7E FF 06 0C 00 00 00 FE EF EF

 

1、因为芯片是属于硬解码,所以低功耗部分一直是得不到很好的解决,所以用户朋友请注意,需要低功耗的场合,请一定使用控制芯片供电的方法,详细请参考3.4.5章节的说明

2、芯片的复位指令为软复位,这点请用户朋友注意一下,因为芯片内部集成了MAX831L的看门狗芯片,采用的是内部的独立RC震荡时钟,虽然不准,但是确实独立的,这样可以保证芯片在超强干扰下会自动复位。复位的时间为5S-8S。

3、在任何状态下,都可以发送复位指令让芯片复位。

 

3.4.18 指定文件夹循环随机播放[0x28]

指定01文件夹随机播放

7E FF 06 28 00 00 01 FE D2 EF

指定02文件夹随机播放

7E FF 06 28 00 00 02 FE D1 EF

指定03文件夹随机播放

7E FF 06 28 00 00 03 FE D0 EF

 

1、指定文件夹随机播放是我们制定的扩展功能,默认文件夹的命名方式为"01","11"这样的方式为了系统的稳定性和歌曲切换的速度每个文件夹下默认最大支持255首歌,最支持99个文件夹

2、下面截图说明文件夹的命名方式

3、SPIFLASH的操作和TF卡以及U盘一致,只是SPIFLASH的空间有限,能存放的语音数量有限

这个还需要根据客户对音质的要求进行压缩语音,来存放更多的语音信息

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值