蓝牙模块串口通信的设计与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
射频模块完成混频、滤波、功率放大等功能,负责 将接收到的 2. 4 GHz 高频信号解调为中频信号送给蓝 牙基带控制器,并将来自蓝牙基带控制器的低中频信 号调制为 2. 4 GHz 的高频信号发射出去。RAM 用于 通信中语音或数据的处理和暂存。Flash 用于加载蓝 牙模块低层硬件的协议以及对蓝牙模块开发的程序。 基带控制器由 MCU 和 Baseband DSP 组成,基带控制
实际开发中,将对蓝牙模块进行开发的微控制器 称为蓝牙主机,蓝牙模块本身称为主机控制器,HCI 是 蓝牙主机和主机控制器之间的接口,是蓝牙主机开发 蓝牙模块的唯一途径[6]。
当蓝牙主机与主机控制器通信时,软件程序在主 机上运行,通过 HCI 接口对主机控制器进行控制,HCI 接口具有向主机控制器解释来自主机的程序的功能, 将上层软件解析为低层硬件可以识别的语言,以使蓝 牙模块的基带与链路控制器、链路管理器以及状态寄 存器等硬件响应特定的功能。同时主机控制器将射频 模块接收到的数据按照 HCI 层通信的数据格式传送 给主机处理。所以 HCI 是蓝牙应用中软件和硬件的 接 口,实 现 蓝 牙 高 层 应 用 程 序 与 蓝 牙 低 层 硬 件 的 通信[7-8]。
第 31 卷 第 3 期 2012 年 3 月
实验室研究与探索
RESEARCH AND EXPLORATION IN LABORATORY
Vol. 31 No. 3 Mar. 2012
蓝牙模块串口通信的设计与实现
张 群1 , 杨 絮1 , 张正言1 , 陆起涌1,2
( 1. 复旦大学 电子工程系,上海 200433; 2. 复旦大学 无锡研究院,江苏 无锡 214131)
实验中通过 LT1084 产生蓝牙芯片 3. 3v 的工作电 压,通过 LM2576 产生单片机 5v 的工作电压。对于单 片机和蓝牙芯片 IO 口工作电压的不同,在连接的 IO 口间加入电阻,以确保 IO 口通信的安全。实验中通过 手机与蓝牙模块通信以控制蓝牙模块端的电子锁的开 启,以验证蓝牙模块和手机之间通信的正确性。通过 单片机 P1. 4 口驱动继电器以控制电子锁开关,由于继 电器工作电流大,P1. 4 口要经过放大电路才能驱动继 电器。
中图分类号: TN 70
文献标志码: A
文章编号: 1006 - 7167( 2012) 03 - 0079 - 04
Design and Realization of Serial Communication in Bluetooth Module
ZHANG Qun1 , YANG Xu1 , ZHANG Zheng-yan1 , LU Qi-yong1,2 ( 1. Department of Electronic Engineering,Fudan University,Shanghai 200433;
块进行开发,使蓝牙模块和蓝牙手机建立连接,实现蓝 牙设备与蓝牙手机之间的无线通信,以达到通过蓝牙 手机对蓝牙设备系统进行控制。
1 蓝牙模块
1. 1 蓝牙模块硬件结构 蓝牙模块的内部体系结构如图 1 所示[5-6]。蓝牙
模块集成了基带控制器,数据存储器,程序存储器,射 频接口和与外界通信的 I /O 口。
unsigned int hci_reset( void)
{ unchar reset_ cmd[4] = { 0x01,0x03,0x0c,0x00 } ; / 复 位
指令 / unchar receive _ event[7] = { 0x00,0x00,0x00,0x00,0x00
0x00,0x00} ; / 主机接收来自蓝牙模块的复位事件 / unchar reset _ event[7] = { 0x04,0x0E,0x04,0x01,0x03,
HCI 支持 4 种 传 输 层: USB 传 输 层、RS232 传 输 层、UART 传输层、SD 传输层,HCI 层传输的数据有四
ห้องสมุดไป่ตู้
图 2 蓝牙开发模式示意图
2. 2 蓝牙串口开发硬件的设计 本文中采用的蓝牙芯片是 CSR 公司的主流芯片
BC417143,支持蓝牙的 V2. 0 的协议标准,蓝牙芯片上 提供 UART 接口、SPI 接口、PCM 接口、PIO 接口,工作 电压为 3. 3 V,串 口 波 特 率 支 持 多 重 选 择,默 认 是 9 600 b / s。蓝牙芯片与蓝牙主机通过串口进行通信, 同时蓝牙芯片也可通过串口与 PC 机通信,PC 机可通 过 AT 指令对蓝牙芯片进行控制[9-10]。
0引言
蓝牙技术是一种无线通信技术,工作在全球通用 的 2. 4 GHz ISM 频段,蓝牙技术采用快速确认和跳频 方案,这一特点使蓝牙具有良好的抗干扰能力和系统 稳定性。蓝牙技术能实现小范围的无线连接和微小网 自主组网的通信技术。每个蓝牙设备有全球唯一的 48 bit 设备地址[1-4]。
本文利用外围单片机通过主机控制接口对蓝牙模
80
实验室研究与探索
第 31 卷
器是蓝牙模块的的核心模块,实现蓝牙基带部分的所 有实时处理功能,可以使用户忽略低层硬件怎样实现 数据处理和传输的过程。
蓝牙模块提供了对蓝牙模块进行开发的 IO 口,主 要有 SPI、PIO、PCM、UART / USB 4 种接口。
种类型: HCI 指令分组、HCI 事件分组、HCI_ACL 数据 分组和 HCI_SCO 数据分组[1]。
收稿日期: 2011 - 05 - 21 作者简介: 张 群( 1987 - ) ,男,安徽安庆人,硕士生,研究方向: 嵌 入式系统软硬件设计,工业控制与自动化。 通信作者: 陆起涌( 1966 - ) ,男,江苏太仓人,副教授,研究方向: 嵌 入式 系 统 软 硬 件 设 计,工 业 控 制 与 自 动 化,智 能 仪 器 仪 表,物 联 网 等。 Tel. : 021-65642766; E-mail: lqyong@ fudan. edu. cn
实验中的电子锁有 3 个引线,其中 1 个是电源线, 2 个是控制线。电子锁在其 2 个控制信号线短路时
第3 期
张 群,等: 蓝牙模块串口通信的设计与实现
81
开锁。 蓝牙芯片和单片机之间的硬件连接电路如图 3 所
示。其中继电器 HJR1-2C 的 4 脚和 8 脚接电子锁的 两个控制信号线。
图 3 蓝牙芯片和单片机的硬件连接
摘 要: 蓝牙技术是一种适用于近距离的无线通信技术,具有安全性高和受干扰性小的特点。通过单片
机对蓝牙模块进行开发,建立蓝牙模块与蓝牙手机之间的通信,实现蓝牙手机对单片机和蓝牙模块系统
的控制。同时,蓝牙模块具有与特定蓝牙设备绑定的功能,将其运用在嵌入式安全系统中,可大大提高
系统的安全性和稳定性。
关键词: 串口通信; 蓝牙协议; 蓝牙固件; HCI 接口
本文采用双微控制器模式,单片机通过主机控制 器接口对蓝牙模块进行开发,以实现特定的功能。结 构示意图如图 2 所示。
图 1 蓝牙模块内部体系结构
蓝牙模块具有的功能由出厂时处理器上加载的蓝 牙协议决定的,片上运行的蓝牙协议主要分为 3 类: 标 准的 HCI、串口功能、集成应用程序。标准的 HCI 即芯 片上没有加载应用协议,可通过 HCI 接口对蓝牙模块 进行开发,实现蓝牙协议里的特定功能。串口功能将 蓝牙模块等同为 1 个无线串口设备,模 拟 RS232 功 能,即在蓝牙模块上加载了 RFCOMM 串口仿真协议。 集成应用程序即蓝牙模块上集成某些应用功能,如蓝 牙耳机、文件传输等[4]。 1. 2 主机控制器接口( HCI)
初始化蓝牙芯片主要有 5 个指令: HCI_Reset、HCI _Read_Buffer_Size、HCI_Write_Scan_Enable、HCI_Write _Connection_Accept、HCI_Page_Timeout、HCI_Set_Filt。
查询周边蓝牙地址用到指令 HCI_Inquiry,可查询 周边范围内的所有蓝牙地址。
蓝牙主机采用的是单片机,芯片是 AT89C2051,工 作电压为 5 V,具有 2 KB 的可编程存储器和 128 B 的 数据存储器,具有 2 个定时器和可编程串行通道,单片 机与蓝牙模块通过串口进行连接,AT89C2051 与 MCS51 兼容,采用 KC51 进行开发。
24LC02 是支持 IIC 总线协议的 EEPROM 芯片,具 有 2Kbits 的存储空间,用于通信中大数据量的存储。 单片机可以通过 IO 口对其控制,实现外部存储空间的 扩展,具有连接引脚少,控制方便的优点。
建立连接用到指令 HCI_Creat_Connection,与查询 到的指定设备地址建立连接。
数据传输用到指令 HCI_Acl_Data,只有在连接建 立成功后,两蓝牙设备之间才可进行数据传输。
断开连接用到指令 HCI_Disconnection,用于断开 指定设备间的连接。
以上指令分组、事件分组和数据分组的具体格式 参考 bluetooth specifications Version 2. 0 + EDR 和参 考文献[1],里面对每 1 个分组的具体表达形式、参数 设置以及作用都有详细说明。
2 蓝牙串口开发的设计
2. 1 蓝牙开发模式 蓝牙模块的开发模式分为 2 类: ① 单微控制器模
式,即蓝牙低层传输协议和高层传输协议以及用户应 用程序都集成到蓝牙模块中,整个处理过程由蓝牙模 块里微处理器来完成; ② 双微控制器模式,即蓝牙低 层协议与用户应用程序分别由主机控制器和主机来 实现[6]。
2. Wuxi Research Institute,Fudan University,Wuxi 214131,China )
Abstract: Bluetooth technology is a kind of technology suitable for short distance wireless communication and has features of high security and low interference. In the paper,a bluetooth module was developed using Signal-Chip Microcomputer and communication between bluetooth module and mobile phone with bluetooth was established so that Signal-Chip Microcomputer and bluetooth’s system were controlled by a mobile phone. At the same time,the bluetooth module could be binded to a special bluetooth device,and embedded in the safe system to greatly improve the system’s security and robustness. Key words: serial communication; bluetooth protocol; bluetooth firmware; HCI interface
2. 3 蓝牙串口开发软件的设计 蓝牙主机和主机控制器之间通过指令分组和数据
分组进行通信,主机在每执行完 1 指令分组,主机控制 器都会返回 1 个事件分组,向主机说明指令的执行情 况和主机控制器低层硬件的信息[11]。
蓝牙模块串口通信的建立主要分为 5 个步骤[6]: 初始化蓝牙芯片、查询周边蓝牙地址、建立连接、数据 传输、断开连接。
下面以对蓝牙模块复位为例说明蓝牙主机和蓝牙 模块 之 间 的 通 信 过 程,bluetooth specifications Version 2. 0 + EDR 中定 义 复 位 蓝 牙 模 块 指 令 为[0x 01,0x 03,0x 0C,0x 00]字符数组形式,同时定义在正确情况 下返 回 的 事 件 分 组 为[0x04,0x 0E,0x 04,0x 01,0x 03,0x 0C,0x 00]。在 KC51 的编程如下所示。
实际开发中,将对蓝牙模块进行开发的微控制器 称为蓝牙主机,蓝牙模块本身称为主机控制器,HCI 是 蓝牙主机和主机控制器之间的接口,是蓝牙主机开发 蓝牙模块的唯一途径[6]。
当蓝牙主机与主机控制器通信时,软件程序在主 机上运行,通过 HCI 接口对主机控制器进行控制,HCI 接口具有向主机控制器解释来自主机的程序的功能, 将上层软件解析为低层硬件可以识别的语言,以使蓝 牙模块的基带与链路控制器、链路管理器以及状态寄 存器等硬件响应特定的功能。同时主机控制器将射频 模块接收到的数据按照 HCI 层通信的数据格式传送 给主机处理。所以 HCI 是蓝牙应用中软件和硬件的 接 口,实 现 蓝 牙 高 层 应 用 程 序 与 蓝 牙 低 层 硬 件 的 通信[7-8]。
第 31 卷 第 3 期 2012 年 3 月
实验室研究与探索
RESEARCH AND EXPLORATION IN LABORATORY
Vol. 31 No. 3 Mar. 2012
蓝牙模块串口通信的设计与实现
张 群1 , 杨 絮1 , 张正言1 , 陆起涌1,2
( 1. 复旦大学 电子工程系,上海 200433; 2. 复旦大学 无锡研究院,江苏 无锡 214131)
实验中通过 LT1084 产生蓝牙芯片 3. 3v 的工作电 压,通过 LM2576 产生单片机 5v 的工作电压。对于单 片机和蓝牙芯片 IO 口工作电压的不同,在连接的 IO 口间加入电阻,以确保 IO 口通信的安全。实验中通过 手机与蓝牙模块通信以控制蓝牙模块端的电子锁的开 启,以验证蓝牙模块和手机之间通信的正确性。通过 单片机 P1. 4 口驱动继电器以控制电子锁开关,由于继 电器工作电流大,P1. 4 口要经过放大电路才能驱动继 电器。
中图分类号: TN 70
文献标志码: A
文章编号: 1006 - 7167( 2012) 03 - 0079 - 04
Design and Realization of Serial Communication in Bluetooth Module
ZHANG Qun1 , YANG Xu1 , ZHANG Zheng-yan1 , LU Qi-yong1,2 ( 1. Department of Electronic Engineering,Fudan University,Shanghai 200433;
块进行开发,使蓝牙模块和蓝牙手机建立连接,实现蓝 牙设备与蓝牙手机之间的无线通信,以达到通过蓝牙 手机对蓝牙设备系统进行控制。
1 蓝牙模块
1. 1 蓝牙模块硬件结构 蓝牙模块的内部体系结构如图 1 所示[5-6]。蓝牙
模块集成了基带控制器,数据存储器,程序存储器,射 频接口和与外界通信的 I /O 口。
unsigned int hci_reset( void)
{ unchar reset_ cmd[4] = { 0x01,0x03,0x0c,0x00 } ; / 复 位
指令 / unchar receive _ event[7] = { 0x00,0x00,0x00,0x00,0x00
0x00,0x00} ; / 主机接收来自蓝牙模块的复位事件 / unchar reset _ event[7] = { 0x04,0x0E,0x04,0x01,0x03,
HCI 支持 4 种 传 输 层: USB 传 输 层、RS232 传 输 层、UART 传输层、SD 传输层,HCI 层传输的数据有四
ห้องสมุดไป่ตู้
图 2 蓝牙开发模式示意图
2. 2 蓝牙串口开发硬件的设计 本文中采用的蓝牙芯片是 CSR 公司的主流芯片
BC417143,支持蓝牙的 V2. 0 的协议标准,蓝牙芯片上 提供 UART 接口、SPI 接口、PCM 接口、PIO 接口,工作 电压为 3. 3 V,串 口 波 特 率 支 持 多 重 选 择,默 认 是 9 600 b / s。蓝牙芯片与蓝牙主机通过串口进行通信, 同时蓝牙芯片也可通过串口与 PC 机通信,PC 机可通 过 AT 指令对蓝牙芯片进行控制[9-10]。
0引言
蓝牙技术是一种无线通信技术,工作在全球通用 的 2. 4 GHz ISM 频段,蓝牙技术采用快速确认和跳频 方案,这一特点使蓝牙具有良好的抗干扰能力和系统 稳定性。蓝牙技术能实现小范围的无线连接和微小网 自主组网的通信技术。每个蓝牙设备有全球唯一的 48 bit 设备地址[1-4]。
本文利用外围单片机通过主机控制接口对蓝牙模
80
实验室研究与探索
第 31 卷
器是蓝牙模块的的核心模块,实现蓝牙基带部分的所 有实时处理功能,可以使用户忽略低层硬件怎样实现 数据处理和传输的过程。
蓝牙模块提供了对蓝牙模块进行开发的 IO 口,主 要有 SPI、PIO、PCM、UART / USB 4 种接口。
种类型: HCI 指令分组、HCI 事件分组、HCI_ACL 数据 分组和 HCI_SCO 数据分组[1]。
收稿日期: 2011 - 05 - 21 作者简介: 张 群( 1987 - ) ,男,安徽安庆人,硕士生,研究方向: 嵌 入式系统软硬件设计,工业控制与自动化。 通信作者: 陆起涌( 1966 - ) ,男,江苏太仓人,副教授,研究方向: 嵌 入式 系 统 软 硬 件 设 计,工 业 控 制 与 自 动 化,智 能 仪 器 仪 表,物 联 网 等。 Tel. : 021-65642766; E-mail: lqyong@ fudan. edu. cn
实验中的电子锁有 3 个引线,其中 1 个是电源线, 2 个是控制线。电子锁在其 2 个控制信号线短路时
第3 期
张 群,等: 蓝牙模块串口通信的设计与实现
81
开锁。 蓝牙芯片和单片机之间的硬件连接电路如图 3 所
示。其中继电器 HJR1-2C 的 4 脚和 8 脚接电子锁的 两个控制信号线。
图 3 蓝牙芯片和单片机的硬件连接
摘 要: 蓝牙技术是一种适用于近距离的无线通信技术,具有安全性高和受干扰性小的特点。通过单片
机对蓝牙模块进行开发,建立蓝牙模块与蓝牙手机之间的通信,实现蓝牙手机对单片机和蓝牙模块系统
的控制。同时,蓝牙模块具有与特定蓝牙设备绑定的功能,将其运用在嵌入式安全系统中,可大大提高
系统的安全性和稳定性。
关键词: 串口通信; 蓝牙协议; 蓝牙固件; HCI 接口
本文采用双微控制器模式,单片机通过主机控制 器接口对蓝牙模块进行开发,以实现特定的功能。结 构示意图如图 2 所示。
图 1 蓝牙模块内部体系结构
蓝牙模块具有的功能由出厂时处理器上加载的蓝 牙协议决定的,片上运行的蓝牙协议主要分为 3 类: 标 准的 HCI、串口功能、集成应用程序。标准的 HCI 即芯 片上没有加载应用协议,可通过 HCI 接口对蓝牙模块 进行开发,实现蓝牙协议里的特定功能。串口功能将 蓝牙模块等同为 1 个无线串口设备,模 拟 RS232 功 能,即在蓝牙模块上加载了 RFCOMM 串口仿真协议。 集成应用程序即蓝牙模块上集成某些应用功能,如蓝 牙耳机、文件传输等[4]。 1. 2 主机控制器接口( HCI)
初始化蓝牙芯片主要有 5 个指令: HCI_Reset、HCI _Read_Buffer_Size、HCI_Write_Scan_Enable、HCI_Write _Connection_Accept、HCI_Page_Timeout、HCI_Set_Filt。
查询周边蓝牙地址用到指令 HCI_Inquiry,可查询 周边范围内的所有蓝牙地址。
蓝牙主机采用的是单片机,芯片是 AT89C2051,工 作电压为 5 V,具有 2 KB 的可编程存储器和 128 B 的 数据存储器,具有 2 个定时器和可编程串行通道,单片 机与蓝牙模块通过串口进行连接,AT89C2051 与 MCS51 兼容,采用 KC51 进行开发。
24LC02 是支持 IIC 总线协议的 EEPROM 芯片,具 有 2Kbits 的存储空间,用于通信中大数据量的存储。 单片机可以通过 IO 口对其控制,实现外部存储空间的 扩展,具有连接引脚少,控制方便的优点。
建立连接用到指令 HCI_Creat_Connection,与查询 到的指定设备地址建立连接。
数据传输用到指令 HCI_Acl_Data,只有在连接建 立成功后,两蓝牙设备之间才可进行数据传输。
断开连接用到指令 HCI_Disconnection,用于断开 指定设备间的连接。
以上指令分组、事件分组和数据分组的具体格式 参考 bluetooth specifications Version 2. 0 + EDR 和参 考文献[1],里面对每 1 个分组的具体表达形式、参数 设置以及作用都有详细说明。
2 蓝牙串口开发的设计
2. 1 蓝牙开发模式 蓝牙模块的开发模式分为 2 类: ① 单微控制器模
式,即蓝牙低层传输协议和高层传输协议以及用户应 用程序都集成到蓝牙模块中,整个处理过程由蓝牙模 块里微处理器来完成; ② 双微控制器模式,即蓝牙低 层协议与用户应用程序分别由主机控制器和主机来 实现[6]。
2. Wuxi Research Institute,Fudan University,Wuxi 214131,China )
Abstract: Bluetooth technology is a kind of technology suitable for short distance wireless communication and has features of high security and low interference. In the paper,a bluetooth module was developed using Signal-Chip Microcomputer and communication between bluetooth module and mobile phone with bluetooth was established so that Signal-Chip Microcomputer and bluetooth’s system were controlled by a mobile phone. At the same time,the bluetooth module could be binded to a special bluetooth device,and embedded in the safe system to greatly improve the system’s security and robustness. Key words: serial communication; bluetooth protocol; bluetooth firmware; HCI interface
2. 3 蓝牙串口开发软件的设计 蓝牙主机和主机控制器之间通过指令分组和数据
分组进行通信,主机在每执行完 1 指令分组,主机控制 器都会返回 1 个事件分组,向主机说明指令的执行情 况和主机控制器低层硬件的信息[11]。
蓝牙模块串口通信的建立主要分为 5 个步骤[6]: 初始化蓝牙芯片、查询周边蓝牙地址、建立连接、数据 传输、断开连接。
下面以对蓝牙模块复位为例说明蓝牙主机和蓝牙 模块 之 间 的 通 信 过 程,bluetooth specifications Version 2. 0 + EDR 中定 义 复 位 蓝 牙 模 块 指 令 为[0x 01,0x 03,0x 0C,0x 00]字符数组形式,同时定义在正确情况 下返 回 的 事 件 分 组 为[0x04,0x 0E,0x 04,0x 01,0x 03,0x 0C,0x 00]。在 KC51 的编程如下所示。