Чтение сигналов ШИМ в STM32F407
Я делаю квадрокоптер, используя открытие STM32F407. Я наконец смог стабилизировать это. Сейчас я пытаюсь использовать RC-приемник, чтобы контролировать движения своего квадрокоптера. Есть ли способ прочитать сигнал ШИМ моих каналов приемника RC? Кроме того, мой RC-приемник поддерживает PPM и в соответствии с тем, что я понимаю, он получает пакет служебных циклов с сильным текстом, но все еще не знает, как его получить.
1 ответ
Решение
Вы можете использовать интерфейс SPI для кодирования сигнала PPM (или PWM) вашего RC-приемника.
Общий подход:
- Подключите сигнал PPM к контакту MISO и второму контроллеру (одновременно). Контакты MOSI, CLK и CS не нужны.
- Инициализируйте интерфейс SPI с соответствующими часами. С этой частотой сигнал будет смещаться в контроллере. Попробуйте использовать 4 кГц.
- В зависимости от состояния покоя сигнала активируйте триггер прерывания по нарастающему или падающему фронту на втором выводе. Это будет использоваться для запуска входящих кадров.
- Если происходит прерывание, отключите временный триггер и начните передачу spi, чтобы получить несколько байтов (исходящий входящий и не подключенный). В зависимости от длины кадра это должно быть 8 или 10 байт. Это будет ловить кадры до 20 мс.
- После того как вы получите все байты, снова включите триггер и повторите для следующего кадра.
Полученные данные должны содержать образец сигнала pwm/ppm. Вы также должны соответствовать частоте дискретизации и количеству байтов, которые должны быть получены вашим RC-приемником.