編輯:關於Android編程
關鍵詞:藍牙硬件接口 UART PCM blueZ
版本:基於android4.2之前版本 bluez
內核:linux/linux3.08
系統:android/android4.1.3.4
作者:xubin341719(歡迎轉載,請注明作者,請尊重版權謝謝)
歡迎指正錯誤,共同學習、共同進步!!
一、基本概念補充
1、AP:ApplicationProcessor應用處理器
采用ARM架構的CPU,通常負責運行OS和一些特定設置和載入開機預設。比如一個沒有電話功能的平板電腦,只跑android或者win8的系統,只要AP就可以。如國外性能比較好的AP:三星exynos系列芯片、高通骁龍系列、NVIDIA等;國內近幾年芯片做的也不錯,如:全志、炬力、瑞芯微、晶晨……不過穩定性、性能都還要提高;支持國產,要不然錢都給老外賺取。
2、BP:BasebandProcessor 基帶處理器
架構相對於AP簡單,處理電話、信息之類的功能。
基帶芯片相對來說,高通一家獨大了。然後就是台灣的MTK、大陸的展訊市場占有率逐步上升。
3、CP:coprocessor Processor 協處理器
基帶芯片加協處理器(CP,通常是多媒體加速器)。這類產品以MTK方案為典型代表,展訊的市場占有份額也逐年上升,推類似的產品, 用來通過處理主cpu的一些工作負荷來使操作提速的輔助處理器。
4、RF:Radio Frequency射頻部分
無線信號的發射部分,如電話、藍牙、WIFI信號發射、接收;
5、展訊Tshark芯片的集成框圖:
我們看到有一個AP,和三個CP:CP0、CP1、CP2。
AP為四核:4個A7。3個CP分別為三個ARM9架構的處理器。
這裡所說的CP和一般的意義上的理解不同,理論上的CP不包括BP的,展訊的CP0、CP1其實是兩個基帶處理芯片,算是公司內部的一種說法。2G支持的制式都一樣,3G的一個支持TS-SCDMA、一個支持WCDMA。
其實我們重點說的是CP2,四合一部分的,重點是藍牙。
二、常見組合(簡單框圖)
如上圖所示,一個AP芯片+外設+android軟件,就構成一個簡單的平板電腦。
2、以三星、高通等AP設計的手機 AP芯片+BP芯片+RF芯片
<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPgkgyOe5+9PDtaVBUNC+xqyjrNKqvNO7+bT4oaLJ5Ma10L7GrLm5s8nK1rv607K8/rzcubmjrMjnz8LNvMv5yr6jujxiciAvPjxpbWcgc3JjPQ=="/uploadfile/Collfiles/20140813/2014081308554471.jpg" alt="\" />
3、以MTK、展訊方案設計的手機(AP+BP+CP)芯片+RF芯片
下面是展訊Tshark芯片的手機簡單架構,和傳統手機相比,硬件上更集成化,這樣有利於廠商的生產、節省成本……MTK現階段做的比較成熟,由低端向中高端進階。展訊還在艱苦奮戰,希望能再接再厲,成為一流芯片公司,填補大陸在芯片技術上的空白。
BT、WIFI、GPS、FM四合一的集成
前面我們了解BP、CP集成,了解手機整體架構,其實我重點講解四合一芯片。主要說明四合一芯片獨立芯片,和AP集成到同一芯片中兩種架構。類型與BP,獨立芯片、集成芯片。
(1)、獨立芯片:
通過串口接出,如上圖的troutII.其他芯片,如BCM、RDA、CSR、Retelk等……如上圖troutII 也是獨立芯片。
(2)、集成芯片:(WIFI \BT\FM\GPS的集成到主控芯片內,直接輸出模擬信號量,通過RF放大後發射出去)
模擬芯片輸出、出入到SR2351芯片,展訊比較多的芯片集成四合一(BT/WIFI/GPS/FM),節省客戶成本,不過芯片性能跟BCM比還是有點距離,各位同仁繼續加油。
三、藍牙硬件接口概述(以UART接口接出的芯片為例)
UART部分:串口,主要負責數據傳輸;有其他USB、SDIO、PC card等通信;
PCM部分:語言接口,用於通話時語音數據傳輸;
Power部分:也就是BT模塊的電源控制部分,VDD2.8V、PDN、RST。
1、UART:通用異步收發傳輸器(UniversalAsynchronous Receiver/Transmitter)
硬件接口比較簡單,只有RX、DX。UART0用於trout芯片的debug:
是傳輸數據的接口,可以傳輸音頻數據和文件數據。
1)、當通過藍牙和別人互傳文件時,就用UART傳輸。數據傳輸如下所示:AP通過uart把數據發送到bt芯片中,通過無線發射出去,對方接收到後傳給AP側處理。
2)、當用藍牙耳機聽音樂時,音頻信號也由UART傳輸。
音樂數據通過uart 傳送出去,對方耳機接收到後解碼播放。如果是錄音數據,則同樣傳回手機端存儲。
2、PCM/IIS
(1)、PCM:脈沖編碼調制(pulse codemodulation)
是傳輸語音信號所使用的調制方式。
用途:傳輸通話時的語音信號。
硬件接口:
(2)、PCM基本工作原理:
脈沖調制就是把一個時間連續,取值連續的模擬信號變換成時間離散,取值離散的數字信號後在信道中傳輸.脈沖編碼調制就是對模擬信號先抽樣,再對樣值幅度量化,編碼的過程。
一個模擬信號經過抽樣量化後,得到已量化的脈沖幅度調制信號,它僅為有限個數值。PCM話音信號先經防混疊低通濾波器,進行脈沖抽樣,變成8KHz重復頻率的抽樣信號(即離散的脈沖調幅PAM信號),然後將幅度連續的PAM信號用"四捨五入"辦法量化為有限個幅度取值的信號,再經編碼後轉換成二進制碼.對於電話,CCITT規定抽樣率為8KHz,每抽樣值編8位碼,即共有28=256個量化值,因而每話路PCM編碼後的標准數碼率是64kb/s。
如下圖PCM時序:
(3)、IIS(Inter-IC Sound bus)即集成音頻接口
IIS只能傳輸單聲道或雙聲道立體聲的數字音頻,數據格式為PCM格式。該接口又派生出三類:左對齊格式、右對齊格式、I2S格式。I2S時差性能要優於SPDIF,適合短距離通訊。
IIS總線一般具有4根信號線,如圖1所示,包括串行數據輸入(IISDI)、串行數據輸出(IISD0)、左/右聲道選擇(IISLRCK)和串行數據時鐘(IISCLK);產生IISLRCK和IISCLK的是主設備。
如下圖IIS時序:
語音通話時數據流:語音數據有3G網絡接入,通過PCM傳遞到藍牙芯片,藍牙芯片通過2.4G發射出去,到藍牙耳機接收,同樣mic傳回的語言數據做相應處理。
(4)、為什麼藍牙用PCM通道(網絡參考)
糾正個說法,一般手機cpu到藍牙的通話實時音頻傳輸才都使用pcm,MP3之類的音頻走的是urat/usb之類的其他接口。
真正原因我也不能確定,不過有幾個情況可能是原因之一。
(1)、PCM和IIS的區別在於,PCM一般是固定8k的采樣率的單聲道音頻,最早似乎和固定電話的編碼有直接關系,之後所有的話音編碼幾乎都是在PCM編碼基礎上再次編碼得到的。而IIS則多了一個專門的信號線,采樣率也可以配置到較高的頻率,如44k;
(2)、手機通話時候的編碼一般都會被解碼成8k采樣率的PCM碼,高了也沒有用。因為本來手機通話的話音頻段就是300~3400Hz而已,編碼也是按8k采樣的。某些手機平台並沒有IIS接口,相對來說基本上都會有PCM接口;
(3)、從藍牙角度講,藍牙在制定協議的時候就特意為通話需求制定了一個協議層,專門定義了一種包結構(SCO)用於通話,有很好的實時性。而通過UART傳輸的包一般為ALC,用分組傳輸的方式。兩種包的編解使用的軟硬件都有些區別。sco包支持的基礎碼率也是8k的pcm.所以一般藍牙芯片都會有一個PCM接口;
(4)、還一個原因就是,開始大家這麼做了,後來就都這麼做了,形成行業規范。
3、POWER 控制部分
程序對應引腳按power on /off 時序來完成on/off操作。同其他硬件一樣,通過時序控制。
還是比較有新意,復雜度也不是非常高,所以就花時間整理一下,我們先一起看下原gif圖效果:從效果上看,我們需要考慮以下幾個問題: 1.葉子的隨機產生; 2.葉子隨著一條
前言其實對於側滑菜單,在博主剛開始學android接觸到的時候,博主是非常感興趣的,也非常想知道它是如何實現的,在技術的不斷上升之後,我也可以自己封裝側滑菜單了.雖然網上
我們都知道,微信群主只有踢人的權限,有時候要對群成員進行清理沒有權限又不知道誰是群主可怎麼辦?其實微信群設置裡可以查看誰是群主或者創建人,那麼微信群怎麼看誰
經常看一些大神的博客,大多數大神開篇都輕談一些國內比較專注的事和一些身邊瑣事,以表自己心情感悟。像我這種菜雞就直接步入正題吧。畢竟這東西就這麼簡單。Android動畫效果