Nrf24l01使用心得
使用
rf24l01也有一段时间了,期间老是出现各种问题,总结一下,其实就是引脚分配问题、电压提供问题以及最重要的程序问题。
1关于引脚分配,刚开始我老是在纠结这个IRQ引脚到底应不应该连接到MCU的外部中断引脚,后来经实践证明,是不用的,这当然也给我们PCB布线时提供了方便,引脚随便分配,只要模拟出的SPI通信协议正确就行。
2电压的提供,
rf24L01需要的是33V电压,这个可以用AMS111733来转换然后提供,说明书上说串接一个2K左右的电阻,我试过,这种方法不怎么好。
3最重要的程序问题,其实对于不研究无线通信的人来说,知道它怎么用就行了,因为上面的寄存器实在是太多了,记不住。这些程序网上也有很多(看多了就会发现都是一样的,只不过是使用的方法不一样罢了,主题还是一样),先上程序,再说其中应该注意的点。我是用模块化编程的方法实现的,MCU使用的是STC89C52RC程序如下:
C文件:Nrf24l01ci
cludereg52hi
cludei
tri
sh
typedefu
sig
edcharuchar
typedefu
sig
edi
tui
t
NRF24L01
端口定义
sbitMISOP23
sbitMOSIP21
sbitSCKP24
sbitCE
P25
sbitCSNP20
sbitIRQP22
NRF24L01
defi
eTX_ADR_WIDTH55ui
tsTXaddresswidth
defi
eRX_ADR_WIDTH55ui
tsRXaddresswidth
defi
eTX_PLOAD_WIDTH320ui
tsTXpayload
defi
eRX_PLOAD_WIDTH320ui
tsTXpayload
ucharco
stTX_ADDRESSTX_ADR_WIDTH0x340x430x100x100x01本地地址
ucharco
stRX_ADDRESSRX_ADR_WIDTH0x340x430x100x100x01接收地址
NRF24L01寄存器指令
defi
eREAD_REG
0x00读寄存器指令
defi
eWRITE_REG
0x20写寄存器指令
defi
eRD_RX_PLOAD0x61读取接收数据指令
defi
eWR_TX_PLOAD
0xA0写待发数据指令
fdefi
eFLUSH_TX
0xE1冲洗发送FIFO指令
defi
eFLUSH_RX
0xE2
冲洗接收FIFO指令
defi
eREUSE_TX_PL0xE3
定义重复装载数据指令
defi
eNOP
0xFF
保留
SPI
RF24L01寄存器地址
defi
eCONFIG
0x00配置收发状态,CRC校验模式以及收发状态响应方式
defi
eEN_AA
0x01自动应答功能设置
defi
eEN_RXADDR
0x02可用信道设置
defi
eSETUP_AW
0x03收发地址宽度设置
defi
eSETUP_RETR
0x04自动重发功能设置
defi
eRF_CH
0x05工作频率设置
defi
eRF_SETUP
0x06发射速率、功耗功能设置
defi
eSTATUS
0x07r