MSP430和nRF905的无线数传系统设计( 二 )


2.3nRF905的数据接口
外围MCU通过SPI总线配置nRF905的内部寄存器和收发数据 。nRF905的SPI总线包括4个引脚:CSN(SPI使能)、SCK(SPI时钟)、MISO(主人从出)和MOSI(主出从人) 。这里nRF905为从机,其SPI的时钟范围很宽,可以从1Hz~10MFIz,因此MCU在写控制程序时不必苛求时间的准确度 。
SPI总线的每次操作都必须在使能引脚CSN的下降沿开始,CSN低电平有效,总线上的数据在时钟的上升沿有效 。MCU对SPI总线的操作不外乎两种方式:读和写 。在进行读操作时,先把CSN置低,然后在MOSI数据线上输出一个表示读命令的字节,与此同时,nRF905会在MISO数据线上输出一字节表示状态信息的数据,随后输出一地址字节,后面跟随有效数据 。在进行写操作时比较简单,MCU先把CSN拉低,然后在MOSI线上输出写命令字节和数据字节即可 。
2.4nRF905的寄存器配置
nRF905内部有5类寄存器:一是射频配置寄存器,共10个字节,包括中心频点、无线发送功率配置、接收灵敏度、收发数据的有效字节数、接收地址配置等重要信息;二是发送数据寄存器,共32字节,MCU要向外发的数据就需要写在这里;三是发送地址,共4个字节,一对收发设备要正常通信,就需要发送端的发送地址与接收端的接收地址配置相同;四是接收数据寄存器,共32字节,nRF905接收到的有效数据就存储在这些寄存器中,MCU可以在需要时到这里读取;五是状态寄存器,1个字节,含有地址匹配和数据就绪的信息,一般不用 。

;MCU若要操作这些寄存器,需遵循nRF905规定的操作命令,常用的有以下7种,都是1个字节:写射频配置(OXH,“X”含4位二进制位,该字节表示要开始写的初始字节数)、读射频配置(1XH,“X”含4位二进制位,该字节表示要从哪个字节开始读)、写发送数据(20H)、读发送数据(2lH)、写发送地址(22H)、读发送地址(23H)和读接收数据(24H) 。关于寄存器的具体信息可以参阅nRF905的数据手册 。
2.5nRF905的工作过程
nRF905在正常工作前应由MCU先根据需要写好配置寄存罨,或是按照默认配置工作 。其后的工作主要是两个:发送数据和接收数据 。
发送数据时,MCU应先把nRF、905置于待机模式(PWR_UP引脚为高、TRX_CE引脚为低),然后通过SPI总线把发送地址和待发送的数据都写入相应的寄存器中,之后把nRF905置于发送模式(PWR_UP、TRX_CE和TX_EN全置高),数据就会自动通过天线发送出去 。若射频配置寄存器中的自动重发位(AuTO_RETRAN)设为有效,数据包就会重复不断地一直向外发,直到MCU把TRX_CE拉低,退出发送模式为止 。为了数据更可靠地传输,建议多使用此种方式 。
接收数据时,MCU先在nRF905的待机模式中把射频配置寄存器中的接收地址写好,然后置其于接收模式(PWR_UP=1、TRX_CE=1、TX_EN=O),nRF905就会自动接收空中的载波 。若收到地址匹配和校验正确的有效数据,DR引脚会自动置高,MCU在检测到这个信号后,可以改其为待机模式,通过SPI总线从接收数据寄存器中读出有效数据 。
3; 系统硬件设计
MSP43O的USART模块可通过寄存器配置为通用异步串行口或SPI模块功能,这里配置为SPI模块 。本系统选用的MCU是MSP430F133,在硬件设计时把MCU的SPI接口和nRF905的SPI接口相连即可,另外再选几个I/O口连接aRF905的输入输出信号,如图1所示 。
对于初次接触无线系统的设计者,因其射频部分的元件采购、焊接和调试比较麻烦,可以选用PTR8000模块 。该模块内核使用nRF905,硬件电路已经焊好,使用起来相对方便一些 。
4; 控制程序设计
本系统设计的重点是控制nRF905的程序设计,大致分两个阶段:首先是对nRF905进行初始配置,配置完成后按需要编写数据的发送或接收程序 。

推荐阅读