我正在使用连接到 DW1000 模块的 nRF52832 芯片。问题是从 DW1000 请求数据时,缺少第一个字节。该芯片应该发送 0xDECA0130,但我收到的是 0xCA0130FF。当我使接收缓冲区变大时,会出现丢失的 0xDE(传输从最低字节开始)。我的问题是,这是如何以及为什么会发生的。
配置
SPI 配置是根据 DW1000 的数据表进行的,使用 nRF SPI 驱动程序。这包括
- SPI 默认频率设置为 1MHz
- SPI 片选引脚配置为低电平有效
- 使用 SPI 模式 0
- MSB 优先传输
在开始通信之前,DW1000 通过将其复位引脚拉低来复位,并在释放之前保持低电平足够长的时间。复位后,主机等待一段时间让模块启动。之后,第一件事是将所述值作为 32 位寄存器值读取。
nRF 设置
nRF 设置包括
- 启用 SPI 和 SPI0
- SPI0 easyDMA 禁用
- 读取值包括
nrf_drv_spi_transfer
所述配置和 4 字节的缓冲区长度
采取的步骤
我已经尝试了以下事情,但没有解决任何问题:
- 更改 SPI 频率
- 更改 SPI 模式*
- 重置后等待时间增加
- 传输之间的等待时间增加
- 更改 MISO 上拉配置*
- 手动片选(包括上拉配置*)
标有 (*) 的步骤我知道它们不应该解决问题。
不幸的是,它是一个嵌入式设备,所以我无法访问 CLK 和 MISO 引脚来连接示波器。
我感谢您对此事的任何意见。