关键词:蓝牙硬件接口 UART PCM blueZ
版本:基于android4.2之前版本 bluez
内核:linux/linux3.08
系统:android/android4.1.3.4
作者:xubin341719(欢迎转载,请注明作者,请尊重版权谢谢)
欢迎指正错误,共同学习、共同进步!!
Android bluetooth介绍(一):基本概念及硬件接口
Android bluetooth介绍(二): android 蓝牙代码架构及其uart 到rfcomm流程
Android bluetooth介绍(三): 蓝牙扫描(scan)设备分析
Android bluetooth介绍(四): a2dp connect流程分析
一、基本概念补充
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芯片
如果用单AP芯片,要加基带、射频芯片构成手机硬件架构,如下图所示:
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操作。同其他硬件一样,通过时序控制。