一、消費類電子產品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 (483.51 KB, 下載次數: 89)
下載附件
2018-11-7 16:10 上傳
注:原理圖中注釋說明設計時需特別注意
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 (87.42 KB, 下載次數: 61)
下載附件
2018-11-8 02:38 上傳
單片機源程序:
- /*************************************************************************
- - 功能描述: 串口發送一個字節
- - 隸屬模塊: 外部
- - 參數說明:
- - 返回說明:
- - 注:
- 1、每種芯片的串口輸出的方式不一樣,這里是我們自己的芯片的方式
- 2、您也只用修改這個接口封裝一下即可
- *************************************************************************/
- void func_send_byte( u8 dat )
- {
- ctrl_uart_write(dat) ;/*替換這個接口*/
- }
- /*************************************************************************
- - 功能描述: 串口發送字符串
- - 隸屬模塊: 外部
- - 參數說明:
- - 返回說明:
- - 注:
- *************************************************************************/
- void func_UartPutStr (const char *Str )
- {
- while ( *Str)
- {
- func_send_byte ( *Str );
- *Str++;
- }
- }
- /*************************************************************************
- - 功能描述: 串口接收處理 --- 參考
- - 隸屬模塊: 外部
- - 參數說明:
- - 返回說明:
- - 注:
- 1、串口接收都是采用中斷的方式,一定要設置一個超時的計數器,超時做錯誤處理
- 2、由于我們所有的命令都是以0x0D和0x0A作為結束,所以只用檢測0x0A就認為接收完成
- *************************************************************************/
- void uart_isr_recv(u8 uto_buf)
- {
- g_uart_flag.uart_timeout = UART_TIMEOUT ;/*一般100ms*/
- g_uart_flag.uart_stop = 0;
- buf_uart1.buf[buf_uart1.index++] = uto_buf;/*字符存到緩存中*/
- if(uto_buf == 0x0A) /*收到數據0x0A則認為一幀數據結束了*/
- {
- g_uart_flag.uart_stop = 1; /*接收完成標志位置1*/
- g_uart_flag.uart_analysis = 1;/*分析數據使能打開*/
- g_uart_flag.uart_timeout = 0 ;
- uart_recv_ok_pro(buf_uart1.buf ,buf_uart1.index) ; /*這里就是接收完成之后的處理*/
-
- /*這里添加你自己的應用程序*/
- }
- }
- /*************************************************************************
- - 功能描述: main
- - 隸屬模塊: 外部
- - 參數說明:
- - 返回說明:
- - 注:
- *************************************************************************/
- void main()
- {
- uart_init() ;/*串口初始化*/
- delay_2ms(500) ;/*延時1秒*/
- func_UartPutStr("AT+CA30\r\n") ;/*設置音量為30級*/
- delay_2ms(500) ;/*延時1秒*/
- func_UartPutStr("AT+CA15\r\n") ;/*設置音量為15級*/
- delay_2ms(500) ;/*延時1秒*/
- func_UartPutStr("AT+BD12354678\r\n") ;/*設置藍牙名為12345678*/
- delay_2ms(500) ;/*延時1秒*/
- func_UartPutStr("AT+CT02\r\n") ;/*設置波特率為19200 -- 參考手冊*/
- delay_2ms(500) ;/*延時1秒*/
- while(1) ;
- }
復制代碼
0.png (49.11 KB, 下載次數: 59)
下載附件
2018-11-8 02:36 上傳
全部資料51hei下載地址:
資料打包.zip
(1.32 MB, 下載次數: 147)
2018-11-7 16:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|