图3给出LPC2144与nRF24L0l的硬件接口设计。配置LPC2144的P0.2、P1.19作为GPIO端口分别与nRF24L0l的CE和CSN连接;配置LPC2144的P0.4、P0.5、P0.6作为SPIO端口分别与nRF24L0l的SCK、MISO、MOSI连接:配置LPC2144的P0.16作为EINT0端口与nRF24L0l的IRQ连接。
5 系统软件设计
发送端LPC214x完成初始化后,把nRF24L01配置成PTX工作模式。若从上位机接收到数据,则启动nRF24L01发送数据。若发送成功,则产生TX_DS中断;若重发超限,则产生MAX_RT中断;若发送成功,则继续发送,否则进行出错处理。接收端LPC214x完成初始化后,把nRF24L0l配置成PRX工作模式。当正确接收数据时,nRF24L0l产生接收中断标志,LPC214x从nRF24L01读取数据并向下位机发送。图4给出软件流程图。软件开发环境为ADSl.2。
5.1 nRF24L01的初始化
nRF24L01通过SPI接口和外部控制器件如MCU、ARM、DSP进行数据交换,其SPI协议是MSB在前,LSB在后。如果要读写多个字节,先读写低字节。如果外部控制器件没有SPI接口,可用普通I/O接口模拟。这里选用带SPI接口且可方便地与nRF24L0l连接的LPC21440表l给出nRF24L0l的命令表。
由表可见,通过SPI接口传入nRF24L01的第一个字节是命令字,nRF24L0l的各种命令字都只有一个字节,分为读寄存器、写寄存器、读数据接收缓冲区、写发送数据缓冲区等。在输入任意命令字的同时,MISO输出的都是STATUS寄存器的内容。nRF24L0l的数据传输模式有ShockBurst和Enhanced ShockBurst两种数据包。后者比前者多了一个确认数据传输的信号,保证数据传输的可靠性。该器件内部完成需要高速处理的RF协议,发送数据时只需将数据放入发送数据缓冲区,器件会自行产生前导字符和CRC数据,并将这些数据地址和地址信息、发送数据缓冲区的数据等组成一个数据包发送出去。图5给出两种模式的数据包格式。