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

    @kellan1337
    Кочерга, добрый вечер, я посмотрел вашу схему и должен сказать, что ваш подход с генерацией точного числа импульсов таймером для обхода отсутствия аппаратного триггера SPI - это реально остроумно. Вы мыслите в правильном направлении, я думаю.
    Мне кажется на остальных таймерах можно эмулировать поведение. Попробуйте настроить One-pulse mode, но не используйте аппаратный счетчик повторения, а подсчет нужного количества импульсов перенести в программную часть.
    Попробуйте эту схему:
    Переведите таймер в One-Pulse Mode, включите прерывание по событию UEV, в обработчике прерывания HAL_TIM_PeriodElapsedCallback заведите статическую переменную-счетчик. При каждом вызове прерывания -
    Увеличивайте значение счетчика на 1. Если значение достигло 24, сбрасывайте счетчик на 0, и вручную снова запускайте таймер, взводя бит CEN. Импульсная последовательность на выходе прекратится.
    Когда таймер в STM32 получает команду запуститься по DRDY, он синхронизирует этот сигнал со своей внутренней тактовой частотой. Эта задержка плюс задержка на выходном компараторе может составлять десятки наносекунд. В результате фронт первого SCK от таймера может приходить слишком рано, когда АЦП еще не установил первый бит данных, или слишком поздно, и STM32 в режиме SPI Slave не успевает захватить данные до прихода следующего фронта. Удачи в вашем деле! Пишите, отвечу как время будет.
    Написано