Собственно задача соорудить SSI slave Transmit only с асинхронным обновлением в реальном времени.
Контроллер сейчас STM32L433CC.
Дано один вход SCLK до 2 МГц, один выход SOUT(он жеMISO). Формат посылки 18, 20,22 бит.
Обновление через ~15мкс после последнего такта SCLK, либо каждые 7,5 мкс.
Стандартный интерфейс для быстрых датчиков.
Как делал
1: Без DMA и прерываний, по прерываниям от TIM_ETR на SCLK. Режим без NSS, с NSS по первому SCLK и сбросом.
Проблема нельзя узнать, записались ли данные в SPI->DR, соответственно первые байты могли быть не обновлены, а следующие обновлялись.
2: DMA с NSS по таймеру. Проблема: DMA не обновляет SPI в реальном времени, а только после отправки прошлой посылки, а нужно обновлять каждые 7,5 мкс вне зависимости есть ли запросы.
Если пробовать сбрасывать SPI и обновлять DMA, случаются смещения на 1 такт, а потому как реакция ядра на запрос ~ 150-200 нс, + обновление ~ 150-200нс. В итоге облом.
Какие есть решения, может кто сталкивался?