Всё, эксперимент завершен.
Связь по одному UART с 5 разными устройствами, которые опрашиваются по очереди осуществил, испоьзуя один UART, подключенный к двум GPIO (этого же МК), на который дублировал сигналы от других GPIO (этого же МК), подключенных к UART подключаемых устройств.
Схематично выглядит так:
Безымянные устройства подключаются своими UARTами к пинам ведущего камушка:
устройство_a_Тх к a_in; устройство_a_Rх к a_out;
устройство_b_Тх к b_in; устройство_b_Rх к b_out;
устройство_c_Тх к c_in; устройство_c_Rх к c_out;
устройство_d_Тх к d_in; устройство_d_Rх кd_out;
устройство_e_Тх к e_in; устройство_e_Rх к e_out.
В ведущем камушке проводками:
comm_in подключен к USART3_TX;
comm_out подключен к USART3_RX.
Если хотим пообщаться с устройством b, то в бесконечном цикле, то:
if(HAL_GPIO_ReadPin(b_in_GPIO_Port, b_in_Pin) == GPIO_PIN_SET) HAL_GPIO_WritePin(comm_out_GPIO_Port, comm_out_Pin, GPIO_PIN_SET);
else HAL_GPIO_WritePin(comm_out_GPIO_Port, comm_out_Pin, GPIO_PIN_RESET);
if(HAL_GPIO_ReadPin(comm_in_GPIO_Port, comm_in_Pin) == GPIO_PIN_SET) HAL_GPIO_WritePin(b_out_GPIO_Port, b_out_Pin, GPIO_PIN_SET);
else HAL_GPIO_WritePin(b_out_GPIO_Port, b_out_Pin, GPIO_PIN_RESET);
UART3 используем с DMA и, естественно, с прерываниями.
При тактировании камушка 8МГц, скорость передачи не более 9600к.
При большей скорости время обработки прерывания больше, чем передача 1 бита, и получаются множественные ошибки.
А CAN все-таки иногда буду использовать, понравился он. Спасибо.