目录
1.概述
1.1 简介
KT404A是一个提供串口的语音芯片,完美的集成了MP3、W A V的硬解码。同时软件支持工业级别的串口通信协议,以SPIFLASH作为存储介质,用户可以灵活的选用其中的任何一种设备作为语音的存储介质。通过简单的串口指令即可完成播放指定的语音,以及如何播放语音等功能,无需繁琐的底层操作,使用方便,稳定可靠是此款产品的最大特点。
无需任何烧录器,无需任何软件,USB直接烧写FLASH。
同时可以以SPIFLASH为存储介质的U盘功能,后面章节详细说明
1. 2 功能
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可调[此功能暂不开放]
- 支持外挂多种类型的功放,如3W、5W、10W等等
- 支持上电循环播放的功能
- 可以支持SPIFLASH[超小型封装]作为存储介质
1. 3 应用
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.7 V-5.2 V [7805后级串一个二极管为最佳]
额定电流
10MA[静态]
低功耗电流
功放功率
负载32欧姆0.25W[只支持驱动耳机][不支持直接驱动喇叭]
尺寸
参见封装章节
工作温度
[-40 度] — [8 0度]
湿度
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口用
- 、只要需要外接喇叭的应用,即使是0.5W的,也是需要外加功放的
- 、DACL和DACR只能推动耳机,是芯片内部自己产品的音频信号,就像电脑的音频接口一样。
**
**
-
用户拿到芯片之后,可以直接插上USB线缆,对芯片进行下载语音,正常,插入USB线之后,电脑会显示如U盘插入一样的窗口。并且电脑会自动安装USB驱动,无需用户关心
-
如果下载语音完成之后,有两种选择测试
-
、用户可以直接拔掉USB线缆,再供电测试[注意不要插入电脑],相当于对芯片进行一次重启。[建议这样测试]
-
、下载完声音之后,可以直接使用外接电源或者USB充电头来供电测试
-
进入工作状态之后,就可以按照我们的按键表格,来进行芯片的简单测试了
- 如果用户需要简单的测试一下音质效果,搭建好电路之后,在芯片的第4脚,连接一个按键[微动开关]到地,按一下芯片就会播放第一曲
串口通讯协议
串口作为一种在控制领域常用的通信,我们进行了工业级别的优化,加入的帧的校验、重发、错误处理等措施,大大加强通信的稳定性和可靠性,同时可以在此基础上扩展更加强大的RS485
对于联网,串口的通信波特率可以自行设置。默认值为9600。
[En]
For networking, the communication baud rate of the serial port can be set by itself. The default is 9600.
3.1 通讯格式
支持异步串口通讯模式,通过串口接受上位机发送的命令
通讯标准:9600 bps
数据位 :8
停止位 :1
校验位 :none
流控制 :none
格式:$S VER Len CMD Feedback para1 para2 checksum $O
$S
起始位0x 7E
每条命令反馈均以$开头,即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章节说明。
3.2 通讯指令
我们的交流分为以下两个部分
[En]
Our communication is divided into the following two parts
- 控制指令
- 查询芯片的参数以及状态
3.2.1 控制指令
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
将当前播放的曲目设置为循环播放
[En]
Set the currently played track to loop
详见3.4.12
0x1A
开启和关闭芯片的DAC输出
详见3.4.13
0x 21
组合播放
详见3.4.14
0x 25
多文件夹插播
详见3.4.16
0x28
指定文件夹随机播放
详见3.4.1 8
3.2.2 查询指令
这里是查询芯片的状态和相关的参数
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
查询指定文件夹中的曲目总数
[En]
Query the total number of tracks in the specified folder
详见3.5.3
0x4F
查询当前设备的文件夹总数
[En]
Query the total number of folders for the current device
详见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<len; i++) 数据 { uart_putbyte(send_buf[i]) ; } uart_putbyte(0xef) 结束 ******************************************************************************************** - 功能描述:求和校验 隶属模块: 参数说明: 返回说明: 注: 和校验的思路如下 发送的指令,去掉起始和结束。将中间的6个字节进行累加,最后取反码 接收端就将接收到的一帧数据,去掉起始和结束。将中间的数据累加,再加上接收到的校验 字节。刚好为0.这样就代表接收到的数据完全正确。 void dosum( int8u *str, len) int16u xorsum="0;" i; for(i="0;" i<len; + str[i]; -xorsum; *(str+i)="(INT8U)(xorsum">>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) ;
}</len;>
一、KT404A常见问题集锦:
问题
1、KT404A是什么? 具备哪些功能? 有什么特色?
答疑
- 、KT404A是一颗专用于语音播报,支持外挂SPIFLASH,或者TF卡、U盘。的 MP3语音芯片,标准SOP16封装,支持 高音质输出
- 、支持串口UART控制,支持 插播和 组合播报,非常适合游戏机、播报金额
- 、KT404A支持 虚拟spiflash或者TF卡为U盘,方便拷贝语音到设备
- 、芯片是成熟5年的产品,组合播报金额或者插播都非常稳定,成本低廉
- 、spiflash和TF卡只能二选一,U盘是都支持
- 、SPIFLASH选用W25Qxx系列,最大支持16M字节
- 、TF卡和U盘最大支持32G,FAT32文件系统
问题
2、KT404A工作电压多少?电流是多少?串口波特率是多少?支持多大的喇叭?
答疑
- 、KT404A的工作电压是3.3V–5V,注意如果外接功放芯片,则建议用5V
- 、待机电流10mA,工作电流大概16mA。如果外接功放则视喇叭功率而定
- 、串口波特率是9600,注意是TTL信号
- 、支持喇叭的大小,视外接功放芯片的驱动能力而定
问题
3、KT404A芯片如何快速的测试?如何快速的上手使用呢
答疑
- 、当您把芯片焊接到PCB板上面的时候,如果硬件连接正常,连接USB到电脑是一定能看到”虚拟的盘符”,如果没有请检查硬件的连接
- 、芯片的第4脚为测试脚,可以接一个按键,一端接地一端连接4脚,按一下芯片会自动播放当前设备的音乐
- 、芯片的16脚为busy脚,有声音输出则为低电平,反之则为高电平
- 、以上都正常之后,可以使用 CH340G的USB转TTL,连接芯片使用”串口调试助手”进行发送指令进行测试了
- 、以上都正常,就可以使用单片机去正常控制了
问题
4、请问资料如何下载呢?有问题需要咨询找谁呢?
答疑
(1)、您好,资料在”宝贝详情”里面有专用下载链接 [注意要使用PC才能看到]
(2)、无论是售前还是售后,有技术问题随时拨打” 13510250437 滕工“
问题
5、KT404A如何下载语音到存储器里面呢? 拷贝是按照什么顺序呢?
答疑
- 、芯片有专用的USB接口,可以连接PC电脑,芯片会自动把存储器虚拟成为U盘,您就可以像 拷贝U盘一样,往里面拷贝语音
- 、 拷贝的顺序,是先考进去的编号为1,后考进去的编号为2,以此类推
- 、还有一种是指定文件夹和文件名的方式,这样就不需要按照顺序。芯片会按照文件夹和文件名去查找对应的文件
问题
6、KT404A我焊接到PCB板上面之后,为什么没有任何反应呢?
答疑
- 、这个问题比较模糊,所以需要多重判断,才能找出问题来
- 、首先看一下芯片的供电正常不正常,也就是芯片的12脚,输入电压是否是3.3–5.2V之间
- 、在看看芯片的11脚,是否有3.3V的电压输出。如果超过3.5V以上则极有可能芯片被击穿了,只能更换了
- 、然后再连接电脑,看看电脑端是否有USB设备显示。同时看看spiflash里面是否有音乐文件
问题
- KT404A我焊接到PCB板上面之后,为什么插入USB连接电脑显示如下呢?
答疑
- 、首先可以明确,就是KT404A和电脑之间的通讯是正常的,也就是KT404A芯片正常工作起来了
- 、连接电脑显示这个,不能格式化,主要的问题在于
- 、spiflash是否正确
- 、以及spiflash和KT404A的连接是否正确
- 、一定要注意一下:flash要选25Q80,25Q32,具体的可以看看我们的手册
- 、同时spiflash和KT404A之间的连接,有个电阻是100欧姆
- 、这个问题主要是硬件问题,和404A芯片基本没关系
Original: https://blog.csdn.net/qyvhome/article/details/121593109
Author: 清月电子
Title: KT404A/C系列语音芯片参考程序&硬件设计注意事项
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524547/
转载文章受原作者版权保护。转载请注明原作者出处!