找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6432|回复: 4
收起左侧

开源一下可能是功能最全面的KT1025A MP3蓝牙音频数传芯片模块方案(源码+电路)

  [复制链接]
ID:422399 发表于 2018-11-7 16:11 | 显示全部楼层 |阅读模式
一、消费类电子产品SOC芯片开发的一些经验

1、其实在开发软件这个工作上,一些芯片原厂推出的SDK软件包是非常值得学习和借鉴的

(1)、因为他们为了方便用户开发,和阅读,以及一些驱动的写法的重复利用,都是做了很多的工作,其中的思维和
方法都是值得借鉴和学习的

(2)、很多时候,我们开发一些不算庞大的系统,总觉得自己写的程序还是可以的,但是一旦功能复杂了,整个程序

的架构就不得不重新的思考,这个时候,你就需要去参考别人高端人士的写法和思维

(3)、我们开发过程中,芯片原厂开发包,基本都是“消息机制”、“宏选择功能”、“大量的结构体封装”

我可以上传一下芯片厂商提供的开发SDK,有300多个文件,我个人认为整个框架清晰明了,值得学习


下面就进入产品资料介绍环节,请耐心的看一下,只要是有蓝牙相关的需求,我都可能略知一二,也能回答一下。

二、首先说一下芯片的优势:

1、成本低,支持的功能特别多,使用其他及其简单。照抄就行了

2、由于是国产的芯片,所以依托于海量的出货量,和超强的市场竞争,所以拉低了成本

3、芯片内部的软件支持,也是接口非常丰富,值得深入研究


三、再说一下芯片的缺点:

1、芯片由于是SOC系统,所以很多的功能都是以接口的形式,太个性化的功能可能实现非常费劲

2、芯片由于带音频,所以不支持低功耗,手环、纽扣电池供电的场合就不合适了



四、蓝牙芯片的介绍

    KT1025A芯片是一款支持蓝牙音频和数据以及U盘、TF卡播放的4合一的单芯片,芯片的亮点在支持TF卡或者U盘无损音乐的播放,以及简单明了的串口AT控制功能,支持BLE透传,以及SPP透传功能。大大降低了嵌入蓝牙在其它产品的开发难度。

    KT1025这个是我们在原厂芯片的基础上,开发了软件的芯片,配合坛友直接使用,超低成本3元RMB

可以适用于下面的这些类型的应用:

1、蓝牙音频产品                如:蓝牙音箱、蓝牙耳机、车载蓝牙 等等
2、蓝牙数传产品         如:智能门锁、车载OBD检测、智能小车、打印机、医疗设备数据采集
3、蓝牙数传+音频产品        如:蓝牙音乐灯、蓝牙音乐广播


废话不多说,上芯片的手册,和参考图纸

KT1025A蓝牙音频数据BLE芯片参考原理图如下:
04_KT1025A参考原理图1.jpg
注:原理图中注释说明设计时需特别注意
MCU
设计注意事项:
1、主控所有电源的退耦电容必须靠近芯片放置,
退耦电容的回路地必须最短回到该电源地.
2、蓝牙匹配电路参数以调试结果为准
4、为保证产品的安全可靠性,电池必须用带保护板的电池

晶振选型:
封装:兼容3225,M49S,HC49S等封装
要求:稳定性、一致性要好,
频偏偏差:±10PPM以内
电容:晶振匹配电容位置请预留

按键电路说明:
1、如果要做按键分离, R11上拉电阻最好
放在主板一边
2、AD_KEY走线远离音频线和数据线
3、电阻阻值尽量按我的来设计
4、按键功能定义还可以多加

充电电路说明:
这里采用的是专用充电管理芯片LP4054B
芯片的5脚是用来设置充电电流的
调节外部电阻R20可以设置充电电流的大小
最大充电电流不要超过800MA,否则有可能
损坏充电芯片

功放电路说明:
1、功放特点:
A、8W、防失真、7V耐压、AB/D类可选
B、单声道、带过热保护功能音频功放
C、宽工作电压范围2.5V—7V
(HX8358)
D、超低EMI,高效率,音质优
2、8W输出功率设置:
A、8W功率输出的条件:
VDD=6V,RL=2Ω,Po=8W,THD+N≤10%
B、8W功率输出设置:
芯片1脚(SD脚):
1、0V--0.7V,防失真启动(功率输出小
,没有跛音)
2、0.7V--1.6V,防失真关断
(条件满足,功率输出可达到8W)
 3、1.6V--VDD,防失真关断,芯片关断
(喇叭没有声音输出)
0.png


单片机源程序:
  1. /*************************************************************************
  2. - 功能描述: 串口发送一个字节
  3. - 隶属模块: 外部
  4. - 参数说明:
  5. - 返回说明:
  6. - 注:         
  7. 1、每种芯片的串口输出的方式不一样,这里是我们自己的芯片的方式
  8. 2、您也只用修改这个接口封装一下即可
  9. *************************************************************************/

  10. void func_send_byte( u8 dat )
  11. {
  12.     ctrl_uart_write(dat) ;/*替换这个接口*/
  13. }

  14. /*************************************************************************
  15. - 功能描述: 串口发送字符串
  16. - 隶属模块: 外部
  17. - 参数说明:
  18. - 返回说明:
  19. - 注:         
  20. *************************************************************************/
  21. void func_UartPutStr (const char *Str )
  22. {
  23.     while ( *Str)
  24.     {
  25.         func_send_byte ( *Str );
  26.         *Str++;
  27.     }
  28. }

  29. /*************************************************************************
  30. - 功能描述: 串口接收处理 --- 参考
  31. - 隶属模块: 外部
  32. - 参数说明:
  33. - 返回说明:
  34. - 注:         
  35. 1、串口接收都是采用中断的方式,一定要设置一个超时的计数器,超时做错误处理
  36. 2、由于我们所有的命令都是以0x0D和0x0A作为结束,所以只用检测0x0A就认为接收完成
  37. *************************************************************************/

  38. void uart_isr_recv(u8 uto_buf)
  39. {
  40.     g_uart_flag.uart_timeout = UART_TIMEOUT ;/*一般100ms*/
  41.     g_uart_flag.uart_stop  = 0;
  42.     buf_uart1.buf[buf_uart1.index++] = uto_buf;/*字符存到缓存中*/
  43.     if(uto_buf == 0x0A)               /*收到数据0x0A则认为一帧数据结束了*/
  44.     {
  45.         g_uart_flag.uart_stop  = 1;   /*接收完成标志位置1*/
  46.         g_uart_flag.uart_analysis = 1;/*分析数据使能打开*/         
  47.         g_uart_flag.uart_timeout = 0 ;
  48.         uart_recv_ok_pro(buf_uart1.buf ,buf_uart1.index) ;  /*这里就是接收完成之后的处理*/
  49.         
  50.         /*这里添加你自己的应用程序*/
  51.     }
  52. }


  53. /*************************************************************************
  54. - 功能描述: main
  55. - 隶属模块: 外部
  56. - 参数说明:
  57. - 返回说明:
  58. - 注:         
  59. *************************************************************************/
  60. void main()
  61. {
  62.     uart_init() ;/*串口初始化*/
  63.     delay_2ms(500) ;/*延时1秒*/
  64.         func_UartPutStr("AT+CA30\r\n") ;/*设置音量为30级*/
  65.     delay_2ms(500) ;/*延时1秒*/
  66.         func_UartPutStr("AT+CA15\r\n") ;/*设置音量为15级*/
  67.     delay_2ms(500) ;/*延时1秒*/
  68.         func_UartPutStr("AT+BD12354678\r\n") ;/*设置蓝牙名为12345678*/
  69.     delay_2ms(500) ;/*延时1秒*/
  70.         func_UartPutStr("AT+CT02\r\n") ;/*设置波特率为19200 -- 参考手册*/
  71.     delay_2ms(500) ;/*延时1秒*/

  72.     while(1) ;
  73. }
复制代码

0.png
全部资料51hei下载地址:
资料打包.zip (1.32 MB, 下载次数: 146)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:448325 发表于 2018-12-17 20:20 | 显示全部楼层
不错不错
回复

使用道具 举报

ID:422399 发表于 2019-2-25 17:18 | 显示全部楼层
顶一顶,沉了
回复

使用道具 举报

ID:706197 发表于 2020-3-29 01:25 | 显示全部楼层
看不懂,还是谢谢,学习一下。
回复

使用道具 举报

ID:689033 发表于 2021-3-26 09:56 | 显示全部楼层
zlp里没有SDK,能否提供?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表