В общем не так давно пришлось принимать данные по 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
Slave: Настраиваем SPI + DMA (режим кольцевого буфера) Master: При первом обращении к ведомому принимаем побайтно до синхронизации (заголовок всегда содержит два статичных байта), после запрашиваем посредством DMA контроллера, либо аналогично, побайтно, но уже изначально в синхронном состоянии - проверка на заголовок проходит успешно с первых байт.
Как-то так. Самое интересное, что на slave'е вообще не потребовалось ничего делать, а на мастере - только начальный тест.
"до синхронизации" что за синхронизация ? Это вы расписали передача из slave в мастер?
Т.е с начало установили размер посылки, а потом автоматически через кольцевой буфер будет работать?
Мне надо в slave записывать и считывать, причем может быть только либо записывать либо считывать, но это все настраивается(в принципе и размер тоже) и в процессе работы уже не меняется.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения