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

无法初始化NRF24L01+;使用SPI和STM32F303的寄存器,stm32,spi,Stm32,Spi,我试图使用SPI初始化NRF24L01+寄存器,但它们总是返回0x00 根据第51页的表20,所有写命令都将有一个b001x xxxx模式,我理解为有一个0x2x模式 在下面的快照中,我发送了寄存器值,例如,寄存器0x00将作为0x20发送,表示对该寄存器的写入命令,然后我发送要写入该寄存器的值 正如您在MISO行上看到的,即使在我尝试写入0x08时,该值也是0x00,根据数据表第57页,该值应为默认值 我仍然不知道为什么它返回0x00,即使我稍后独立地尝试读取该寄存器的内容而不写入它。我仍然得

我试图使用SPI初始化NRF24L01+寄存器,但它们总是返回0x00

根据第51页的表20,所有写命令都将有一个b001x xxxx模式,我理解为有一个0x2x模式

在下面的快照中,我发送了寄存器值,例如,寄存器0x00将作为0x20发送,表示对该寄存器的写入命令,然后我发送要写入该寄存器的值

正如您在MISO行上看到的,即使在我尝试写入0x08时,该值也是0x00,根据数据表第57页,该值应为默认值

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


这里试图编程的NRF24 am是这种类型的

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


希望这能有所帮助。

尽管我现在开始使用holybro遥测无线电v3,但这确实有所帮助。但总有一天我会回到自然资源基金会,努力从中得到最好的回报。我仍然认为是我没有完全理解,如果你回到nRF,让我知道;我已经为这些设备编写了几个例程(init、send、receive),可以与您共享。