发布时间:2010-11-8 阅读量:2396 来源: 发布人:
中心议题
    * 分析了蓝牙协议栈体系结构
    * 研究了轻量级蓝牙协议栈
解决方案
    * 在lwIP基础上对该TCPIP协议栈做了进一步在蓝牙网络中的应用
    * 物理层采用了串行接口和蓝牙模块通信
0 引言
蓝牙是一种低功耗的无线技术,工作在全球通用的2.4GHZ ISM(工业、科学、医疗)频段,目的在于取代现有的PC、打印机、传真机和移动电话等设备的有线接口。其优点在于,结构紧凑,使用便捷,功耗低,对人体危害小,成本低廉,易于推广等。
然而作为蓝牙协议栈本身,仍具有一定的复杂性,这对于在资源分配相对有限的嵌入式系统中的移植和应用带来了一定的瓶颈,譬如linux中的BlueZ往往就很难在80C51系列单片机或内置RAM仅有几十K的ARM7系列处理器上得到移植。于是轻量级蓝牙协议栈的研究与应用将显得尤为重要,因为这对于产品的方案策划提供了一条新的思路,同时也将大大降低产品成本。本文介绍一种lwBT轻量级蓝牙协议栈。该蓝牙协议栈的设计基于lwIP TCP/IP网络协议栈,目的是使得lwIP协议栈可以在蓝牙链路上传输IP包,进一步拓展lwIP协议栈的应用。
lwIP是由瑞典计算机科学院Adam Dunkels所编写的一套开源的TCPIP协议栈,协议设计考虑了低端系统资源的有限性,整个协议栈只占用十几K的RAM和40K左右的FLASH,这也给lwBT对蓝牙协议栈的裁剪带来了可能。
1 蓝牙协议栈体系结构
蓝牙体系结构中的协议可以分为以下四层(如图1所示):
·核心层协议 基带、LMP、L2CAP、SDP;
·电缆替代协议 RFCOMM;
·电话传输控制协议 TCS二进制、AT命令集:
·可选协议 PPP、UDP、TCP、IP、OBEX、WAP、vCard、vCal、IrMC、WAE。
.png)
除了以上的协议外,还有如主机控制器接口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)等。图2为lwIP协议内核与实现。
.png)
2. 1 lwIP的特点
(1)支持多网络接口下的IP转发;
(2)支持ICMP, IGMP, PPP, PPPoE;
(3)支持IP分片;
(4)支持专门的内部回调接口(Raw API)用于提高应用程序的处理速度;
(5)支持直接TCP与UDP模块函数调用接口和lwIP API函数调用接口及SocketAPI (多线程环节下);
(6)支持操作系统模拟层接口。
2. 2 lwBT的体系结构
.png)
LwBT实现了蓝牙协议中必要的协议部分,如RFCOMM、L2CAP、SDP、HCI等,同时对蓝牙协议的可选协议PPP、NAT、TCP/UDP/IP做了支持,物理层采用了串行接口和蓝牙模块通信。这里需要指出的是lwBT中使用的PPP协议没有采用lwIP中自带的模块,而是另外设计的更为方便的PPP模块,支持PPP协议里的LCP(Link Control Protocol)、IPCP ( Internet Protocol ControlProtocol)。lwBT对HCI层也做了简化,只提供了部分命令接口来初始化和控制ACL链接,但结构上可以很容易地扩展出更多的命令接口是事件处理。
3 lwBT接口
LwBT的设计沿用了lwIP的设计思想,程序运行基于事件处理回调函数,协议栈和控制程序可以运行在同一个线程中。每个回调函数将当前蓝牙连接的状态作为参数传递,同时,为了保持程序运行的状态,回调函数被调用时,还将传递一个独立的参数。其中用来设置应用程序连接状态函数有:
.png)
其中参数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支持不同的蓝牙软件协议栈,可以在主机和设备之间灵活地分配功能模块。为了实现一个非对称的嵌入式网关,即将SPI、CAN总线上的数据转发到蓝牙网络中,HOST端采用AT91sam7x128的ARM芯片通过UART连接,蓝牙协议栈实现在HOST端,同时具备SPI和CAN的传输功能。
.png)
5 结语
本文介绍了蓝牙协议栈的整体框架结构,在此基础上阐述了一轻量级蓝牙协议栈lwBT的简化原理和具体的编程接口,并把CSR公司的BC213159A和AT91sam7x256相结合,把蓝牙协议栈运行在HOST端,实现非对称的嵌入式网关, lwBT得到了具体的验证和应用。
                  
                  本文将深入拆解低功耗MCU的六大核心技术
                  
                  本文将盘点2025年推出的最具代表性的超低功耗MCU,它们凭借先进的技术和卓越的能效比,在物联网、可穿戴设备、智能家居和医疗电子灯领域表现出色
                  
                  本文将深入探讨物联网节点低功耗设计的底层逻辑、核心电路技术以及前沿电源管理方案
                  
                  作为链接数字基带与空中接口的关键桥梁,射频前段在5G/6G时代面临着频率扩展、带宽增加、多模兼容、能效优化等多重挑战,推动者整个产业链的技术革新
                  
                  在电池管理系统(BMS)的技术发展中,尽管取得了显著进步,但仍面临一系列关键技术难点,这些挑战直接关系到新能源汽车的安全性、性能和用户体验。