Здравствуйте уважаемые форумчане! Вопрос к тем, кто работал с NRF24L01. Проблема следующего характера. Отсылаю команду чтения данных из регистра, к примеру:
Код
GPIOA->BSRR = GPIO_BSRR_BR3; // SS_low
ReadWriteByte(0x01); // команда "чтение данных из регистра EN_AA"
ReadWriteByte(0x00); // процесс чтения
GPIOA->BSRR = GPIO_BSRR_BS3; // SS_high
Данные приходят верные (дефолтные, совпадающие с даташитом).
Проверял так со всеми регистрами. Всё работает. Далее пытаюсь записать данные в регистр и считать их же:
Код
GPIOA->BSRR = GPIO_BSRR_BR3; // SS_low
ReadWriteByte(0x20); // команда "запись данных в регистр CONFIG"
ReadWriteByte(0x02); // данные
GPIOA->BSRR = GPIO_BSRR_BS3; // SS_high
__delay(0x00333); // задержка ~ 50 мкс
GPIOA->BSRR = GPIO_BSRR_BR3; // SS_low
ReadWriteByte(0x00); // команда "чтение данных из регистра CONFIG"
ReadWriteByte(0xFF); процесс чтения
GPIOA->BSRR = GPIO_BSRR_BS3; // SS_high
На осциллограмме канала MOSI всё проходит чётко. На MISO же первым пакетом приходят данные из регистра STATUS, а затем нули.
SPI работает в 8-ом режиме CPOL=0, CPHA=1, частота ~ 300000 кГц (для удобства отладки). Сам процесс передачи проверял, SS работает без перебоев и поднимается только по окончании передачи пакета, т.е. проблем с обрывами быть не должно.
В чём может быть загвоздка?