基于nRF905的无线通信的设计与实现

2012-08-07 07:53王红萍
电子测试 2012年10期
关键词:发送数据状态机通信协议

王红萍

(中国人民解放军91550部队89分队 大连 116023)

0 引言

现行市场上的LED屏,采用异步串口、TCP/IP接口等有线和GPRS无线进行通信。对于装修计划中的LED屏,即使提前布线或预留线缆空间,在线缆损坏或调试LED屏还是有诸多不利条件。技术成熟的GPRS无线模块,价格昂贵,不适用于大众场合。针对普遍使用的串口通信控制的LED屏,本文介绍了采用nRF905芯片为核心的硬件电路,论述了无线通信系统中的功耗估计、速率适配、串口与无线的通信协议设计和嵌入式单片机的软件设计,实现单片机控制串口的无线通信。

1 硬件设计

1.1 硬件总体框图

硬件框图如图1和图2所示。图1为上位机框图,电路板上的单片机收到计算机发来的控制数据通过无线模块转发。图2为下位机框图,单片机将无线模块收到的数据通过串口发给LED屏的电路控制板。LED屏回复数据的传输方向正好相反。

图1 上位机框图

图2 下位机框图

采用ProtelDXP绘制电路原理图和双面PCB板,使用JTAG mk II在AVR Studio4下编写基于单片机的嵌入式软件,采用GCC编译器进行编译连接。

1.2 电路设计

A)单片机Atmega16A

采用芯片LM1117将DC 9V稳压到3.3V,对单片机Atmega16A、芯片nRF905、芯片Max3232供电。串口通信采用芯片Max3232进行逻辑电平的转换。

系统采用高性能、低功耗的8位AVR微处理器Atmega16A单片机。该单片机具有16K字节的系统内可编程Flash、512字节的EEPROM和1K字节的SRAM,供嵌入式软件使用;在线调试的JTAG端口,丰富了系统的调试手段;独立的定时器和可编程的串口,加强了系统的功能。单片机Atmega16A上的SPI接口,保证了无线芯片nRF905的无缝连接。

B)无线芯片nRF905

NORDIC公司的无线芯片nRF905采用高效的GFSK调制,使用开放的ISM频段,工作速率可达50K bps,收发模式切换时间短,功耗低,内置硬件CRC校验和点对多点的通信地址控制,这些优点特别适合工业控制场合。

2 软件设计

2.1 通信协议

A)串口通信协议

设计串口通信协议:1位起始位,8位数据位,“空格”校验位,1位停止位;

B)数据通信协议

设计串口发送数据的通信协议:串口发送数据的第一个字节和第二个字节是0xF6、0x5A,作为包头,第三个字节和第四个字节为数据长度的一半,数据最后的两个字节为校验字节,数据的倒数第三字节和第四字节为无线发送数据次数。LED屏控制卡回复数据为四个字节,第一个字节和第二个字节为为发送数据的前两个字节,后两个字节为发送数据次数。

C)无线收发数据协议

无线通信的数据采取分包发送的机制。无线通信协议设计:第一个字节为包头0xF6,第二个字节为数据的长度,此字节的首位置1,此包数据为最后一包,此字节的首位置0,此包数据非最后一包。由于无线芯片一包最大发送或接收字节数32字节,所以最大数据包长度为30个字节。大于30个字节的数据,分包发送。

2.2 基于状态机的嵌入式软件设计

2.2.1 系统初始化

系统初始化主要包括:端口、串口、SPI总线、无线芯片、定时器和链表。状态机的初始化包括:初始状态、各个状态的初始条件等。根据数据发送和接收的流程,设计状态机的5种状态:待机状态 ST_STAND_BY、串口接收状态(PC端) ST_UART_RECV、无线接收状态(LED屏端)ST_WAVE_RECV、串口等待状态(LED屏端)ST_UART_WAIT,以及无线等待状态(PC端)ST_WAVE_WAIT。

2.2.2 状态机的状态触发与转换

上位机在中断中接收PC发送的控制数据,存储在循环链表中,通过无线芯片分包发送;上位机查询无线芯片接收回复数据,通过串口发给PC上的控制软件;上位机状态触发与转换关系关系如图3所示。

图3 上位机状态触发与转换关系关系

下位机查询接收无线模块发送的数据,通过串口转发给LED屏控制卡;LED屏控制卡的回复数据,下位机在中断中接收,通过无线发送;下位机状态触发与转换关系如图4所示。图3和图4共同完成一次数据应答。

图4 下位机状态触发与转换关系

2.2.3 定时器的数据收发检测

A)串口接收数据完的检测

串口的数据接收是在中断中完成的,因此在中断中对定时器置数,中断外面减数。波特率为9600 bps时,中断间隔小于1 ms。设置定时器的时长1.5 ms,如果超过此时长,则意味着串口数据接收完成。

B)无线发送接收数据的检测

嵌入式程序中多处用到无线收发数据的定时器检测,根据应用场合,选择定时器的时长。

3 测试方案与数据

3.1 测试方案

板卡测试分为无线发送数据部分测试、无线接收部分测试及无线测试。无线发送数据测试部分:采用工具软件串口监视助手监视上位机软件通过串口发送给无线部分的数据,在嵌入式程序调试中,利用芯片Max3232的多通道,无线发送的数据,通过串口送回上位机,串口监视助手监视无线发送的数据。无线接收部分测试:无线部分收到数据后,利用芯片Max3232的多通道,将收到的数据送回上位机,同样利用串口监视助手监视无线接收的数据。

无线测试利用双串口的计算机,一个串口连接发送数据的板卡,另外一个串口连接接收数据板卡,利用串口调试助手分别监视两路串口,完成无线部分的数据发送与接收调试。

3.2 测试数据

LED屏的无线发送与接收测试数据如表1所示。

表1 无线发送与接收测试数据表

上位机与LED屏的通信,每次先握手再交换数据,初次连接只进行握手。表1中,总字节长度表中采用十进制数,数据包的长度采用十六进制数。表1中的数据内容与数据格式:包头、数据产度、数据及奇偶校验等,满足数据通信协议要求。

4 结束语

本文对采用芯片nRF905进行LED屏的无线通信进行了论证,从通信速率和功耗两个方面分析了技术可行性,设计了串口通信协议、数据包协议和无线通信协议、论述了基于状态机的嵌入式软件设计,实现了系统预想功能。

[1]马潮. AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2007.

[2]NORDIC SEMICONDUCTOR.Single chip 433/868/915 MHz Transceiver nRF905 PRODUCT SPECIFICATION[A].NORDIC SEMICONDUCTOR,2006.

[3]张腊明,佟宇.状态机技术在数据通讯协议栈中的编程应用[J].现代电子技术,2008(3):146-148.

[4]陈小琴,蒋存波,金红.状态机原理在控制程序设计中的应用[J].制造业自动化,2007,29(10):57-60.

[5]管庶安.单片机程序的状态机模型[J].武汉工业学院学报,2004,23(2):1-2.

[6]杨杰,周兰兰.单片机系统非正常复位的判断与处理[J].电子测试,2009(11): 85-88.

[7]陈敏,孟立凡,王华斌.基于NRF905的无线多点温度测量系统[J].电子测试,2011(4):105-108.

[8]胡汉才.单片微机原理及其接口技术[M].北京:清华大学出版社,2003.

猜你喜欢
发送数据状态机通信协议
基于有限状态机的交会对接飞行任务规划方法
一种车载自组织网络的媒体接入控制协议
基于马尔科夫链的LoRaWAN网络节点性能分析
带标记方式的CRDSA++协议性能分析*
基于Z-Stack通信协议栈的红外地温采集电路设计
使用IPSec安全传输数据
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
双口RAM读写正确性自动测试的有限状态机控制器设计方法
RSSP-I、RSSP-Ⅱ及SAHARA三种安全通信协议实现技术简介