无法使用SPI和STM32F303初始化NRF24L01 +寄存器

时间:2019-10-16 18:45:00

标签: stm32 spi

我正在尝试使用SPI初始化NRF24L01 +寄存器,但它们始终返回0x00。

根据第51页上的表datasheet,表20中,所有写命令都将具有 b001x xxxx 模式,我理解为具有 0x2x 图案。

在下面的快照中,我发送寄存器值,例如,寄存器0x00将以0x20的形式发送,指示对该寄存器执行写命令,然后我发送要写入该寄存器的值。

正如您在MISO行上看到的那样,即使试图写入0x08,该值也应为0x00,根据数据手册第57页,该值应为默认值。

我仍然不知道为什么它返回0x00,即使我以后独立尝试读取该寄存器的内容而不写入它时也是如此。我仍然得到0x00。这同样适用于所有其他试图重新初始化的寄存器。 任何在其他地方经历过这种行为的人,或者是我出了什么问题?

enter image description here enter image description here NRF24正在尝试在此处进行编程的是这种类型from sparkfun

1 个答案:

答案 0 :(得分:2)

您很近。数据表将写入寄存器显示为001A AAAA,将读取寄存器显示为000A AAAA,其中5 A表示要写入的寄存器。规范指出,在发送命令时(读,写,读有效载荷,写有效载荷,刷新,激活等),设备将返回状态寄存器。在您的数据中,设备以0x0E响应,这是正确的。解码表示没有错误,没有接收到或等待发送的数据。如果要查看发送的命令是否被接受,则需要先写入数据,然后读取数据。例如,假设我们要写入配置寄存器以使设备能够作为接收器,并启用Rx中断的2字节CRC。
首先,您将发送0b00100000(0x20),0b00111111(0x3F)。设备将响应0b00001110(0x0e),0b00000000(0x00)。这就是您所看到的。如果要验证配置寄存器,则需要先发送0b00000000(0x00),这是读取配置寄存器的命令,然后发送0b00000000(0x00),这是一个空字节,用于输出数据。设备将响应0x0e(状态为0),然后响应0x3F(假设您按照上面的配置进行响应)。 请注意,除了读取和写入寄存器外,还有更多的命令,还有一些特定的命令可以填充和读取管道数据。

希望这会有所帮助。