Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

stm32f030 + nRF24L01+

Ср июл 27, 2022 13:04:49

Подскажите, что может быть не так.
Пытаюсь наладить связь МК с радиомодулем. Пока без приёма передачи по радиоканалу, только инициализация.
Вот настройки SPI:
Код:
   
SPI1->CR1|=SPI_CR1_SSM|SPI_CR1_SSI;
SPI1->CR1|=SPI_CR1_MSTR;
SPI1->CR1|=SPI_CR1_BR_1; // частота МК: 32 МГц, частота SPI: 32/8 = 4 МГц
SPI1->CR1|=SPI_CR1_SPE;

Записываю в TX_ADDR 5 байт (в моём случае "12345"), читаю их из nRF - получаю "52002"
Смотрю анализатором - получаю следующую картину.
Безымянный.png
(30.3 KiB) Скачиваний: 47

Смущают не 8ми-, а 16ти-битные посылки. Так и должно быть? в регистре CR2 биты DS настроены на 8-бит.
На все посылаемые команды в nRF тот отвечает 0x0E и нули.
Перед работой с регистрами nRF ноги CSN и CE зажаю на землю, потом возвращаю.
Ноги настроены на выход, пуш-пул, высокая скорость, без подтяжки (ни внутри, ни снаружи).

Re: stm32f030 + nRF24L01+

Ср июл 27, 2022 13:12:05

Смущают не 8ми-, а 16ти-битные посылки. Так и должно быть?

В твоем случае нужно делать так, при обычной записи в DR получишь сразу две 8-ми битных посылки.
Код:
*(volatile uint8_t*)&SPIx->DR = val;

Re: stm32f030 + nRF24L01+

Ср июл 27, 2022 14:28:38

Спасибо!
добавил макрос #define SPI1_DR_8bit *(uint8_t *)&SPI1->DR
и оперировал уже им
правда ещё пошаманить с TXE BSY пришлось, но вроде заработало!

Re: stm32f030 + nRF24L01+

Ср июл 27, 2022 14:44:01

Volatile верни, он там не просто так.

Re: stm32f030 + nRF24L01+

Ср июл 27, 2022 14:54:48

да, конечно, просто я не копипастил, а руками написал.
странно, что если это специально не искать, то ни в одном из примеров данная особенность не упоминается

Re: stm32f030 + nRF24L01+

Ср июл 27, 2022 15:41:26

Она упоминается достаточно подробно в RM.
Ответить