一、消費類電子產(chǎn)品SOC芯片開發(fā)的一些經(jīng)驗
1、其實在開發(fā)軟件這個工作上,一些芯片原廠推出的SDK軟件包是非常值得學習和借鑒的
(1)、因為他們?yōu)榱朔奖阌脩糸_發(fā),和閱讀,以及一些驅(qū)動的寫法的重復利用,都是做了很多的工作,其中的思維和
方法都是值得借鑒和學習的
(2)、很多時候,我們開發(fā)一些不算龐大的系統(tǒng),總覺得自己寫的程序還是可以的,但是一旦功能復雜了,整個程序
的架構(gòu)就不得不重新的思考,這個時候,你就需要去參考別人高端人士的寫法和思維
(3)、我們開發(fā)過程中,芯片原廠開發(fā)包,基本都是“消息機制”、“宏選擇功能”、“大量的結(jié)構(gòu)體封裝”
我可以上傳一下芯片廠商提供的開發(fā)SDK,有300多個文件,我個人認為整個框架清晰明了,值得學習
下面就進入產(chǎn)品資料介紹環(huán)節(jié),請耐心的看一下,只要是有藍牙相關的需求,我都可能略知一二,也能回答一下。
二、首先說一下芯片的優(yōu)勢:
1、成本低,支持的功能特別多,使用其他及其簡單。照抄就行了
2、由于是國產(chǎn)的芯片,所以依托于海量的出貨量,和超強的市場競爭,所以拉低了成本
3、芯片內(nèi)部的軟件支持,也是接口非常豐富,值得深入研究
三、再說一下芯片的缺點:
1、芯片由于是SOC系統(tǒng),所以很多的功能都是以接口的形式,太個性化的功能可能實現(xiàn)非常費勁
2、芯片由于帶音頻,所以不支持低功耗,手環(huán)、紐扣電池供電的場合就不合適了
四、藍牙芯片的介紹
KT1025A芯片是一款支持藍牙音頻和數(shù)據(jù)以及U盤、TF卡播放的4合一的單芯片,芯片的亮點在支持TF卡或者U盤無損音樂的播放,以及簡單明了的串口AT控制功能,支持BLE透傳,以及SPP透傳功能。大大降低了嵌入藍牙在其它產(chǎn)品的開發(fā)難度。
KT1025這個是我們在原廠芯片的基礎上,開發(fā)了軟件的芯片,配合壇友直接使用,超低成本3元RMB
可以適用于下面的這些類型的應用:
1、藍牙音頻產(chǎn)品 如:藍牙音箱、藍牙耳機、車載藍牙 等等
2、藍牙數(shù)傳產(chǎn)品 如:智能門鎖、車載OBD檢測、智能小車、打印機、醫(yī)療設備數(shù)據(jù)采集
3、藍牙數(shù)傳+音頻產(chǎn)品 如:藍牙音樂燈、藍牙音樂廣播
廢話不多說,上芯片的手冊,和參考圖紙
KT1025A藍牙音頻數(shù)據(jù)BLE芯片參考原理圖如下:
注:原理圖中注釋說明設計時需特別注意
MCU
設計注意事項:
1、主控所有電源的退耦電容必須靠近芯片放置,
退耦電容的回路地必須最短回到該電源地.
2、藍牙匹配電路參數(shù)以調(diào)試結(jié)果為準
4、為保證產(chǎn)品的安全可靠性,電池必須用帶保護板的電池
晶振選型:
封裝:兼容3225,M49S,HC49S等封裝
要求:穩(wěn)定性、一致性要好,
頻偏偏差:±10PPM以內(nèi)
電容:晶振匹配電容位置請預留
按鍵電路說明:
1、如果要做按鍵分離, R11上拉電阻最好
放在主板一邊
2、AD_KEY走線遠離音頻線和數(shù)據(jù)線
3、電阻阻值盡量按我的來設計
4、按鍵功能定義還可以多加
充電電路說明:
這里采用的是專用充電管理芯片LP4054B
芯片的5腳是用來設置充電電流的
調(diào)節(jié)外部電阻R20可以設置充電電流的大小
最大充電電流不要超過800MA,否則有可能
損壞充電芯片
功放電路說明:
1、功放特點:
A、8W、防失真、7V耐壓、AB/D類可選
B、單聲道、帶過熱保護功能音頻功放
C、寬工作電壓范圍2.5V—7V
(HX8358)
D、超低EMI,高效率,音質(zhì)優(yōu)
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,防失真關斷,芯片關斷
(喇叭沒有聲音輸出)
單片機源程序:
- /*************************************************************************
- - 功能描述: 串口發(fā)送一個字節(jié)
- - 隸屬模塊: 外部
- - 參數(shù)說明:
- - 返回說明:
- - 注:
- 1、每種芯片的串口輸出的方式不一樣,這里是我們自己的芯片的方式
- 2、您也只用修改這個接口封裝一下即可
- *************************************************************************/
- void func_send_byte( u8 dat )
- {
- ctrl_uart_write(dat) ;/*替換這個接口*/
- }
- /*************************************************************************
- - 功能描述: 串口發(fā)送字符串
- - 隸屬模塊: 外部
- - 參數(shù)說明:
- - 返回說明:
- - 注:
- *************************************************************************/
- void func_UartPutStr (const char *Str )
- {
- while ( *Str)
- {
- func_send_byte ( *Str );
- *Str++;
- }
- }
- /*************************************************************************
- - 功能描述: 串口接收處理 --- 參考
- - 隸屬模塊: 外部
- - 參數(shù)說明:
- - 返回說明:
- - 注:
- 1、串口接收都是采用中斷的方式,一定要設置一個超時的計數(shù)器,超時做錯誤處理
- 2、由于我們所有的命令都是以0x0D和0x0A作為結(jié)束,所以只用檢測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) /*收到數(shù)據(jù)0x0A則認為一幀數(shù)據(jù)結(jié)束了*/
- {
- g_uart_flag.uart_stop = 1; /*接收完成標志位置1*/
- g_uart_flag.uart_analysis = 1;/*分析數(shù)據(jù)使能打開*/
- g_uart_flag.uart_timeout = 0 ;
- uart_recv_ok_pro(buf_uart1.buf ,buf_uart1.index) ; /*這里就是接收完成之后的處理*/
-
- /*這里添加你自己的應用程序*/
- }
- }
- /*************************************************************************
- - 功能描述: main
- - 隸屬模塊: 外部
- - 參數(shù)說明:
- - 返回說明:
- - 注:
- *************************************************************************/
- 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) ;
- }
復制代碼
全部資料51hei下載地址:
資料打包.zip
(1.32 MB, 下載次數(shù): 147)
2018-11-7 16:11 上傳
點擊文件名下載附件
|