Я использую чип nRF52832, подключенный к модулю DW1000. Проблема в том, что при запросе данных от DW1000 отсутствует первый байт. Чип должен отправить 0xDECA0130, но вместо этого я получаю 0xCA0130FF. Когда я увеличиваю буфер приема, появляется отсутствующий 0xDE (передача начинается с младшего байта). У меня вопрос, как и почему это происходит.
Конфигурация
Конфигурация SPI была выполнена в соответствии с таблицей данных DW1000 с использованием драйвера nRF SPI. Это включает в себя
- Частота SPI по умолчанию установлена на 1 МГц
- Контакт выбора микросхемы SPI настроен как активный НИЗКИЙ
- с использованием SPI Mode 0
- MSB первая передача
Перед началом обмена данными DW1000 сбрасывается путем подтягивания его вывода сброса к низкому уровню и удерживается на низком уровне в течение достаточно длительного времени, прежде чем его отпустить. После сброса мастер ждет некоторое время, чтобы модуль загрузился. После этого первым делом считывается указанное значение как 32-битное значение регистра.
Настройки nRF
Настройки nRF включают
- SPI и SPI0 включены
- SPI0 easyDMA отключен
- чтение значения включает
nrf_drv_spi_transfer
с указанной конфигурацией и длиной буфера 4 байта
Предпринятые шаги
Я уже пробовал следующее, но без решения проблемы:
- Изменение частоты SPI
- Изменение режима SPI *
- Увеличенное время ожидания после сброса
- Увеличенное время ожидания между передачами
- Изменение конфигурации MISO Pull-Up *
- Ручной выбор чипа (включая конфигурацию Pull-Up *)
Шаги, обозначенные (*), я знаю, что они не должны решить проблему.
К сожалению, это встроенное устройство, поэтому я не могу получить доступ к контактам CLK и MISO для подключения к осциллографу.
Я ценю любой вклад по этому поводу.