DIY编程器网

标题: 基于MCU实现蓝牙与PC机之间HCI层传输 [打印本页]

作者: liyf    时间: 2014-10-5 10:48
标题: 基于MCU实现蓝牙与PC机之间HCI层传输
基于MCU实现蓝牙与PC机之间HCI层传输

摘要:分析了蓝牙HCI层的主要功能,并简述了蓝牙HCI层数据传输的单片机控制方案。HCI指令从RS232串口通过单片机的UART输入,经校验后发送至蓝牙模块,蓝牙模块返回的HCI事件在单片机内进行分组打包后发送至PC机。
    关键词:蓝牙协议HCI 单片机 UART蓝牙模块
蓝牙是正在兴起的短距离无线通信技术,工作在2.4GHz ISM频段。蓝牙技术可在各种移动设备、计算机外设等数字设备间实现廉价的无线连接,灵活便捷地实现设备间的数据交换。本文介绍利用双串口单片机在PC机与蓝牙模块间实现蓝牙HCI层数据传输。
1 系统的硬件组成
采用爱立信生产的ROK 101 007蓝牙模块,使用51增强型单片机W77E58,用MAX3222进行RS232转换。系统硬件框图如图1所示。

ROK 101 007蓝牙模块同时支持数据和语音传输。主机与模块间可以通过UART和I2C接口连接,射频输出功率等级为2级(2.5mW),支持点对多点连接。
W77E58单片机与标准80C52管脚兼容,指令集与MCS-51兼容,具有两个全双工串口,12个中断源,32KB大容量Flash存储器,1KB片上SRAM。

2 蓝牙主机控制器接口(HCI)

HCI层是蓝牙协议栈中软硬件之间的接口,它提供了一个控制基带与链路控制器、链路管理器、状态寄存器等硬件的统一接口。HCI层以下的协议由蓝牙模块实现,HCI层以上的协议在主机上运行,它们通过HCI传输层进行通信。主机与主机控制器通过HCI收发分组方式进行信息交换,用指令—应答(Command-Response)方式实现控制。
HCI分组有三种类型:指令分组(Command Packet)、事件分组(Event Packet)和数据分组(Data Packet)。指令分组只从主机发向主机控制器;事件分组只从主机控制器发向主机,用以说明指令分组的执行情况;数据分组在主机和主机控制器间双向传输。数据分组分为ACL数据分组和SCO数据分组。
3 系统软件的设计
本系统中蓝牙模块与单片机在同一块印刷电路板上,可采用HCI的UART传输层进行数据传输。在单片机与PC机之间采用RS232接口标准,用MAX3222芯片进行电平转换。PC机与单片机之间分组传输格式如图2所示。

3.1 PC机部分软件设计
PC部分程序主要是开发蓝牙应用组件及在此组件基础上构建应用程序。主要设计串口的驱动程序,并对HCI指令进行函数封装,提供相应的应用程序函数接口(API)。软件主要包括串口驱动程序及HCI指令封装部分等。组件部分接收应用程序发来的各种操作请求并负责与自身的接口驱动程序及HCI封装函数进行通信。应用程序需要做的只是对组件部分进行串口及蓝牙参数的设置,向其发送一定格式的命令和数据信息,以及实时的显示及相应的处理。
3.2 单片机部分软件设计
本文中单片机的软件设计是针对以MPU为主体的主机应用模式。由于对HCI指令的处理已在应用主体中以组件形式实现,故此时单片机部分软件设计可不必考虑对HCI指令及事件的处理,所要做的是将主机发送的HCI信息经过校验后正确地发送给蓝牙模块,同时,将来自蓝牙模块的信息加上校验后发往主机。
本部分软件实现的全部功能是通过汇编语言开发的,用W77E58的第一个串口实现与PC机的通信,用第二个串口实现与蓝牙模块通信,流程图如图3所示。

[attach]32358[/attach]
图3


    本程序已经过调试,数据传输正常,性能良好。
本文探讨了应用双串口单片机实现蓝牙HCI数据传输的方法,给出了详尽的通信流程及具体的软硬件设计方案,系统在一些短距离无线传输应用中有较好的应用价值。
作者: 李小路    时间: 2022-5-28 19:06
谢谢分享!




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2