轻量级蓝牙协议栈的研究与应用

发布时间:2010-11-8 阅读量:2293 来源: 发布人:

中心议题
    * 分析了蓝牙协议栈体系结构
    * 研究了轻量级蓝牙协议栈
解决方案
    * 在lwIP基础上对该TCPIP协议栈做了进一步在蓝牙网络中的应用
    * 物理层采用了串行接口和蓝牙模块通信

0
 引言

蓝牙是一种低功耗的无线技术,工作在全球通用的2.4GHZ ISM(工业、科学、医疗)频段,目的在于取代现有的PC、打印机、传真机和移动电话等设备的有线接口。其优点在于,结构紧凑,使用便捷,功耗低,对人体危害小,成本低廉,易于推广等。

然而作为蓝牙协议栈本身,仍具有一定的复杂性,这对于在资源分配相对有限的嵌入式系统中的移植和应用带来了一定的瓶颈,譬如linux中的BlueZ往往就很难在80C51系列单片机或内置RAM仅有几十KARM7系列处理器上得到移植。于是轻量级蓝牙协议栈的研究与应用将显得尤为重要,因为这对于产品的方案策划提供了一条新的思路,同时也将大大降低产品成本。本文介绍一种lwBT轻量级蓝牙协议栈。该蓝牙协议栈的设计基于lwIP TCP/IP网络协议栈,目的是使得lwIP协议栈可以在蓝牙链路上传输IP,进一步拓展lwIP协议栈的应用。

lwIP是由瑞典计算机科学院Adam Dunkels所编写的一套开源的TCPIP协议栈,协议设计考虑了低端系统资源的有限性,整个协议栈只占用十几KRAM40K左右的FLASH,这也给lwBT对蓝牙协议栈的裁剪带来了可能。

1 蓝牙协议栈体系结构

蓝牙体系结构中的协议可以分为以下四层(如图1所示):

·核心层协议 基带、LMPL2CAPSDP;

·电缆替代协议 RFCOMM;

·电话传输控制协议 TCS二进制、AT命令集:

·可选协议 PPPUDPTCPIPOBEXWAPvCardvCalIrMCWAE

除了以上的协议外,还有如主机控制器接口HCI,为链路管理器、基带控制器、硬件状态和控制寄存器提供统一的命令接口。

·基带协议 基带和链路控制LMP协议确保了匹克网内的蓝牙设备之间有射频构成物理连接。蓝牙的射频系统为了提高抗干扰性,采用了跳频技术,任一分组在指定时隙、指定频率上发送,它使用查询和寻呼进程来使不同设备间的发送频率和时钟同步。基带数据分组提供了两种数据连接方式,面向连接(SCO)和无连接(ACL)

·链路管理协议(LMP) LMP负责匹克网中蓝牙设备连接的建立和设置。主要功能有连接的发起、交换、和身份验证和加密;协商基带数据分组的大小、工作模式、工作周期;各设备的连接状态回报。

·逻辑链路控制和适配协议(L2CAP) L2CAP是基带上层协议,LMP在同层次上工作,他们的区别在于当业务数据不经过LMP,L2CAP为上层提供服务, L2CAP允许高层协议以64KBtyes数据分组。

·服务搜索协议(SDP) SDP提供了应用发现可用服务,以及确定可用服务特点的方法。服务在蓝牙协议架构中起到至关重要的作用,它是所有用户模式的基础,从而在蓝牙设备间建立相应的连接。

·电缆替代协议

RFCOMM是基于ETSI07. 10规范的串行仿真协议,在蓝牙基带协议上仿真RS232控制和数据信号,为使用串行传输机制的上层协议提供服务。

·电话控制协议

电话控制协议是面向比特的协议。它定义了蓝牙设备间建立语音设数据呼叫的控制信令,定义了处理蓝牙TCS设备群的移动管理进程。

 

2 lwBT对蓝牙协议栈的简化

lwBT是在lwIP基础上对该TCPIP协议栈做了进一步在蓝牙网络中的应用,继承了lwIP的设计思路和风格,如内存管理、消息处理、错误处理等等。目前的版本可以支持LAP(LAN Access Point)DUN(Dial-UpNetwork)等。图2lwIP协议内核与实现。

2. 1 lwIP的特点

(1)支持多网络接口下的IP转发;

(2)支持ICMP, IGMP, PPP, PPPoE;

(3)支持IP分片;

(4)支持专门的内部回调接口(Raw API)用于提高应用程序的处理速度;

(5)支持直接TCPUDP模块函数调用接口和lwIP API函数调用接口及SocketAPI (多线程环节下);

(6)支持操作系统模拟层接口。

2. 2 lwBT的体系结构

LwBT实现了蓝牙协议中必要的协议部分,RFCOMML2CAPSDPHCI,同时对蓝牙协议的可选协议PPPNATTCP/UDP/IP做了支持,物理层采用了串行接口和蓝牙模块通信。这里需要指出的是lwBT中使用的PPP协议没有采用lwIP中自带的模块,而是另外设计的更为方便的PPP模块,支持PPP协议里的LCP(Link Control Protocol)IPCP ( Internet Protocol ControlProtocol)lwBTHCI层也做了简化,只提供了部分命令接口来初始化和控制ACL链接,但结构上可以很容易地扩展出更多的命令接口是事件处理。

3 lwBT接口

LwBT的设计沿用了lwIP的设计思想,程序运行基于事件处理回调函数,协议栈和控制程序可以运行在同一个线程中。每个回调函数将当前蓝牙连接的状态作为参数传递,同时,为了保持程序运行的状态,回调函数被调用时,还将传递一个独立的参数。其中用来设置应用程序连接状态函数有:

其中参数pcb是当前连接的控制块, arg是将要传递给回调

函数的参数的指针。

3. 1 lwBT系统编程接口

lwBT的编程接口比较清晰,主要有lwbt_memp_init(), phybusif_init(), hci_init(), l2cap_init(), sdp_init(), rfcomm_init(), ppp_init(), l2cap_tmr(), rfcomm_tmr(), ppp_tmr()phybusif_input()。大多数是用来对蓝牙协议栈的初始化, phybusif_input()在接收到ACL数据包时被调用, _tmr函数必须在系统运行中每秒调用一次,用来处理数据包的超时重传等。

3. 2 lwIP设备驱动编程接口

L2CAP层需要有以下的底层支持:

lp_connect_req():LMP层创建与一个具体蓝牙设备的连接。

lp_acl_write():发送到ACL连接的数据。

lp_connect_cfm():确认基带的来连接请求是否成功。

lp_disconnect_ind():指示基带的已经关闭或超时。

l2cap_input():?处理接受到得L2CAP,传递给上层。

4 lwBT的应用

CSR公司的蓝牙模块已经成为市场中的一大主流,这里采用了CSR公司的BlueCore2-Audio系列的BC213159A,该芯片具有4Mbit的内部可编程ROM,可以通过下载不同的Firmware来支持不同的产品方案, (如图4所示),该芯片具有AudioInOut,SPI,UART,USB, PIO, PCM等接口。BC213159A支持不同的蓝牙软件协议栈,可以在主机和设备之间灵活地分配功能模块。为了实现一个非对称的嵌入式网关,即将SPICAN总线上的数据转发到蓝牙网络中,HOST端采用AT91sam7x128ARM芯片通过UART连接,蓝牙协议栈实现在HOST,同时具备SPICAN的传输功能。

5 结语

本文介绍了蓝牙协议栈的整体框架结构,在此基础上阐述了一轻量级蓝牙协议栈lwBT的简化原理和具体的编程接口,并把CSR公司的BC213159AAT91sam7x256相结合,把蓝牙协议栈运行在HOST,实现非对称的嵌入式网关, lwBT得到了具体的验证和应用。

相关资讯
贸泽电子授权代理英飞凌丰富多样的产品组合

英飞凌XENSIV™ PAS CO2 5V传感器可持续提供高质量数据,并且满足WELL™建筑标准的性能要求。

红外传感器的选型要素与应用场景解析

红外传感器是一种利用红外线进行检测的电子设备,广泛应用于工业自动化,安防监控,智能家居,医疗设备等领域

DigiKey发布《机器人技术探秘》系列:联合Eaton与SICK深入探索机器人自动化新纪元

随着全球制造业迈向集成化与数字化,独立机器人单元正逐渐融入更广泛的自动化系统。DigiKey 本季发布的《机器人技术探秘》的第 5 季《未来工厂》视频系列,联合行业领先企业 Eaton 和 SICK,系统解析了从电气控制、传感技术到数据互联等多个层面的前沿解决方案。新一季邀请了多名专家,一起探讨支撑现代机器人制造与自动化的基础设施与创新技术。

SEMI-e 2025深圳半导体展9月启幕!全产业链覆盖,超千家龙头集结

SEMI-e深圳国际半导体展暨2025集成电路产业创新展将于2025年9月10日至12日在深圳国际会展中心(宝安新馆)隆重开幕。本届展会由CIOE中国光博会与集成电路创新联盟联合主办,中新材会展与爱集微共同承办,以“IC设计与应用”、“IC制造与供应链”及“化合物半导体”为核心主题,系统覆盖集成电路全产业链环节。