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

Stm32f0 SPI Slave

Вт май 07, 2019 02:43:17

В общем не так давно пришлось принимать данные по SPI на stm32f0 оказалось это не так тривиально как ожидал. Теперь задача стоит такая же только мастер(stm32f4) и slave(stm32f0) уже мой.
В прошлый раз реализовал так:
1) Ожидаем прерывание 1->0 по CS(настраиваем SPI, так как только через reset spi очищаться буффер в stm32f0)
1.1) Включаем прерывание по CS из 0->1 (выключаем SPI)
2) Принимаем шапку через прерывания(вытаскиваем размер данных)
3) Настраиваем DMA по количеству данных
4) после завершения передачи spi и dma выключиться сам см пункт 1.1

Как нибудь по другому можно настроить ?

Re: Stm32f0 SPI Slave

Вт май 07, 2019 18:16:26

Slave: Настраиваем SPI + DMA (режим кольцевого буфера)
Master: При первом обращении к ведомому принимаем побайтно до синхронизации (заголовок всегда содержит два статичных байта), после запрашиваем посредством DMA контроллера, либо аналогично, побайтно, но уже изначально в синхронном состоянии - проверка на заголовок проходит успешно с первых байт.

Как-то так. Самое интересное, что на slave'е вообще не потребовалось ничего делать, а на мастере - только начальный тест.

Re: Stm32f0 SPI Slave

Ср май 08, 2019 06:01:16

"до синхронизации" что за синхронизация ?
Это вы расписали передача из slave в мастер?

Т.е с начало установили размер посылки, а потом автоматически через кольцевой буфер будет работать?


Мне надо в slave записывать и считывать, причем может быть только либо записывать либо считывать, но это все настраивается(в принципе и размер тоже) и в процессе работы уже не меняется.
Ответить