Мне нужно создать виртуальный порт uart на микроконтроллере stm32. Пины даны и могут быть изменены на входные каналы таймера. Принимаемый сигнал будет модулироваться по току и напряжению, и мне нужно обнаружить и то, и другое. Эти два контакта нельзя назначить uart. Есть ли у кого-нибудь учебник или что-то в этом роде, которое может привести меня в правильном направлении? Я только начал программировать микроконтроллеры и все еще борюсь со всеми таймерами, прерываниями и деталями.
Создание виртуального uart на микроконтроллере stm32
comment
Если вы только начали программировать микроконтроллеры, создание виртуального битового UART - не лучший проект, так как это довольно сложная задача. Начните с написания кода, который вместо этого использует доступное оборудование UART. Кроме того, вы уверены, что это на самом деле не аппаратная задача? Например, как преобразовать модулированный током сигнал в уровни TTL с модуляцией напряжения?
- person Lundin   schedule 29.03.2017
comment
При этом этот вопрос слишком широк для SO. Также обратите внимание, что вопросы о том, где найти учебные пособия или другие внешние ресурсы, здесь не по теме.
- person Lundin   schedule 29.03.2017
comment
Вообще не понимаю, как будут модулироваться напряжение и ток. Каким должен быть входной сигнал UART?
- person tilz0R   schedule 29.03.2017
comment
Ваш вопрос непонятен. Пожалуйста, подробно опишите этот модулированный сигнал и какой у вас контроллер STM32 (полный номер детали).
- person Bence Kaulics   schedule 29.03.2017
Ответы (1)
Если мы говорим о скорости передачи для малых (9600), то вы можете добиться этого с помощью таймера и EXTI. На EXTI установите контакт на передний и задний фронт и между каждым IRQ проверьте значение таймера.
Если значение больше, чем время условия запуска и остановки, вы потерпели неудачу, иначе вам нужно проверить время, потраченное на EXTi, и вычислить, получили ли вы 10101010 или 11001100 или любую другую комбинацию.
Для режима TX используйте таймер для точных прерываний в битовом срезе для выходных данных UART и создайте конечный автомат для побитового вывода данных.
Другой вариант - использовать SPI как виртуальный UART.
person
tilz0R
schedule
29.03.2017
Существует также примечание по применению AN4457 от ST для эмулируемого UART, в котором используется рассмотренный подход.
- person veeman; 05.04.2017
Верный. Вот почему я упомянул об этом.
- person tilz0R; 05.04.2017