В общем не так давно пришлось принимать данные по 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 записывать и считывать, причем может быть только либо записывать либо считывать, но это все настраивается(в принципе и размер тоже) и в процессе работы уже не меняется.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения