1. 概述
1.1 简介
KT7905A芯片是一款支持蓝牙以及U盘、TF卡播放的4合一的单芯片,芯片的亮点在支持无损音乐的播放,以及简单明了的串口控制功能,大大降低了嵌入蓝牙在其它产品的开发难度
1.2 功能简述
功能划分 | 功能描述 |
公共功能
1、24V的DAC输出,动态范围支持90dB,信噪比支持85dB |
2、免晶振负载电容,芯片自动生成蓝牙的MAC地址,无需滚动烧录 |
音乐模式
1、支持MP3、WAV、WMA、FLAC、AAC、APE格式全解码 |
2、**支持128G的U盘和TF卡 |
3、支持断点记忆和曲目记忆功能 |
蓝牙功能
1、支持蓝牙音频传输连接传输音乐,支持播放暂停,上下曲切换 |
2、支持蓝牙通话功能,用户可设置取消,支持接听、挂断、回拨、拒接等功能 |
3、蓝牙4.2版本,支持修改蓝牙名 |
收音功能 | 1、支持自动搜索电台并且保存搜索的电台信息 |
其它功能 | 1、支持U盘、TF卡升级程序文件 |
| |
1.3 专业术语说明
功能 | 备注 |
前台 | 芯片内部跑的系统,公共功能都是在前台,如:音量、静音 |
后台 | 比如:蓝牙、MUSIC、FM就是后台,他是由前台创建的一个任务而已 |
公共功能 | 指的是所有模式都会有的功能,如调节音量、静音、切换模式、复位等操作 |
音乐模式[MUSIC] | 指的就是插卡、插U盘播放 |
收音模式[FM] | 指的就是调频的广播,和车载收音机类似,从87.5--1080MHZ |
蓝牙模式[BT] | 我们这里的蓝牙只支持音频,暂不支持数据传输 |
外音输入[AUX] | 就是外部音源输入,电脑的3.5耳机输出对我们而言就是外音 |
切换模式 | 就是当前如果是MUSIC,切换模式就是切换到蓝牙、在切换就是FM |
EQ | 调节音乐的音频参数,可以参见酷狗就有这个功能 |
PC声卡 | 相当于一个USB声卡和USB读卡器 |
备注:不需要详细的了解,只需要知道就行,不用纠结深层次的东西 |
2. 方案说明
芯片选用的是SOC方案,集成了一个32位的MCU,以及一个专门针对音频解码的aDSP,采用硬解码的方式,更加保证了系统的稳定性和音质。小巧的封装尺寸更加满足嵌入其它产品的需求
2.1 参数说明
名称 | 参数 |
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.3V-5V[7805后级串一个二极管为*] |
额定电流 | 10MA[静态] |
低功耗电流 | <200uA |
功放功率 | 驱动36欧姆的耳机 |
工作温度 | [-40度] -- [80度] |
湿度 | 5% ~ 95% |
主芯片型号 | KT7905A[QSSOP24] |
2.2 管脚说明
2.3 硬件说明以及简单测试方法
1、拿到芯片,请一定要把我们预留的指示灯脚接出来,因为这个指示灯是可以看到很多的现象,如芯片是否正常,晶振是否起振等等
2、芯片旁边的电容一定是24M,10ppm的。因为蓝牙属于2.4G,信号比较微弱,所以对频率的要求相对比较高,所以晶振的选择不能马虎
3、晶振旁边的2颗电容不需要焊接,因为我们芯片内部会自动校准频率的,无需用户关心
3. 串口通讯协议
串口作为一种在控制领域常用的通信,我们进行了完整的数据定义,请严格按照我们给出的指令格式
3.1 通讯格式
支持异步串口通讯模式,通过串口接受上位机发送的命令 通讯标准:115200 bps 数据位 :8 停止位 :1 校验位 :none 流控制 :none |
|
|
|
|
格式:$S Len CMD1 CMD2 DAT... $O |
|
| | |
|
$S | 起始位07E | 每条命令反馈均以$开头,即07E |
|
Le | len后字节个数 | 校验和不计算在内 |
|
CMD1 | 命令字 | 表示功能的划分 |
|
CMD2 | 命令字 | 表示具体的操作,比如播放/暂停等等 |
|
da | 参数 | 和前面的len相关联,不限制长度 |
|
$O | 结束位 | 结束位0EF |
|
| | |
|
这里CMD1重点说明: 由于芯片内部是跑的系统,主体的程序划分如下: |
功能划分 | 命令 | 备注 |
公共的功能 | 0F1 | 这个系统前台处理公共的功能,如:音量调节、静音、切换模式 |
MUSIC功能 | 0F2 | 就是指播放U盘或者TF卡 |
FM功能 | 0F3 | 就是指收音机的一些功能 |
蓝牙功能 | 0F4 | 蓝牙的播放和电话 |
AUX功能 | 0F5 | 外音输入的功能--- 暂不说明 |
PC声卡功能 | 0F6 | 连接电脑播放电脑的音乐 --- 暂不说明 |
3.2 通讯指令
我们的通讯分为以下两大块
控制指令 --- 参见3.2.1
查询芯片的参数以及状态 --- 参见3.2.2
测试指令举例说明 -- 参见--- 参见3.2.3
3.2.1 控制指令
CMD1 | CMD2 | 对应的功能 | 参数(16位) |
0F1[公共]
详见3.4
0x01 | 静音 | 所有状态均有效 |
0x02 | 音量+ | |
0x03 | 音量- | |
0x04 | 指定音量 | 音量**为30级,最小为0级。芯片内部自带记忆功能 |
0x05 | 切换模式 | U盘->TF卡-> FM->BT->再回头 |
006 | 指定模式 | 详细见下面的介绍 |
0x07 | 复位 | 任何状态有效 |
008 | 芯片DAC设置 | [0==DAC高阻][1==DAC正常] |
009 | 设置功能 | 详见下面的介绍,见3.3.1 |
| | | |
0F2[MUSIC]
001 | 播放/暂停切换 | 当前处于播放发此条指令就暂停 |
0x02 | 下一曲 | |
0x03 | 上一曲 | |
0x04 | 指定曲目(NUM) | 指定第10曲 |
0x05 | 播放 | 当前处于播放发此条指令无效 |
006 | 暂停 | |
| | |
| | | |
| | | |
0F3[FM]--暂不开放
0x01 | 播放/暂停 | |
0x02 | 下一个电台 | |
0x03 | 上一个电台 | |
0x04 | 自动搜索电台 | |
005 | 向下搜索一个电台 | |
006 | 向上搜索一个电台 | |
| | | |
0F4[BT]
001 | 播放/暂停 | 来电话时接再发送就是挂断 |
002 | 下一曲 | |
003 | 上一曲 | |
004 | 接听/挂断电话span> | |
005 | 接听 | |
006 | 挂断和拒接 | |
007 | 回拨 | |
008 | 断开连接进入配对 | |
不需要带参数的命令,数据的2个字节都是00、00
3.2.2 查询指令
这里是查询芯片的状态和相关的参数
CMD1 | CMD2 | 对应的功能 | 参数(16位) |
0F1[公共]
03C | 保留 | |
03D | 保留 | |
03E | 保留 | |
03F | 查询在线的设备 | 详见3.5.1 |
040 | 返回错误,请求重发 | 详见3.3.7 |
041 | 应答 | 详见3.3.2 |
042 | 查询当前状态,包括音量和功能 | 详见3.4.10 |
0F2[MUSIC]
045 | U盘返回当前的播放时间查询UDISK文件总数 | 每1秒返回一次,详见3.3.3 |
046 | TF卡返回当前的播放时间 | 每1秒返回一次,详见3.3.3 |
049 | 查询UDISK的当前信息 | 详见3.3.4 |
04B | 查询TF的当前信息 | 详见3.3.4 |
| 050 | 蓝牙状态返回 | 详见3.3.5 |
| 051 | 蓝牙返回号码 | 详见3.3.6 |
3.2.3 测试指令举例说明
工作模式 | 对应的串口数据 | 功能 | 说明 |
公共
7E 05 F1 01 00 00 EF | 静音 | 所有状态均有效 |
7E 05 F1 02 00 00 EF | 音量+ | |
7E 05 F1 03 00 00 EF | 音量- | |
7E 05 F1 04 00 10 EF | 指定音量 | 设置音量30级 |
7E 05 F1 05 00 00 EF | 切换模式 | U盘->TF卡-> FM->BT->再回头 |
7E 05 F1 06 00 00 EF | 指定模式 | 详细见下面的介绍 |
7E 05 F1 07 00 01 EF | 复位 | 复位-任何状态有效 |
7E 05 F1 08 00 01 EF | 芯片DAC设置 | DAC打开 |
7E 05 F1 08 00 00 EF | 设置功能 | DAC关闭设置为高阻态 |
7E 05 F1 09 0013 EF | 设置功能选择 | 设置开启蓝牙通话,关闭FM和AUX,详见下面介绍绍 |
| | | |
音乐
7E 05 F2 01 00 00 EF 7E 05 F2 01 00 00 EF7E 05 F2 01 00 00 EF 7E 05 F2 01 00 00 EF | 播放/暂停切换 | 当前处于播放发此条指令就暂停 |
7E 05 F2 02 00 00 EF | 下一曲 | |
7E 05 F2 03 00 00 EF | 上一曲 | |
7E 05 F2 04 00 00 EF | 指定曲目(NUM) | 指定第10曲 |
| | |
| | |
| | |
| | | |
| | | |
收音
播放/暂停 | 播放/暂停 | |
下一个电台 | 下一个电台 | |
上一个电台 | 上一个电台 | |
自动搜索电台 | 自动搜索电台 | |
向下搜索一个电台 | 向下搜索一个电台 | |
向上搜索一个电台 | 向上搜索一个电台 | |
| | | |
蓝牙
7E 05 F4 01 00 00 EF | 播放/暂停 | |
7E 05 F4 02 00 00 EF | 下一曲 | |
7E 05 F4 03 00 00 EF | 上一曲 | |
7E 05 F4 04 00 00 EF | 接听/挂断电话 | |
7E 05 F4 05 00 00 EF | 接听 | |
7E 05 F4 06 00 00 EF | 挂断和拒接 | |
7E 05 F4 07 00 00 EF | 回拨 | |
7E 05 F4 08 00 00 EF | 断开连接进入配对 | |
3.3 芯片返回的数据
芯片在关键地方均会有数据返回。供用户掌控芯片的工作状态
芯片上电初始化成功的数据 | 详见3.3.1 |
芯片成功接收到指令返回的ACK(应答) | 详见3.3.2 |
U盘或者TF卡初始化完毕返回的数据 | 详见3.3.3 |
U盘或者TF卡正在播放的返回的数据 | 详见3.3.4 |
蓝牙状态返回的数据 | 详见3.3.5 |
蓝牙来电的电话返回的数据 | 详见3.3.6 |
错误的信息返回 | 详见3.3.7 |
3.3.1芯片上电返回的数据[03F]
1、芯片上电,需要一定的时间初始化,这个时间是为了等待U盘上电初始化完成,我们芯片好检测他是否在线,一般情况在1.5秒这个时间。
(1) 、这个的目的是为了检测U盘是否在线
(2) 、如果超过这个时间芯片的初始化数据还没有发送出来,说明芯片初始化出错,请检查硬件
(3)、芯片初始化返回的数据为当前的有效文件夹,譬如返回7E 05 F1 3F 1E 03 EF
(4)、其中01E代表的是上一次记忆的音量为30级
(5)、其中003代表的是U盘和TF这两个设备在线
U盘 -- 在线 | 7E05 F1 3F 1E 01 EF | 各设备之间是或的关系 |
TF -- 在线 | 7E 05 F13F 1E 02 EF | |
FM --在线 | 7E 05 F1 3F10 04 EF | 说明U盘和TF卡都不在线,FM功能开启 |
AUX -- 在线 | 7E 05 F1 3F1E 08 EF | 说明U盘和TF卡都不在线,FM功能关闭AUX功能开启 |
蓝牙通话 -- 在线 | 7E 05 F1 3F1E10 EF | 蓝牙通话是开启的 |
2、这里重点说明上电初始化设备的返回
(1) 、由于U盘和TF卡是否存在,芯片是可以检测到的,所以芯片出厂默认开启这个功能
(2) 、而FM和AUX是芯片无法检测的,所以只能用户去自己设置
(3) 、蓝牙通话功能,芯片也是没办法检测到的,所以也是用户自己去检测
001--[第0位] | 代表U盘 | 这个是芯片自己检测,用户无须关心,默认开启这个功能 |
002--[第1位] | 代表TF卡 | 这个是芯片自己检测,用户无须关心,默认开启这个功能 |
003--[第2位] | 代表FM | 这个需要用户自己去设置,是否开启这个功能 |
004--[第3位] | 代表AUX | 这个需要用户自己去设置,是否开启这个功能 |
010--[第4位] | 代表通话 | 这个需要用户自己去设置,是否开启这个功能 |
3、设置的方法如下:
(1) 、下位机MCU如果接收到芯片初始化成功的数据,就可以发送:7E 05 F1 09 00 13 EF
(2) 、分析一下低字节的013=0001 0011,意思是:关闭FM、关闭AUX、开启蓝牙通话
(3) 、或者任何时候发送都行,但是
3.3.2 芯片接收串口指令成功返回的数据ACK[041]
芯片返回ACK | 7E 05 F14110 03 EF | 说明成功接收数据 |
1、为了加强数据通信之间的稳定性,我们增加了应答处理,这样做的好处是保证每次通信都有握手信号,收到应答就表示MCU发送的数据,芯片已经成功收到,马上处理。
2、对于一般的应用,客户可以自由选择,不接收这个应答也是可以的。
3、应答会有当前的音量以及当前选中的功能数据返回,如上数据:7E 05 F1 41 10 03 EF
(1)、010 == 16,代表当前系统音量为16级
(2)、003 == BIT(1)|BIT(0),代表当前的U盘和TF卡都在线,无FM、无AUX、无蓝牙通话
3.3.3 U盘或者TF卡初始化完毕返回的数据[0x45][0x46]
U盘初始化完成 | 7E05 F2 45 011E0001EF | U盘总文件 =0011E,准备播放的曲目=00001 |
TF卡初始化完成 | 7E05 F2 45 011E0100 EF | TF卡总文件=0011E,准备播放的曲目=00100 |
1、U盘初始或者TF卡初始化完成之后,会有对应如上的信息返回。补充说明,就是只要U盘或者TF卡插入,芯片都会对U盘或者TF卡进行初始化和文件系统的桥接,也一定会返回如上所对应的信息数据。
2、这个信息的返回意味着:U盘或者TF卡的驱动OK,以及文件系统的读写也OK,可以开发正常的播放音乐了
3、如果当前播放U盘,插着TF卡。此时拔掉U盘,会自动跳转去播放TF卡。也会返回这个信息
3.3.4 U盘或者TF卡在播放音乐返回的数据[0x49][0x4B]
U盘正在播放 | 7E05 F2 49 00 02 0001 EF | U盘播放的曲目=00002,播放的时间为=00001 |
TF卡正在播放 | 7E05 F2 4B 00 64 00 10 EF | TF播放的曲目 =00064,播放的时间为=00010 |
1、U盘或者TF卡正在正常播放时,会每隔1秒返回如上信息
2、播放的时间返回是配合MCU那边需要做显示的情况下
3、返回的曲目信息,是指的物理顺序,就是设备里面的逻辑顺序
3.3.5 蓝牙状态的返回数据[0x50]
蓝牙开机之后的状态 | 7E 04 F4 50 17 0D EF | 这个说明蓝牙处于回连状态 |
蓝牙已经连接成功 | 7E 04 F4 50 1A 04 EF | 这个表示已经连接成功 |
蓝牙正在配对 | 7E 04 F4 50 16 06 EF | 这个表示正在等待连接 |
1、进入蓝牙之后,芯片会每隔半秒返回一次它的状态,这样供上位机掌握当前的状态
2、这里我们给出了两个字节供用户检测,分别是简易状态和复杂状态,用户根据自己的实际需求来做出选择
3、这里如果带通话则建议使用复杂状态。参见表格2
4、这里普及一个知识点,蓝牙的配对分两种:
(1) 、回连 --- 这个的意思是,蓝牙上电之后,会优先回连上次记忆的设备,主动发起连接
而此状态,其它的手机是连接不的。这个回连只会在上电的3秒钟内
(2) 、配对 --- 这个就代表蓝牙处于配对状态,所有的手机都可以去连接他
简易状态表格说明----表格1----高字节 |
状态 | 数值 | 备注说明 |
BT_STATUS_INITING | 015 | 正在初始化 |
BT_STATUS_WAITINT_CONN | 016 | 等待连接 |
BT_STATUS_AUTO_CONNECTINT | 017 | 正在回连 |
BT_STATUS_CONNECTING | 018 | 已连接,没有电话和音乐在活动 |
BT_STATUS_TAKEING_PHONE | 019 | 正在电话<> |
BT_STATUS_PLAYING_MUSIC | 01A | 正在音乐 |
复杂状态表格说明----表格2----低字节 |
状态 | 数值 | 备注说明 |
BT_STATUS_POWER_ON | 0x01 | 上电 |
BT_STATUS_POWER_OFF | 0x02 | 关蓝牙 |
BT_STATUS_INIT_OK | 0x03 | 初始化完成 |
BT_STATUS_FIRST_CONNECTED | 0x04 | 连接成功 |
BT_STATUS_SECOND_CONNECTED | 0x05 | 连接成功 |
BT_STATUS_FIRST_DISCONNECT | 0x06 | 断开连接 |
BT_STATUS_SECOND_DISCONNECT | 0x07 | 断开连接 |
BT_STATUS_PHONE_INCOME | 0x08 | 来电 |
BT_STATUS_PHONE_NUMBER | 0x09 | 来电话号码 |
BT_STATUS_PHONE_OUT | 00A | 打出 |
BT_STATUS_PHONE_ACTIVE | 00B | 接通电话 |
BT_STATUS_PHONE_HANGUP | 00C | 挂断电话 | >
BT_STATUS_BEGIN_AUTO_CON | 00D | 发起回连 |
BT_STATUS_MUSIC_SOUND_COME | 00E | 音乐播放开始 |
BT_STATUS_MUSIC_SOUND_GO | 00F | 音乐播放暂停 |
3.3.6 蓝牙返回当前来电话的号/strong>[0x50]
手机135****07打来的 | 7E05 F4 51 31 33 35 31 30 32 35 30 34 33 37 EF |
1、如上,如果用户开启了通话功能,则外接有电话进来候,会返回如上信息
2、芯片是每隔2秒返回一次,这个要实测。直到挂断电话或者接听电话,才不会继续返回
3、如果用户关闭的了蓝牙通话功能,那么这个数据是不会返回的
3.3.7 芯片的错误信息的返回[0x40]
7E05 F1 40 0001 EF | 系统繁忙,当前指令不处理 |
7E05 F1 40 0002 EF | 待定 |
7E05 F1 40 0003 EF | 当前的串口指令没有接收完当前处于睡眠状态 |
7E05 F1 40 0004 EF | 待定 |
7E05 F1 40 0005 EF | 待定 |
7E05 F1 40 0006 EF | 待定 |
7E05 F1 40 0007 EF | 待定 |
7E05 F1 40 0008 EF | 当前无播放设备 |
1、芯片内部对一些错误的状态,会进行实时的反馈。具体的请对照上面的表格
3.4 芯片的公共功能控制指令详解
下面对公共功能一些可能产生误解的部分加以详细说明
3.4.1 静音和DAC的关闭打开详细说明[001][009]
1、芯片的静音指的是当前播放继续,只是把静音给调整为0 ,你听不到声音而已
发**次为静音,再发就是解除静音,如此反复
2、关闭DAC,就是相当于完全断开DAC,这样做的目的是,如果用户需要做外音输入功能,那么外音输入的音源就可以直接并在芯片的DAC,关闭DAC,那么芯片就不会对外音的输入有任何的吸收或者干扰
3、关闭DAC这个功能的目的,是为了方便用户自己挂FM芯片,或者外音输入
3.4.2 音量的说明[002][003][004]
1、系统的音量**为30级,最小为0级
2、每个模式都是一样的音量,也就是说音量是整个系统的音量,不是单独哪一个模式的音量
3、用户有两种选择,可以直接使用音量+和音量-的指令,也可以自行指定音量,都可以的。
3.5 芯片的MUSIC控制指令详解
MUSIC的功能只包含读取U盘和TF卡播放,芯片内部自带掉电存储部分,可以存储如下的信息
(1) 、U盘播放的歌曲物理号、当前播放的断点信息
(2) 、TF卡播放的歌曲物理号,当前播放的断点信息,也就是每次断电再上电,芯片会自动的去断点处开始播放