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

问题描述 投票:0回答:1

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

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

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

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

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

enter image description hereenter image description hereNRF24正在尝试在此处进行编程,此类型为from sparkfun

stm32 spi
1个回答
0
投票

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

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.