基于MCU和nRF905的低功耗远距离无线传输系统
3 点对点无线通信的实现
3.1 SPI接口
nRF905利用SPI口实现与MCU的双向通讯。nRF905的SPI总线包括4个引脚:CSN(SPI使能)、SCK(SPI时钟)、MISO (主入从出)和MOSI(主出从入)。其中CSN可以接到一个GPIO端口控制芯片工作,而其他三个脚则连接到主控MCU的SPI接口上。主控MCU可以使用GPIO端口控制nRF905的3根控制线,控制低功耗的PWR_UP、正常工作的TX_EN、选择发送还是接收方式的TRX_CE。nRF905有两种节能模式和两种工作模式,分别为掉电模式、待机模式、Shock Burst 接收模式和Shock Burst发送模式。这几种模式由主控MCU通过控制nRF905的3个引脚PWR_UP、TRX_CE和TX_ EN的高低电平来决定。nRF905有3个引脚用于状态输出,分别是:CD(载波检测)、AM(地址匹配)和DR(数据就绪),均为高电平有效。 nRF905在处于接收模式时,若检测到接收频率段的载波,就置CD为高。接着检测载波数据中的地址字节,若与本身已配置的接收地址相同,则置AM为高;若检测到接收数据中的CRC校验正确,则存储有效数据字节,置DR为高。本文引用地址:https://www.eepw.com.cn/article/156893.htm
MCU通过SPI总线配置nRF905的内部寄存器和收发数据。这里nRF905为从机,其SPI的时钟范围很宽,可为1Hz~10MHz,因此 MCU在写控制程序时不必苛求时间的准确度。SPI总线的每次操作都必须在使能引脚CSN的下降沿开始,CSN 低电平有效,总线上的数据在时钟的上升沿有效。MCU对SPI总线进行读操作时,先把CSN置低,然后在MOSI 数据线上输出一个表示读命令的字节,与此同时,nRF905会在MISO数据线上输出一个字节表示状态信息的数据,随后输出一个地址字节,后面跟随有效数据。在进行写操作时比较简单,MCU先把CSN拉低,然后在MOSI线上输出写命令字节和数据字节即可。
3.2 数据收发过程
在nRF905正常工作前,必须由MCU根据需要写好配置寄存器。发送数据时,先通过MCU把nRF905置于待机模式(PWR_UP置为高、 TRX_CE置为低),然后通过SPI总线把发送地址和待发送的数据都写入相应的寄存器中,之后把nRF905置于发送模式(PWR_UP、TRX_CE 和TX_EN全部置高),配置成功后数据就会自动发送出去。若射频配置寄存器中的自动重发位(AUTO_RETRAN)设为有效,数据包就会被重复发出,直到MCU拉低TRX_CE退出发送模式为止。nRF905发送数据的流程图如图2所示。
评论