波特率自适应的无线数据传输模块设计
时间:08-01
来源:互联网
点击:
1 模块总体硬件结构
模块总体硬件结构主要由微控制器和蓝牙芯片及其相应的外围电路组成,能自动完成波特率识别,并进行数据的编码处理,给用户提供了一个透明的数据接口。微控制器选用Atmel公司新推出的具有可在线编程(ICSP)功能的单片机AT89S51,便于以后软件的升级。根据发送数据是否需要曼彻斯特编码、所需外围元件的数量、功耗及发射功率等方面因素的综合比较,选用nRF401芯片作为无线数据传输芯片。
nRF401是单片无线收发芯片,采用蓝牙核心技术设计,内部集成高频发射、高频接收、PLL合成、FSK调制、FSK解调、多频道切换等诸多功能和外围部件协议。它是目前集成度最高的无线数据传输产品,也是目前唯一一个可以直接连接微控制器串口进行异步数据传输、无需进行曼彻斯特编码的无线收发芯片。nRF401发射功率最大为10 mw,工作电压为2.7~5 V,发射电流为8~30 mA,接收电流约为10 mA,待机电流为8 μA,灵敏度为-105dBm,20脚8 mm×7 mm的SOIC封装;所需外部元件很少,仅外接一个晶振和几个阻容、电感元件;基本无需凋试,传输速率最高为19.2 kbps,工作频段为433/434 MHz,有2个信道,调制方式FSK。
nRF401端口中与微控制器相关的有5个:DIN和DOUT用于异步串行通信,DIN的数据方向为微控制器到无线芯片,DOUT则相反;CS选择芯片频段,CS=0时为433.92 MHz,CS=1时为434.33 MHz,在本模块中将该引脚引出,以方便用户的控制,当一个频段无法工作时,可以设置为另一个工作频段,提高了系统的抗干扰能力;PWR_UP用于芯片节电控制,PWR_UP=0时为掉电(节电模式),PWR_UP=1时为上电(工作模式),在该模块中同样将其引出,当不需要无线发射和接收时,用户可将芯片设置为节电模式以降低系统功耗;TXEN选择芯片处于发射或接收状态,TXEN=0时为接收状态,TXEN=1时为发送状态。
PCB板布局和电源去耦设计对于RF射频电路获得较好的性能是必要的,电路板采用1.6 mm厚FR4板材的两层PCB,底层铺铜面,并在元件层空白区铺铜;多打通孔连接上下层,铜面与地线相连,天线下底层不铺铜,VSS直接与铜层连接,并保证关键元件有充分的接地。所有开关数字信号和控制信号都不能经过PLL环路滤波器元件和VCO电感附近。直流供电在离VDD脚尽可能近的地方用高性能的电容去耦,去耦使用1个小电容(0.01μF)和1个大电容(2.2μF)并联,并避免较长的电源走线。
2 硬件设计及软件实现
2.1 微控制器与nRF401接口设计
微控制器AT89S51与蓝牙芯片nRF401的接口电路如图2所示。nRF401芯片只需10个左右的元件即实现了数据收发功能,应用极其方便。其TXEN端为数据收发选择端,当设定为发送模块时,将其置为高电平;同时,DIN引脚与微控制器的TXD端相连,微控制器的RXD端作为预留接口与外部主控单片机的TXD相连。若设计为接收模块,则将TXEN端置为低电平;同时,DOUT引脚与微控制器的RXD端相连,微控制器的RXD引脚与外部主控单片机的TXD引脚相连。模块与外部单片机的通信波特率为自动检测方式,受nRF401芯片通信速率的限制,可以工作在1 200~19 200 bps。模块上预留ICSP接口,可在系统编程,方便程序的升级;同时具有良好的防窃密功能,不易破解。
2.2 串口模拟及波特率自适应的实现
模块上的微控制器AT89S51既要控制nRF401芯片实现与外界的数据交换功能,又必须受控于模块外部的主控单片机,因此AT89S51必须能同时与nRF401芯片和片外主控单片机通信;但AT89S51只有一个UART,无法满足要求。为解决这一予盾,通常的做法是扩展一片8251或8250通用同步/异步接收发送芯片(USART),但会额外占用单片机I/O资源,增加系统的成本,同时也增大了PCB板的布局面积。在本系统中用单片机普通I/O口模拟串行口,利用该方法还可扩展多个外部串行端口,实现多机通信。
要实现用普通的I/O口模拟串口,必须首先确定串行口的通信速率(即波特率)。本系统中,该模块设计成波特率为1 200~19 200 bps自适应式的通信模块,自身的波特率能随主控单元的变化而自动调整,使系统适应性更强,更智能化,因此,必须首先解决好波特率自动检测识别的问题。
2.2.1 波特率自动检测识别的实现
波特率自动检测识别的常用方法主要有两种。
(1) 标准波特率穷举法
标准波特率穷举法要求主机侧的波特率必须在有限的几个固定数值之间变化,如300~9 600的标准值;同时从机侧的工作振荡频率已知且稳定。从机启动通信程序后,逐个尝试以不同的波特率接收主机发出的特定字符,直到能正确接收为止。因此,该方法的运用有一定的局限性。
(2) 码元宽度实时检测法
码元宽度实时检测法是先通过单片机的定时器测量接收(RXD)引脚上输入数据的码元宽度,即机器周期的计数值,而后用软件计算出波特率发生寄存器的值。该方法由于适用范围广、操作灵活,因而应用较为普遍。
在本系统中用码元宽度实时检测法确定出主机的波特率,而后从机自身进行相应的设置。理论上,只要能够测出一个码元的宽度就能确定出数据传输的波特率;但在实际测量过程中,为保证测量的准确性,通常采取测量连续8个码元宽度的方法。这里,采用了较为常用的异步串行通信数据格式(即1个起始位、8个数据位、无校验、1个停止位,发送时低位数据在前,高位在后),因此连续8个码元宽度的时间可以通过在主机侧发0x80H的方式实现,其波形如图3所示。起始位加7个码元宽度的低电平,刚好构成8个脉宽的低电平。单片机采用串口中断的方式接收数据,当有数据到达时,打开定时器,同时不断查询接收引脚的状态;当RXD变为高电平后停止计数,这样单片机就可以测量出此低电平持续的宽度。
设主机侧的波特率为BPS,其值未知,则此时连续8个码元的宽度计算公式为:
模块总体硬件结构主要由微控制器和蓝牙芯片及其相应的外围电路组成,能自动完成波特率识别,并进行数据的编码处理,给用户提供了一个透明的数据接口。微控制器选用Atmel公司新推出的具有可在线编程(ICSP)功能的单片机AT89S51,便于以后软件的升级。根据发送数据是否需要曼彻斯特编码、所需外围元件的数量、功耗及发射功率等方面因素的综合比较,选用nRF401芯片作为无线数据传输芯片。
nRF401是单片无线收发芯片,采用蓝牙核心技术设计,内部集成高频发射、高频接收、PLL合成、FSK调制、FSK解调、多频道切换等诸多功能和外围部件协议。它是目前集成度最高的无线数据传输产品,也是目前唯一一个可以直接连接微控制器串口进行异步数据传输、无需进行曼彻斯特编码的无线收发芯片。nRF401发射功率最大为10 mw,工作电压为2.7~5 V,发射电流为8~30 mA,接收电流约为10 mA,待机电流为8 μA,灵敏度为-105dBm,20脚8 mm×7 mm的SOIC封装;所需外部元件很少,仅外接一个晶振和几个阻容、电感元件;基本无需凋试,传输速率最高为19.2 kbps,工作频段为433/434 MHz,有2个信道,调制方式FSK。
nRF401端口中与微控制器相关的有5个:DIN和DOUT用于异步串行通信,DIN的数据方向为微控制器到无线芯片,DOUT则相反;CS选择芯片频段,CS=0时为433.92 MHz,CS=1时为434.33 MHz,在本模块中将该引脚引出,以方便用户的控制,当一个频段无法工作时,可以设置为另一个工作频段,提高了系统的抗干扰能力;PWR_UP用于芯片节电控制,PWR_UP=0时为掉电(节电模式),PWR_UP=1时为上电(工作模式),在该模块中同样将其引出,当不需要无线发射和接收时,用户可将芯片设置为节电模式以降低系统功耗;TXEN选择芯片处于发射或接收状态,TXEN=0时为接收状态,TXEN=1时为发送状态。
PCB板布局和电源去耦设计对于RF射频电路获得较好的性能是必要的,电路板采用1.6 mm厚FR4板材的两层PCB,底层铺铜面,并在元件层空白区铺铜;多打通孔连接上下层,铜面与地线相连,天线下底层不铺铜,VSS直接与铜层连接,并保证关键元件有充分的接地。所有开关数字信号和控制信号都不能经过PLL环路滤波器元件和VCO电感附近。直流供电在离VDD脚尽可能近的地方用高性能的电容去耦,去耦使用1个小电容(0.01μF)和1个大电容(2.2μF)并联,并避免较长的电源走线。
2 硬件设计及软件实现
2.1 微控制器与nRF401接口设计
微控制器AT89S51与蓝牙芯片nRF401的接口电路如图2所示。nRF401芯片只需10个左右的元件即实现了数据收发功能,应用极其方便。其TXEN端为数据收发选择端,当设定为发送模块时,将其置为高电平;同时,DIN引脚与微控制器的TXD端相连,微控制器的RXD端作为预留接口与外部主控单片机的TXD相连。若设计为接收模块,则将TXEN端置为低电平;同时,DOUT引脚与微控制器的RXD端相连,微控制器的RXD引脚与外部主控单片机的TXD引脚相连。模块与外部单片机的通信波特率为自动检测方式,受nRF401芯片通信速率的限制,可以工作在1 200~19 200 bps。模块上预留ICSP接口,可在系统编程,方便程序的升级;同时具有良好的防窃密功能,不易破解。
2.2 串口模拟及波特率自适应的实现
模块上的微控制器AT89S51既要控制nRF401芯片实现与外界的数据交换功能,又必须受控于模块外部的主控单片机,因此AT89S51必须能同时与nRF401芯片和片外主控单片机通信;但AT89S51只有一个UART,无法满足要求。为解决这一予盾,通常的做法是扩展一片8251或8250通用同步/异步接收发送芯片(USART),但会额外占用单片机I/O资源,增加系统的成本,同时也增大了PCB板的布局面积。在本系统中用单片机普通I/O口模拟串行口,利用该方法还可扩展多个外部串行端口,实现多机通信。
要实现用普通的I/O口模拟串口,必须首先确定串行口的通信速率(即波特率)。本系统中,该模块设计成波特率为1 200~19 200 bps自适应式的通信模块,自身的波特率能随主控单元的变化而自动调整,使系统适应性更强,更智能化,因此,必须首先解决好波特率自动检测识别的问题。
2.2.1 波特率自动检测识别的实现
波特率自动检测识别的常用方法主要有两种。
(1) 标准波特率穷举法
标准波特率穷举法要求主机侧的波特率必须在有限的几个固定数值之间变化,如300~9 600的标准值;同时从机侧的工作振荡频率已知且稳定。从机启动通信程序后,逐个尝试以不同的波特率接收主机发出的特定字符,直到能正确接收为止。因此,该方法的运用有一定的局限性。
(2) 码元宽度实时检测法
码元宽度实时检测法是先通过单片机的定时器测量接收(RXD)引脚上输入数据的码元宽度,即机器周期的计数值,而后用软件计算出波特率发生寄存器的值。该方法由于适用范围广、操作灵活,因而应用较为普遍。
在本系统中用码元宽度实时检测法确定出主机的波特率,而后从机自身进行相应的设置。理论上,只要能够测出一个码元的宽度就能确定出数据传输的波特率;但在实际测量过程中,为保证测量的准确性,通常采取测量连续8个码元宽度的方法。这里,采用了较为常用的异步串行通信数据格式(即1个起始位、8个数据位、无校验、1个停止位,发送时低位数据在前,高位在后),因此连续8个码元宽度的时间可以通过在主机侧发0x80H的方式实现,其波形如图3所示。起始位加7个码元宽度的低电平,刚好构成8个脉宽的低电平。单片机采用串口中断的方式接收数据,当有数据到达时,打开定时器,同时不断查询接收引脚的状态;当RXD变为高电平后停止计数,这样单片机就可以测量出此低电平持续的宽度。
设主机侧的波特率为BPS,其值未知,则此时连续8个码元的宽度计算公式为:
蓝牙 电路 Atmel 单片机 电压 电流 电感 PCB 射频 滤波器 电容 51单片机 相关文章:
- 不断提升的蓝牙数据速率催生多种新兴应用(09-04)
- 面向大众市场的超宽带技术(09-04)
- 标准化进程难挡UWB市场增长,2011年出货量接近3亿 (09-04)
- 基于CSR CVC-HF系统的汽车蓝牙免提解决方案(09-08)
- 蓝牙与UART:互补配合,相辅相成(09-27)
- 浅析蓝牙技术 (上)(09-27)