十二、JQ8400语音播报模块

发布时间 2023-07-10 19:48:47作者: 稚终KINO

1.管脚说明

引脚 标示 说明
1 ONE LINE 一线串口脚
2 BUSY 忙信号脚,播放时为高,其他为低
3 RX 芯片串口接收脚,接MCU的TX
4 TX 芯片串口发送脚,接MCU的RX
5 GND 芯片数字地
6 DC-5V 芯片供电脚,3.3-5V
7 DAC-R DAC音频输出右声道
8 DAC-L DAC音频输出左声道
9 SPK- 接喇叭
10 SPK+

2.一线串口通信协议

SDA为数据发送端口,发送语音地址,先发送低位。

3.一线数据指令

指令(HEX) 功能 说明
00 数字0

数字0-9可以用于需要数字的功能,

比如选曲、设置音量、设置EQ、

设置循环模式、设置通道、设置插播曲目

先发数字后发功能指令。

01 数字1
02 数字2
03 数字3
04 数字4
05 数字5
06 数字6
07 数字7
08 数字8
09 数字9
0A 清零数字 清除发送的数字
0B 选曲确认

0C 设置音量0-30
0D 设置EQ
0E 设置循环模式
0F 设置通道
10 设置插播曲目
11 播放

单字节控制指令,

仅需发送一个控制指令即可。

12 暂停
13 停止
14 上一曲
15 下一曲
16 上一目录
17 下一目录
18 选择SD卡
19 选择U盘
1A 选择FLASH
1B 系统睡眠

4.一线串口MP3文件命名规则

  (1)文件名需为5位数字,该五位数即为文件的曲目号。

  (2)文件需放在根目录下。

5.一线串口说明和注意事项

  (1)引导码延时要求大于2MS,建议使用4MS延时

  (2)脉冲比例基数在2-5都可以识别

  (3)两个字节之间延时建议在10MS以上

6.代码实现

 1 void jq8400SendOneByteData(u8 dataOrCmd)
 2 {
 3     SDA=1;
 4     Delay_Ms(10);//两个字节发送之间的延时,建议大于10ms
 5     
 6     //发送引导码,大于2ms,建议为4ms
 7     SDA=0;
 8     Delay_Ms(4);
 9     
10     for(int i=0;i<8;i++){//发送数据
11         SDA=1;
12         if(dataOrCmd&0x01){//最低位为1,发送位1,高低电平时间3:1表示发送1,脉冲比例基数2-5都可以识别
13             Delay_Us(1200);
14             SDA=0;
15             Delay_Us(400);
16         }else{//发送位0
17             Delay_Us(400);
18             SDA=0;
19             Delay_Us(1200);
20         }
21         dataOrCmd >>= 1;
22     }
23 }
1     jq8400Init();
2     jq8400SendOneByteData(0x0A);//先发送数字,再发送指令,清除数字指令
3     jq8400SendOneByteData(0x01);//发送数字1
4     //jq8400SendOneByteData(0x00);//发送数字0,结合组成数字10
5     jq8400SendOneByteData(0x0B);//确定选曲指令
6     
7     jq8400SendOneByteData(0x11);//播放指令,单指令