Понадобилось мне запустить ModbusRTU на ранее готовом устройстве, МК STM32F103, через UART2, порты А2 и А3.
Прошу индейку как лучше это сделать. Так как устройство физически уже есть и заточено под некоторые задачи, то внутренние аппаратные ресурсы очень ограничены.
Таймер 2 однозначно занят, запускается не всегда и от внешнего события. Другие таймеры не хотелось бы выделять под это дело, но рассмотреть можно.
Фиксировать и анализировать время приема каждого байта не вариант, так как уверен что не хватит ресурсов, чтобы укладываться вовремя. Сейчас скорость 9600 и понижать не хочется.
Сейчас я сделал через событие IDLE UART и DMA. В принципе работает. Но я нарушаю стандарт RTU. Вместо интервалов <1.5 и >3.5 между байтами и пакетами соответственно, у меня получается <1 и >1.
Если нечего не придумается, то я так и оставлю. Но все же хотелось бы соответствовать стандарту.
Спасибо.
З.Ы. Modbus ASCII не хочу.



