基于NRF905的无线呼叫系统设计与实现(15)
时间:2016-12-18 10:44 来源:毕业论文 作者:毕业论文 点击:次
{ Delay(10); MOSI=(bit)(b&0x80); //将b的最高位数据取出写入MOSI b<<=1 ; //将b左移一位后再付给b Delay(10); SCK=1; Delay(10); SCK=0; } SCK=0; } SPI读取函数刚好与之过程相反,每次通过SPI总线从NRF905的MISO中读取1个字节的数据,共8次完成8个字节的读取。具体SpiRead函数人如下: unsigned char SpiRead(void) { register unsigned char i=8; unsigned char ddata=0; SCK=0; while (i--) //依次读取数据到ddata中 { ddata<<=1 ; ddata|=MISO; SCK=1 ; Delay(10); SCK=0 ; Delay(10); } SCK=0; return ddata; } 4.2.2 NRF905控制程序设计 在4.1中提到NRF905无线通信模块有4种工作模式:掉电模式,待机(Standby)模式,ShockBus接收模式,ShockBus传输模式。可以通过控制三个引脚来实现四种模式相互的切换。每次有SPI数据交换时,NRF905模块需要切换到待机模式。 本课题所设计的无线呼叫系统的数据传输是用NRF905无线传输模块来完成的。外部因素如供电电压、噪声、不适当的调制电压电平、不适当的天线负载,都能引起数据传输时的错误。不过如果根据模块要求正确使用的话将基本不会产生数据传输错误的因素。在使用NRF905模块之前,应先配置射频参数。首先就是将NRF905模块的工作模式切换到待机模式,从而允许从设备工作,之后发送一个字节的射频参数配置命令,最后禁止从设备工作。这就是配置射频参数的整个过程。射频配置寄存器共有10个字节,包括中心频率,无线发射功率设置,接收灵敏度,有效发送字节数,有效接收字节数和接收地址等。 除了射频配置外,NRF905模块的驱动程序还包括读取和写入功能,需要通过这两个功能来发送或接收地址数据和缓冲区数据。 发送数据时:首先将NRF905模块设置成待机模式(PWR_UP设置为高电平,TRX_CE设置为低电平),然后将要发送的数据和发送地址通过SPI总线写入到相应的寄存器里,最后将NRF905模块设置成传输模式(PWR_UP,TRX_CE和TX_EN均设置为高电平),数据就会通过天线发送出去。 接收数据时:NRF905模块在待机模式下,当射频配置寄存器的接收地址有数据写入时,NRF905会被设置为接收模式(PWR UP设置为高电平,TRX设置为高电平,TX EN设置为低电平),之后NRF605模块就会自动接收空气中的载波。如果接收到的数据经过载波检测后与发送地址相匹配,DR引脚会自动置为高电平,NRF905模块会被设置成待机模式,之后信号通过LPC检测,并保存在寄存器中,所连接的单片机会通过SPI总线从接收数据寄存器中读取有效的数据。程序流程如图4.5所示。 图4.5 程序详细流程图 4.2.3 无线呼叫系统总体程序设计 (责任编辑:qin) |