Когда я увидел "код", чтобы на FX3U элементарно что-то
"нестандартное" отправить по модбасу, подохренел малость. А уж
чтобы CAN включить и анализировать принятые пакеты, так совсем
извращение. А на С это делается на раз-два! В принципе, в моей прошивке этих "ПЛК" уже "из коробки" многое нужное есть, через RS-232 можно настроить параметры связи и всякие идентификаторы раздать. А потом спокойно подключаешь друг к другу два "ПЛК" по CAN или 485, и у тебя получается "дистанционный повторитель": какой концевик сработал на одном, такая релюха на другом щелкнет, и наоборот. Можно и с АЦП/ЦАП такую же штуку сделать, просто нам нафиг ЦАП не нужен, поэтому я и не заморачивался с ним.
https://github.com/eddyem/stm32samples/tree/master/F1%3AF103/FX3U