基于单片机的无线电子点菜系统硬件方案设计
D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
特殊功能寄存器PCON:
D7 D6 D5 D4 D3 D2 D1 D0
SMOD
串行口可以通过软件设置四种工作方式,各种工作方式的数据格式和波特率均有所不同,这四种工作方式如下:
1. 方式0
当设定SM1、SM0为00时,串行口工作于方式0,在方式0下,RXD为数据输入/输出端,TXD为同步脉冲输出端,发送或接收的数据为8位,低位在前,高位在后,方式0的波特率固定震荡频率的1 /12,也就是每一机器周期传送一位数据。方式0可以外接移位寄存器,将串行口扩展为并行口,也可以外接同步输入/输出设备。发送完毕后,硬件自动将TI置1。再次发送数据前,需要软件将TI位清0。
REN为1时,单片机允许接收数据。RXD为数据接收端,接受数据保存到SBUF接收缓冲器中。发送完毕后,硬件自动将RI置1。再次接收数据前,需要通过软件将RI清0。
2. 方式 1
当设定SM1、SM0为01时,串行口工作方式1。方式1为波特率可变的8位异步通信方式,由TXD发送RXD接收,一帧数据为10位,1位起始位(低电平),8位数据位(低位在前)和1位停止位(高电平),波特率取决于定时器 的T 溢出率(1/溢出周期)和波特率的选择位SMOD。
3.方式2和方式3
当设定SM0、SM1为10或11时,串行口工作于方式2或方式3,这两种方式都是9位异步通信,仅波特率不同,适用于多机通信。在方式2或方式3下,数据由TXD发送RXD接收,1帧数据为11位,1位起始位(低电平),8位数据位(低位在前),1位可编程位(第9位数据,用作奇偶校验或地址/数据选择),1位停止位(高电平)。与方式1相比,多了一位可编程位,发送时,第9位数据为TB8,接收时,第9位数据送入RB8。
通过以上单片机串行口各种工作方式的比较,由于使用一个开发板和PC机进行单独的通信,因此工作方式1比较适合系统的要求。通过设置合适的波特率和帧格式,来实现开发板和PC机之间准确的数据传递。
由于PC机和单片机的处理速度的不同,PC机给开发板发送数据时,单片机采用中断的方式进行数据接收。通过软件设置单片机的传输属性参数为”9600,N,8,1″,来实现和PC机端串行口传输速率同步。开发板向PC机发送数据时,采用查询方式,这样可以节省单片机有限的资源。
开发板还要通过专门的接口和无线数据传输模块进行数据交换,由于系统设计为点对点通信,因此只使用了nRF2401一个信道。nRF2401的数据传输方式为同步传输,因此使用普通的I/O口通过软件方式模拟SPI方式传输。
nRF2401有四种工作模式:收发模式,配置模式,空闲模式和关机模式[16][17]。工作模式由PWR_UP 、CE、TX_EN和CS三个引脚决定,详见表4.1。
表4.1 nRF2401的各种工作模式的设置方式
工作模式 PWR_UP CE CS
收发模式 1 1 0
配置模式 1 0 1
空闲模式 1 0 0
关机模式 0 * *
前文已经讲过有关nRF2401的收发方式,这里重点讨论一下它的配置方式。nRF2401的所有配置工作都是通过CS、CLK1和DATA三个引脚完成,把其配置为ShockBurstTM收发模式需要15字节的配置字。
ShockBurst TM的配置字可以分为以下四个部分:
(1) 数据宽度:声明射频数据包中数据占用的位数。这使得nRF2401能够区分接收数据包中的数据和CRC校验码;
(2) 地址宽度:声明射频数据包中地址占用的位数。这使得nRF2401能够区分地址和数据;
(3) 地址:接收数据的地址,有通道1的地址和通道2的地址;
(4) CRC:使nRF2401能够生成CRC校验码和解码。
nRF2401的配置字如表4.2所示:
在配置模式下要保持PWR_UP引脚为高电平,CE引脚为低电平,配置字从最高位开始,依次写入nRF2401。在CS引脚的下降沿,新送入的配置字开始工作。
表4.2 nRF2401的配置字
位 位数 名字 功能
Shockb
Brst T
M 配置 143:120 24 TEST 保留
119:112 8 DATA2_W 接收频道2有效数据长度
111:104 8 DATA1_W 接收频道1有效数据长度
103:64 40 ADDR2 接收频道2的地址,最高为5字节
63:24 40 ADDR1 接收频道1的地址,最高为5字节
23:18 6 ADDR_W 接受频道地址位数
17 1 CRC_L 8位或16位CRC校验
16 1 CRC_EN 使能CRC校验
常用器件配置 15 1 RX2_EN 使能第二频道
14 1 CM 通信方式设置
13 1 RFDR_SB 发射数据速率
12:10 3 XO_F 晶震频率
9:8 2 RF_PWR 发射输出电源
7:1 7 RF_CH# 频道设置
0 1 RX_EN 接收或发送操作
开发板通过串行口和PC机交换数据的流程图如下:
图4.1 开发板和PC机通过串行口交换数据的流程图
开发板通过IO口和无线数据传输模块进行数据交换的流程图为图4.2。
图4.2开发板通过IO口和无线数据传输模块进行数据交换的流程图
4.1.2 移动端驱动程序
移动端的开发板的结构和PC机端的开发板的结构完全相同,但由于它不需要和PC机通信,只需要和无线数据传输模块进行通信。因此相对另一端的驱动简单一些。具体编程规则在上一节已经详细叙述,这里不再多说,具体的程序是PC机端程序的一部分。
系统 硬件 方案设计 点菜 电子 单片机 无线 基于 相关文章:
- Linux嵌入式系统开发平台选型探讨(11-09)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- VXWORKS内核分析(11-11)
- Linux内核解读入门(11-09)
- linux文件系统基础(02-09)
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)