目录
1.概述
1.1 简介
KT404A是一个提供串口的语音芯片,完美的集成了MP3、WAV的硬解码。同时软件支持工业级别的串口通信协议,以SPIFLASH作为存储介质,用户可以灵活的选用其中的任何一种设备作为语音的存储介质。通过简单的串口指令即可完成播放指定的语音,以及如何播放语音等功能,无需繁琐的底层操作,使用方便,稳定可靠是此款产品的最大特点。
1.2 功能
1.3 应用
2.1 参数说明
2.2 管脚说明
2.3测试简述
3.1 通讯格式
3.2 通讯指令
3.2.1 控制指令
3.2.2 查询指令
无需任何烧录器,无需任何软件,USB直接烧写FLASH。
同时可以以SPIFLASH为存储介质的U盘功能,后面章节详细说明
KT404A语音芯片_PTUF4FS模块_完整资料V2_20200529.zip-C文档类资源-CSDN下载KT404A是一个提供串口的语音芯片,完美的集成了MP3、WAV的硬解码。同时软件支持工业级别的串口更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qyvhome/51253593
1、支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
2、24位DAC输出,动态范围支持90dB,信噪比支持85dB
3、最大支持16M字节的SPIFLASH。例如W25Q16[2M字节]、W25Q128[16M字节]
4、多种控制模式,并口控制模式、串口模式、AD按键控制模式
5、Miniusb接口更新语音文件,无需安装任何软件。支持XP和WIN7系统。
6、支持组合播放功能,可以实现报时、报温度,在一定程度上可以替代一些昂贵的TTS方案
7、30级音量可调,5级EQ可调[此功能暂不开放]
1、 车载导航语音播报
2、 公路运输稽查、收费站语音提示;
3、 火车站、汽车站安全检查语音提示;
4、 电力、通信、金融营业厅语音提示;
5、 车辆进、出通道验证语音提示;
6、 公安边防检查通道语音提示;
8、 电动观光车安全行驶语音告示;
9、 机电设备故障自动报警;
10、消防语音报警提示;
芯片选用的是SOC方案,集成了一个16位的MCU,以及一个专门针对音频解码的aDSP,采用硬解码的方式,更加保证了系统的稳定性和音质。小巧的封装尺寸更加满足嵌入其它产品的需求
名称 |
参数 |
MP3文件格式 |
1、支持所有比特率11172-3和ISO13813-3 layer3音频解码 |
2、采样率支持(KHZ):8/11.025/12/16/22.05/24/32/44.1/48 |
|
3、支持Normal、Jazz、Classic、Pop、Rock等音效 |
|
USB接口 |
2.0标准 |
UART接口 |
标准串口,TTL电平,波特率可设[用户不可设] |
输入电压 |
3.7V-5.2V[7805后级串一个二极管为最佳] |
额定电流 |
10MA[静态] |
低功耗电流 |
<200uA |
功放功率 |
负载32欧姆0.25W[只支持驱动耳机][不支持直接驱动喇叭] |
尺寸 |
参见封装章节 |
工作温度 |
[-40度] -- [80度] |
湿度 |
5% ~ 95% |
主芯片型号 |
KT404A[SOP16] |
引脚序号 |
引脚名称 |
功能描述 |
备注 |
|
1 |
GPIOA0 |
SPI的数据口 |
可做GPIO |
|
2 |
GPIOA1 |
SPI的时钟口 |
可做GPIO |
|
3 |
GPIOA2 |
通用输入输出口 |
可做GPIO |
|
4 |
GPIOA3 |
ADC/通用输入输出口 |
可做AD口 |
|
5 |
GPIOA4 |
USB接口/通用输入输出口 |
USB设备 |
|
6 |
GPIOA5 |
USB接口/通用输入输出口 |
USB设备 |
|
7 |
GPIOA6 |
音频信号偏置 |
音频信号偏置 |
|
8 |
GND |
模拟地 |
音频信号地 |
8 |
9 |
DACR |
右声道输出 |
峰峰值为3V |
9 |
10 |
DACL |
左声道输出 |
峰峰值为3V |
|
11 |
VDDIO |
3.3V LDO输出[是KT404A的输出] |
最大100MA |
|
12 |
LDO5V |
电源输入 |
4.2V为最佳 |
|
13 |
GND |
数字地 |
||
14 |
GPIOB1 |
通用输入输出口 |
作为IO口用 |
|
15 |
GPIOB0 |
通用输入输出口 |
作为IO口用 |
|
16 |
GPIOA7 |
通用输入输出口 |
作为IO口用 |
串口通讯协议
串口作为一种在控制领域常用的通信,我们进行了工业级别的优化,加入的帧的校验、重发、错误处理等措施,大大加强通信的稳定性和可靠性,同时可以在此基础上扩展更加强大的RS485
进行组网功能,串口的通信波特率可自行设置,默认为9600
支持异步串口通讯模式,通过串口接受上位机发送的命令 停止位 :1 |
||
格式:$S VER Len CMD Feedback para1 para2 checksum $O |
||
$S |
起始位0x7E |
每条命令反馈均以$开头,即0x7E |
VER |
版本 |
版本信息 |
Len |
len后字节个数 |
校验和不计算在内 |
CMD |
命令字 |
表示具体的操作,比如播放/暂停等等 |
Feedback |
命令反馈 |
是否需要反馈信息,1反馈,0不反馈 |
dat |
参数 |
和前面的len相关联,不限制长度 |
checksum |
校验和[占两个字节] |
累加和校验[不计起始位$] |
$O |
结束位 |
结束位0xEF |
举个例子,如果我们指定播放SPIFLASH,就需要发送:7E FF 06 09 00 00 04 FF dd EF
数据长度为6 ,这6个字节分别是[FF 06 09 00 00 04] 。不计算起始、结束、和校验。然后对得到的结果进行累加,再用0减,即“0-checksum=校验数据”。如果这里不明白,可以参考我们的“QYMxFS辅助说明文档”。另外用户也可以直接忽视校验,参考我们的5.3.4章节说明。
我们的通讯分为以下两大块
CMD命令 |
对应的功能 |
参数(16位) |
0x01 |
下一曲 |
|
0x02 |
上一曲 |
|
0x03 |
指定曲目(NUM) |
详见3.4.1 |
0x04 |
音量+ |
|
0x05 |
音量- |
|
0x06 |
指定音量 |
详见3.4.2 |
0x08 |
单曲循环指定曲目播放 |
详见3.4.3 |
0x09 |
指定播放设备 |
保留 |
0x0A |
进入睡眠 -- 低功耗 |
详见3.4.5 |
0x0B |
唤醒睡眠 |
|
0x0C |
芯片复位 |
任何状态有效 |
0x0D |
播放 |
|
0x0E |
暂停 |
|
0x0F |
指定文件夹文件名播放 |
详见3.4.6 |
0x14 |
单个文件夹支持1000首曲目 |
保留 |
0x15 |
停止插播播放背景音乐 |
详见3.4.9 |
0x16 |
停止 |
|
0x17 |
指定文件夹循环播放 |
详见3.4.10 |
0x18 |
指定根目录随机播放 |
详见3.4.11 |
0x19 |
对当前播放的曲目设置为循环播放 |
详见3.4.12 |
0x1A |
开启和关闭芯片的DAC输出 |
详见3.4.13 |
0x21 |
组合播放 |
详见3.4.14 |
0x25 |
多文件夹插播 |
详见3.4.16 |
0x28 |
指定文件夹随机播放 |
详见3.4.18 |
这里是查询芯片的状态和相关的参数
CMD命令详解(查询) |
对应的功能 |
参数(16位) |
0x3C |
保留 |
|
0x3D |
保留 |
|
0x3E |
保留 |
|
0x3F |
查询在线的设备 |
详见3.5.1 |
0x40 |
返回错误,请求重发 |
|
0x41 |
应答 |
|
0x42 |
查询当前状态 |
详见3.4.10 |
0x43 |
查询当前音量 |
|
0x44 |
查询当前EQ |
保留 |
0x45 |
保留 |
该版本保留此功能 |
0x46 |
保留 |
该版本保留此功能 |
0x49 |
查询FLASH的总文件数 |
5个文件夹的总文件数 |
0x4D |
查询FLASH的当前曲目 |
返回文件夹号和曲目指针 |
0x4E |
查询指定文件夹的曲目总数 |
详见3.5.3 |
0x4F |
查询当前设备的总文件夹数 |
详见3.5.4 |
0x61 |
查询当前文件夹指针 |
仅支持FLASH |
/******************************************************************************************************************
+--------------------------------------------------+
主函数部分
+--------------------------------------------------+
- 实现功能:
- 目前进展:
- 日期 :2013-05-06
- 作者 :
- 运行环境:STC 晶振:11.0592M 波特率:9600
- 备注 :在普中科技的51开发板上调试OK --- STC89C516RD+
1、实现芯片上电分别指定播放第一曲和第二曲,基本的程序供用户测试
2、该测试程序必须是模块或者芯片方案中,有设备在线,譬如U盘、TF卡、FLASH等等
3、
******************************************************************************************************************/
#include "STK6037.h"
//运行晶振:11.05926MHZ
#define TIMER0_H (65536-1800)/256//定时2Ms
#define TIMER0_L (65536-1800)%256
#define SYS_Fosc 11059200 //晶振频率
#define COMM_BAUD_RATE 9600 //串口波特率
#define OSC_FREQ 11059200 //11059200
static INT8U Send_buf[10] = {0} ;
static INT8U Recv_buf[10] = {0} ;
static INT8U SendDataLen = 0 ;
static INT8U ResendDataLen = 0 ;
/******************************串口1的波特率********************************/
//T1作波特率发生器
//在波特率加倍情况下
#define BAUD_57600 256 - (OSC_FREQ/192L)/57600L // 254 FF
#define BAUD_28800 256 - (OSC_FREQ/192L)/28800L // 254 FE
#define BAUD_19200 256 - (OSC_FREQ/192L)/19200L // 253 FD
#define BAUD_14400 256 - (OSC_FREQ/192L)/14400L // 252 FC
#define BAUD_9600 256 - (OSC_FREQ/192L)/9600L // 250 FA
/*****************************************************************************************************
- 功能描述:10us的延时函数
- 隶属模块:常用函数库(内部)
- 参数说明:无
- 返回参数:无
- 注: 在这里的运行环境是51,晶振为12MHZ
*****************************************************************************************************/
void Delay_Us(INT32U z)
{
while(z--);
}
/***********************毫秒级别延时************************/
void Delay_Ms(INT32U z)
{
INT32U x=0 , y=0;
for(x=110 ; x>0 ;x--)
for(y=z; y>0;y-- );
}
/*****************************************************************************************************
- 功能描述: 串口1初始化
- 隶属模块: 外部
- 参数说明: 无
- 返回说明: 无
- 注: 都是9600波特率
*****************************************************************************************************/
void Serial_init(void)
{
TMOD = 0x20; // 设置 T1 为波特率发生器
SCON = 0x50; // 0101,0000 8位数据位, 无奇偶校验
PCON = 0x00; //PCON=0;
TH1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);//设置为9600波特率
TL1=256-(SYS_Fosc/COMM_BAUD_RATE/32/12);
TR1 = 1; //定时器1打开
REN = 1; //串口1接收使能
ES = 1; //串口1中断使能
}
/********************************************************************************************
- 功能描述: 串口发送一个字节
- 隶属模块: 外部
- 参数说明:
- 返回说明:
- 注:
********************************************************************************************/
void Uart_PutByte(INT8U ch)
{
SBUF = ch;
while(!TI){;}
TI = 0;
}
/*****************************************************************************************************
- 功能描述: 串口发送一帧数据
- 隶属模块: 内部
- 参数说明:
- 返回说明:
- 注:无
*****************************************************************************************************/
void SendCmd(INT8U len)
{
INT8U i = 0 ;
Uart_PutByte(0x7E); //起始
for(i=0; i>8);
*(Str+i+1) = (INT8U)(xorsum & 0x00ff);
}
/********************************************************************************************
- 功能描述: 串口向外发送命令[包括控制和查询]
- 隶属模块: 外部
- 参数说明: CMD:表示控制指令,请查阅指令表,还包括查询的相关指令
feedback:是否需要应答[0:不需要应答,1:需要应答]
data:传送的参数
- 返回说明:
- 注:
********************************************************************************************/
void Uart_SendCMD(INT8U CMD ,INT8U feedback , INT16U dat)
{
Send_buf[0] = 0xff; //保留字节
Send_buf[1] = 0x06; //长度
Send_buf[2] = CMD; //控制指令
Send_buf[3] = feedback;//是否需要反馈
Send_buf[4] = (INT8U)(dat >> 8);//datah
Send_buf[5] = (INT8U)(dat); //datal
DoSum(&Send_buf[0],6); //校验
SendCmd(8); //发送此帧数据
}
void main()
{
Delay_Us(1) ;
Delay_Ms(1) ;
Serial_init() ;
Delay_Ms(1000) ;//延时大概6S
Uart_SendCMD(0x03 , 0 , 0x01) ;//播放第一首
Delay_Ms(1000) ;//延时大概6S
Uart_SendCMD(0x03 , 0 , 0x02) ;//播放第二首
Delay_Ms(1000) ;//延时大概6S
Uart_SendCMD(0x03 , 0 , 0x04) ;//播放第四首
while(1) ;
}
一、KT404A常见问题集锦:
问题 |
1、KT404A是什么? 具备哪些功能? 有什么特色? |
答疑 |
|
问题 |
2、KT404A工作电压多少?电流是多少?串口波特率是多少?支持多大的喇叭? |
答疑 |
|
问题 |
3、KT404A芯片如何快速的测试?如何快速的上手使用呢 |
答疑 |
|
问题 |
4、请问资料如何下载呢?有问题需要咨询找谁呢? |
答疑 |
(1)、您好,资料在“宝贝详情”里面有专用下载链接[注意要使用PC才能看到] (2)、无论是售前还是售后,有技术问题随时拨打“13510250437 滕工” |
问题 |
5、KT404A如何下载语音到存储器里面呢? 拷贝是按照什么顺序呢? |
答疑 |
|
问题 |
6、KT404A我焊接到PCB板上面之后,为什么没有任何反应呢? |
答疑 |
|
问题 |
|
答疑 |
|