常见的无线收发模块, 工作在2.4GHz频段, 适合近距离遥控和数据传输.
nRF24L01是一个能兼顾距离和数据速率的无线模块, 在空旷环境下,2M速率15米, 1M速率30米, 250K速率能达到50米. 和蓝牙相比距离更远, 和ESP8266这类以太网WiFi相比环境适应力更强.
元件面朝自己,天线朝左(晶振在上), 右侧PIN脚的定义为:
从机数据输出, 有三种状态选项 |
可屏蔽中断脚, 低电平使能 |
正常状态为高电位, 只有当STATUS寄存器的以下三个位被置位(拉高)时会拉低电压输出, 要清除中断, 需要相应地往这三个位写入1
.
可以通过寄存器地址0x00
分别对这三种中断进行屏蔽
经过各种环境的测试, 总结一下出现 1E 错误的原因
printf("%d, ...", u8_variable)
这样的语句, 使用%x
没问题, 但是如果使用%d
就会出现, 具体原因未知.
淘宝上有配套出售的一种USB转接卡, 用于将NRF24L01通过USB到电脑, 此时NRF24L01相对于电脑成为一个串口设备, 通过AT
命令进行通信.
abc
(ASCII码, 3 bytes), 实际传输3abc
(第0个字节就为3),
接收端根据第0字节中的数来判断收到的数据包长度, 再通过串口TX输出给电脑的就是abc
.
单次读写SPI(所有交互的基础操作)
如果需要使用中断读取, 读方法要改成非阻塞的方式, 就是上面的RX方法去掉了while IRQ的等待.
一个非常好用的配置打印函数
因此连接方式与STM32F103完全相同
百度文库上一个比较全的资料(51 MCU的)
1,电源必须在它的电压符合范围之内,不能接5V,会烧掉,某宝有1117稳压模块比较好。
2,供电电源波纹必须在80mv以内,就是波动不能超过0.08V,某宝有1117稳压模块,并联一个100UF的点解电容和105的瓷片电容。
3,NRF的IRQ脚会坏,表现为发送端正常发送,接受端无法接受到信号,接收端IRQ电平恒高。
4,使用洞洞板时,切记杜邦线会影响NRF之间的通信,如果想要最佳的通信,用铜柱将模块放到高的位置,并且铜柱接地,用金属网包裹整个电路(除NRF外)并接地。
5,旁边不能有强干扰,例如手钻,电钻,切割机之类的。
这篇对24L01的工作机制有描述
内容来源于网络如有侵权请私信删除