Stm32f0 SPI Slave

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Stm32f0 SPI Slave

Сообщение pokk »

В общем не так давно пришлось принимать данные по 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

Как нибудь по другому можно настроить ?
Реклама
Аватара пользователя
AlanDrakes
Прорезались зубы
Сообщения: 236
Зарегистрирован: Пн июл 04, 2016 16:51:22
Откуда: Россия, Омск

Re: Stm32f0 SPI Slave

Сообщение AlanDrakes »

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

Как-то так. Самое интересное, что на slave'е вообще не потребовалось ничего делать, а на мастере - только начальный тест.
Реклама
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: Stm32f0 SPI Slave

Сообщение pokk »

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

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


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

Вернуться в «ARM»