我正在使用连接到DW1000模块的nRF52832芯片。问题是从DW1000请求数据时,缺少第一个字节。该芯片应该发送0xDECA0130,但我收到0xCA0130FF。当我使接收缓冲区变大时,丢失的0xDE出现(传输以最低字节开始)。我的问题是,这是怎样以及为什么会发生这种情况。
SPI配置是根据DW1000的数据表,使用nRF SPI驱动程序完成的。它包括
在开始通信之前,DW1000通过将其复位引脚拉低并在释放之前保持低电平足够长的时间来复位。重置后,主机等待一段时间让模块启动。之后,第一件事是将所述值读取为32位寄存器值。
nRF设置包括
nrf_drv_spi_transfer
和4字节的缓冲区长度我已经尝试过以下方法,但没有解决问题:
用(*)表示的步骤我意识到他们不应该解决问题。
不幸的是它是一个嵌入式设备,因此我无法访问CLK和MISO引脚以连接示波器。
我很感激有关此事的任何意见。
答案 0 :(得分:0)
显然,问题在于SPI从设备响应特定请求的方式。由于SPI是同步协议,因此从器件必须从第一个时钟周期开始传输数据。由于在至少传输第一个字节之前它不知道要发送什么(如果以这种方式配置),它必须发送一些内容,因此主机应该忽略(至少)传输的第一个字符。如果已知读取请求的长度,则传输必须比请求的数据本身长一个字节。