好文档 - 专业文书写作范文服务资料分享网站

基于2.4GHz频段模块的无线通信系统的开发

天下 分享 时间: 加入收藏 我要投稿 点赞

‘00’-4MHz; ‘01’-2MHz; ‘10’-1MHz; ‘11’-500KHz; UP_CLK_EN XOF 1 3 输出时钟使能 晶振频率端,必须与外部晶振频率相对应(默认值为100) ‘000’-4MHz; ‘001’-8MHz; ‘010’-12MHz; ‘011’-16MHz; ‘100’-20MHz; CRC_EN CRC_MODE 1 1 CRC校验使能端,高为使能,默认值为高 CRC方式选择端,高为16,低为8位,默认值为高

射频寄存器的各位的长度是固定的。然而,在ShockBurstTM收发过程中,TX_PAYLOAD、RX_PAYLOAD、TX_ADDRESS和RX_ADDRESS 4个寄存器使用字节数由配置字决定。nRF905进入关机模式或空闲模式时,寄存器中的内容保持不变。

5.4 单片机与nRF905的硬件连接原理图

单片机与nRF905的接口电路很重要。nRF905内部有5个寄存器:状态寄存器、配置寄存器、发射地址寄存器、发射数据寄存器和接收数据寄存器。除了对寄存器读写外,还需对nRF905工作模式的切换进行控制。单片机与nRF905的硬件连接图如图5-2所示,详细电路图见附录A。 ATMEGA16L与nRF905之间的双向数据传输使用SPI接口,单片机的PB7-PB4连接nRF905的SPI接口,PB2-PB0、PD2-PD3连接nRF905的控制信号和检测信号,用于nRF905的模式切换以及通信过程中必须的信号指示接口。

图5-2 单片机与nrf905连接图

PB0PB1PB2PB4PB5PB6PB7PD2PD3PD4PWRTRX_CETX_ENCSNMOSIMISOSCKCDAMDRATMEGA16LnRF90518

5.5 nRF905软件的设计

1、nRF905的配置

nRF905的所有配置都是通过SPI接口进行。SPI接口由5个寄存器组成。一条SPI指令用来决定进行什么操作。SPI接口只有在关机模式和Stamdby模式是激活的。

SPI接口由5个内部寄存器组成。执行寄存器的回读模式来确认寄存器的内容。

? 状态寄存器:包含数据准备就绪(DR)和地址匹配(AM)状态。 ? nRF905配置寄存器:包含收发器的频率,输出功率等配置信息。 ? 发送地址寄存器:包含目标器件地址,字节长度由配置寄存器设置。

? 发送有效数据寄存器:包含发送的有效Shock Bust数据包数据,字节长度由配置寄存器设置。

? 接收有效数据寄存器:包含接收的有效Shock Bust数据包数据,字节长度由配置寄存器设置。在寄存器中的有效数据由数据准备就绪(DR)指示。

SPI指令设置有用命令如表5-2所示。当CSN为低时,SPI接口开始等待一条指令,任何一条新指令均由CSN的由高到低的转换开始。

表5-2 SPI串行接口指令

SPI串行接口指令 指令名称 W_CONFIG(WC) 指令格式 0000AAAA 操作 写配置寄存器。AAAA指出写操作的开始字节,字节数量取决于AAAA指出的开始地址。 R_CONFIG(RC) 0001AAAA 读配置寄存器。AAAA指出读操作的开始字节,字节数量取决于AAAA指出的开始地址。 W_TX_PAYLOAD(WTP) 00100000 写TX有效数据:1-32字节。写操作全部由字节0开始。 R_TX_PAYLOAD(RTP) 00100001 读TX有效数据:1-32字节。读操作全部从字节0开始。 W_TX_ADDRESS(WTA) R_TX_ADDRESS(RTA) R_RX-PAYLOAD(RRP) CHANNEL_CONFIG(CC) 00100010 00100011 00100100 1000pphc cccccccc 写TX地址:1-4字节。写操作全部从字节0开始。 读TX地址:1-4字节。读操作全部从字节0开始。 读RX有效数据:1-32字节。读操作全部从字节0开始。 快速设置配置寄存器中CH_NO;HFREQ_PLL和PA_PWR的命令。CH_NO=ccccccccc;HFREQ_PLL=h;PA_PWR=pp 根据以上指令形式,在程序中定义各个命令对应的数据。

由于ATMEGA16L单片机自身带有SPI硬件通信接口可以直接和nRF905的SPI接口相连。根据读写时序编写对应的程序如下:

19

uchar nrf905_SpiRW(uchar val) //SPI读写操作

{uchar temp; SPDR=val;

While((SPSR&(1<

2、数据包描述

数据包格式是通信协议的重要部分,完整的射频数据包由四部分组成:前缀、地址、有效数据和CRC。nRF905的无线数据包格式如下: Preamble ADDR PAYLOAD CRC 其中,Preamle是前缀,是由硬件自动加上去的;ADDR是要发送的32-40位地址码;PAYLOAD是有效数据;CRC是CRC校验和,它可由内置CRC纠检错硬件电路自动加上,可设为0/8或6位。Shock Burst数据包的总位数最多不能超过256位,可通过下式计算有效数据的最大位数:

DATAx_W(bits)=256-ADR_W-CRC

其中:ADDR_W为配置字中B[32:18]所设置的接收地址的长度,8-40位;CRC为配置字B[17]所设置的校验字,8位或16位。4位或8位前缀是自动加进去的,不占用数据包的位数。由上式可知,要想在每个数据包中得到更长的有效数据,可减少地址和CRC校验位。因此,设置较短的地址和校验和可以提高传输效率,但会使可靠性降低。Shock Burst方式,前缀、地址和CRC都是在接收器收到数据包和自动移去,只留有效数据。

3、发送模式软件设计

Shock Burst工作模式确保一个传输包发送开始后,总是能够完成,不管在发送过程中TRX_CE,TX_EN如何被设置。当发送结束后,新的模式被激活。

其主要程序如下:

Void nrf905_SendData() //发送TxBuf中的数据 {

nrf905_TxOn();//切换到发送模式 nrf905_SetTxAddr();//写发送地址 nrf905_SetData(); //写数据 nrf905_TxSend(); //启动发送 nrf905_WaitSended();等待发送结束 }

4、接收模式软件设计

如果在引入数据当中TRX_CE或TX_EN的状态改变,nrf905将立刻改变模式,并且数据包丢

20

失。尽管如此,如果MCU已经感觉到AM信号,MCU就知道nrf905正在接收数据,然后决定是等待DR信号还是改变模式。

其主要程序如下:

Void nrf905_ReadData() //读出接收到的数据 { uchar i; CLR(PORTB,CSN);

Nrf905_SpiRW(RRP); //读RxPayload for(i=0;i

RxBuf[i]=nrf905_SpiRW(0); //读出接收到的数据 }

SET(PORTB,CSN); }

21

6 测温电路

6.1 DS18B20的特点、结构及工作原理说明

数字温度传感器DS18B20的测温范围为-55℃-+125℃,精度为0.5℃,测量的温度值用9或12位数字表示,最大转换时间为750ms,温度超标报警的上、下限值,DS18B20的转换分辨率均可由用户设定,并能长期保存。利用Dallas 的单总线控制协议和单线控制信号在总线上来实现数据的读写。DS18B2O的另一特点是在没有外部电源下操作的能力,电源由总线为高电平时DQ脚上的上拉电阻提供(寄生供电模式),此时VDD脚接地。也可用传统方式供电,即将外部电源接在VDD脚上即可[10]。电源为3或5.5V。本设计中采用外部电源供电,电压3V。

DS18B20测温原理如图6-1所示。图中低温度系数晶振的振荡频率受温度影响很小,用来向计数器1提供固定频率的脉冲信号。高温度系数晶振的振荡频率受温度影响较大,随温度的变化而明显改变,其产生的信号作为计数器2的脉冲输入,用来控制闸门的关闭时间。初态时,计数器1和温度寄存器被预制在与-55℃相对应的一个基值上。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,在计数器2控制的闸门时间到达之前,如果计数器1的预制值减到0,则温度寄存器的值将作加1运算,与此同时,用于补偿和修正测温过程中非线性的斜率累加器将输出一个与温度变化相对应的计数值,作为计数器1的新预制值,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环,直到计数器2控制的闸门时间到达亦即计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。在默认的配置中,DS18B20的测温分辨率为0.0625℃,以12位有效数据表示。本设计中测温分辨率为0.0625℃。

图6-1测温原理图

22

基于2.4GHz频段模块的无线通信系统的开发

‘00’-4MHz;‘01’-2MHz;‘10’-1MHz;‘11’-500KHz;UP_CLK_ENXOF13输出时钟使能晶振频率端,必须与外部晶振频率相对应(默认值为100)‘000’-4MHz;‘001’-8MHz;‘010’-12MHz;‘011’-16MHz;‘100’-20MHz;CRC_ENCRC_MODE11CRC校验使能端,高为使能,
推荐度:
点击下载文档文档为doc格式
8cnvo46wbb3pit886asl2xn8u9whjn0047l
领取福利

微信扫码领取福利

微信扫码分享