Задать вопрос

Как сгенерировать пачки импульсов для SPI stm32?

Работаю с STM32, начинающий в сфере электроники. Есть задача подключить 6 АЦП ADS127l01 к STM32F767(или аналогу).
АЦП сигнализирует о готовности данных по сигналу DRDY, и есть несколько особенностей:
1) STM32 не имеет SPI с аппаратным триггером
2) АЦП 24-битный
3) Целевые скорости выдачи данных 256 кГц и выше
Путем проб и ошибок вышел на следующую схему:
1) SPI с DMA висит в режиме SLAVE постоянно
2)DRDY подключен к таймеру, таймер по сигналу генерирует 24 импульса на выходе, подключённому к SCK STM32 и АЦП, данные читаются и записываются в буфер
Схема рабочая, проверено, но:
1) таймеров которые могут сами считать 24 импульса всего 2, остальные не имеют параметра repetition counter
2)чтение данных работает только на частотах до 128 кГц

Подозреваю , что дело в тонкостях настройки pulse, поэтому приобрел внешнюю линию задержки DS1023-25+. Вопрос к знактокам, как можно обойти описанные выше проблемы, реализовывал ли кто-то подобные схемы и в правильном лиия вообще направлении двигаюсь?
  • Вопрос задан
  • 594 просмотра
Подписаться 7 Сложный 16 комментариев
Помогут разобраться в теме Все курсы
  • Skillbox
    Основы электроники
    4 месяца
    Далее
  • АПОК
    Промышленная электроника
    2 месяца
    Далее
  • ЭКОДПО
    Энергетика и электроника - переподготовка
    2 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
@VT100
Embedded hardware & software.
  • А почему не хотите использовать Daisy-Chain (п. 9.1.2.2)? 2 SPI на 2 цепочки по 3 АЦП могут дать до 347 квыборок (SCK = 25 MHz) без учёта накладных расходов.
  • Если DMA умеет захватывать с GPIO, то можно попробовать тактировать интерфейс и слать команды по SPI, а выходы АЦП брать параллельно.

6 штук... контроль электроэнергии что ли? Куда там 256+ квыборок - то? КМК, достаточно до 50-100 гармоники захватить (25-50 кГц с учётом 10 кратного antialiasing).
Ответ написан
@vovatatarinov
Вы пробовали просто триггерить прерывание по EXTI? Как бы использовать такую логику: получаем прерывание по фронту на GPIO, а в прерывании читаем SPI, снова пинаем АЦП.
UPD: А! Их целых 6 штук! У F767 нет аппаратного триггера? Странно. В Reference manual можно почитать про бит FRF в регистре SPIx_CR2. Там вроде можно переключаться между форматами фрейма. Тогда по идее можно будет просто зайдействовать все 6 аппаратных SPI без каких либо костылей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы