APP下载

基于ARM的蓝牙通信模块的设计与实现

2011-03-06周凤星

通信技术 2011年3期
关键词:波特率PC机串口

杨 菲,周凤星

(武汉科技大学 信息科学与工程学院,湖北 武汉 430081)

0 引言

在工业应用中,往往希望将采集到的数据保存在电脑上进行后期的处理,包括利用数据处理软件进行复杂的数据运算和绘图,这些软件大多要求在 Windouws平台下运行,传统的USB接口需要复杂的连线。为解决以上问题,研制了基于蓝牙的无线通信模块,该模块将采集到的数据通过蓝牙传到 PC机上,实现对数据的处理和保存。这里将重点讲述蓝牙无线通信模块的实现。

1 蓝牙技术与蓝牙协议体系结构

1.1 蓝牙技术

蓝牙是一种支持设备短距离通信的无线电技术[1]。利用蓝牙技术,能够有效地简化移动通信终端设备之间的通信。由于蓝牙技术具有协议开放性、高抗干扰性、价格低廉、功耗低等优点,具有广泛的应用前景[2]。

1.2 蓝牙协议

蓝牙核心协议体系遵循开放系统互联参考模型(OSI,Open System Interconnection)从低到高定义了蓝牙协议栈的各个层次[3]。按照蓝牙协议的逻辑功能,协议由下至上可分为三部分:传输协议、中间协议、和应用协议[4]。

1.3 主机控制接口

主机控制接口(HCI)是一种具有访问蓝牙硬件能力的通用接口,提供了具有访问蓝牙硬件统一的命令方法,对用户来说是透明的。

主机通过HCI接口直接操作蓝牙模块中的蓝牙芯片,实现无线通信。主机的物理接口有RS232,USB及串口UART,其中 UART最适用于嵌入式应用。采用 UART接口时,如图 1所示。

图1 主机与蓝牙模块的通信

当主机和蓝牙模块通信时,HCI层以上的协议在主机上实现,HCI层以下的协议有蓝牙模块的硬件来完成,二者通过HCI进行通信。在主机和蓝牙模块中都有HCI,它们具有相同的接口[5]。

2 系统硬件设计

2.1 模块的选择

这里设计的蓝牙模块为 GC-02,采用了 CSR公司的AUDIO-FLASH蓝牙芯片,集成度高,功耗小,用于与主机通信,是高质量的CLASS2蓝牙模块。

2.2 主板的设计

主板的核心芯片采用三星公司的ARM处理器S3C2440。S3C2440使用ARM920T内核,具有高性能、低功耗、接口丰富等特性[6]。以一片256MB的Nond Flash作为系统程序存储器,以64MB的SDRAM作为系统的数据存储器。主板提供多种扩展应用接口的支持。

2.3 硬件结构

硬件由两大部分组成:一部分是蓝牙模块,它通过UART与主板进行连接,主机和蓝牙芯片间的收发都是使用 RX和TX两条信号线来完成的,ARM的发送线(TX)和接收线(RX)分别接蓝牙模块的RX和TX端;另一部分是主板,主板上配有各种标准接口、相关的电路设备以及独立的电源系统。硬件框图如图2所示。

图2 硬件框

3 系统软件设计

3.1 软件设计

系统软件主要模块包括初始化模块、数据发送模块、数据接收模块、数据处理模块。模块初始化模块负责系统初始化操作;数据发送和接受模块负责数据的正确收发;数据处理模块负责数据的相关处理工作。

3.1.1 Linux系统串口终端参数设置

Linux系统通过串口终端设备文件来实现对串口设备的访问。最基本的串口通信需要三个引脚即可实现:分别为地线,接收和发送,其他引脚用于握手协议。为了正确实现串口间的通信,必须对串口的参数进行设置[7]:如对波特率、数据位、奇偶校验位、停止位、数据流控制等串口参数进行设置。这里只选取串口通信波特率在Linux系统下的设置做简要介绍。

3.1.2 Linux操作系统下波特率的设置

对串口实现控制需要用到termio结构体,获得端口波特率是通过cfgetispeed函数和cfgetospeed函数实现的。cfgetispeed函数用于获得结构体termios_p中输入波特率信息,而cfgetospeed函数获得结构体termios_p中的输出信息。使用cfgetispeed函数和cfgetospeed函数进行串口波特率设置的具体代码如下所示:

3.1.3 数据发送和数据接收模块

数据发送和接收模块将需要发送的数据以文件的形式发送和接收。在对文件读写前用open(const char*pathname,int flags)函数打开文件。读写完毕后用close(const char*pathname,int flag)函数关闭文件。需要注意的问题是在读写文件时要处理溢出问题,用tcflush()函数处理溢出问题;在发送和接收数据时对文件进行分块发送,保证数据发送和接收的正确性。

3.2 软件的工作流程

蓝牙模块通过主机控制接口 HCI和从设备建立通讯连接,该过程是建立蓝牙通信的关键。其过程如图3所示。

图3 建立蓝牙通信的过程

蓝牙主设备和从设备在完成各自的初始化后,蓝牙主设备处于查询状态,蓝牙从设备处于查询扫描状态,由主设备通过查询判断周围是否存在处于查询扫描状态的蓝牙从设备;蓝牙主设备处于寻呼状态,蓝牙从设备处于寻呼扫描状态,有主设备发出寻呼请求,从设备选择接受请求则连接建立,拒绝请求则连接失败。如果蓝牙主设备知道从设备的设备地址,则可省略查询的过程。

3.3 蓝牙适配器收发数据

多个蓝牙节点可以组成微微网,在微微网中,一个蓝牙主站最多可控制7个蓝牙从站,所以同时可以有七个蓝牙收发器收发数据。

蓝牙无线通信模块发送数据,USB蓝牙适配器将接收到的数据通过虚拟串口传送给PC机,该虚拟串口的传送原理和串口相同。通过vc++编写串口传输接收程序。

USB蓝牙适配器将数据通过虚拟串口发送数据,该应用程序用vc++编写串口发送程序,蓝牙模块接收到数据后,将数据送到处理部分做出相应的处理。

4 应用举例

在工业现场中,在环境恶劣,布线不方便的情况下可以采用蓝牙无线传输的方式来实现数据的通信。

机械设备在运行过程中伴有的振动、噪声、发热、压力等物理参数的变化,机械故障诊断仪通过采集到的信息判断设备运行的状态和故障。机械故障诊断仪将采集到的数据通过蓝牙无线通信模块传输给PC机,以便在PC机上对机械设备运行状态进行进一步的分析;同时该无线通信模块也可以接受 PC机的指令来改变机械故障诊断仪中的测量参数。该系统为工业现场检测提供了更为简单,低成本的途径。

5 技术指标测试

蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点的通信,工作在全球通用的 2.4 GHz,即工业科学医学 (ISM,Industrial Scientific Medical) 频段,经过测试,与日常生活和工业生产所用的电器设备不会产生太大干扰。

蓝牙无线传输的通信距离一般在 10米内,在实验室对仪器进行测试,结果表明在室内无障碍物的情况下,通信距离可达到8~10米,有阻挡物的情况下,通信距离可达到5~8米。经多次测试最高速率可达到 115 200 b/s,长期测试数据传输正常。

6 结语

这里结合蓝牙协议,介绍了基于蓝牙的无线通信模块的硬件和软件设计,经过细致的技术指标测试,传输距离和速度均能到达预想的效果,说明了蓝牙通信模块具有广泛的应用前景。

[1] 刘跃敏,亢压庆.蓝牙技术在电梯断电平层控制中的应用[J].通信技术,2010,43(01):107-109.

[2] HUANG ALBERT S,RUDOLPH LARRY.Bluetooth Essentials for Programmers[M].Cambridge:Cambridge University Press,2007.

[3] 邢传玺,栾晓明.基于蓝牙的嵌入式通信模块的实现[J].应用科技,2009,36(09):43-47.

[4] 马建辉,吕梦兴,王知学,等.OBEX在蓝牙开发中的应用 [J].通信技术,2010,43(01):162-163.

[5] 马方魁,郇极.蓝牙技术在工业控制系统中的集成与开发[J].北京航空航天大学学报,2009,32(12):1459-1462.

[6] 杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003:39-97.

[7] 杜华.Liunx编程技术详解[M].北京:人民邮电出版社,2007:165-189.

猜你喜欢

波特率PC机串口
UART 波特率检测电路的FPGA 设计算法与实现
浅谈AB PLC串口跟RFID传感器的通讯应用
CAN 总线波特率自适应程序设计
波特率自适应的CAN驱动在嵌入式Linux下的实现①
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
详解lAP15W4K58S4单片机的串行口通信
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索