CH32V003. Для изоляции хватит двух оптронов (один - только для
синхронизации, для запросов). Передача, приём - UART. Соединяешь
группу выходов оптронов в направлении от АЦП параллельно.
Соединяешь группу входов оптронов для запросов к АЦП параллельно. И
дёргаешь индивидуальные оптроны по-очереди посылкой адресного
запроса, а они отзываются в общий канал UART. Я так делал - сначала короткая посылка синхронизации, все каналы делают выборку. Потом по-очереди, пока АЦП делают очередную выборку опрашиваю их и забираю значения предыдущей выборки. Так и выборка синхронна, и не требуется много каналов контроллера для адресации отдельных АЦП.
Есть вариант вообще по одному оптрону на каждый канал делать - настраиваешь максимально возможную скорость UART в направлении от МК с АЦП в сторону общей шины. И каждый канал передаёт со своим периодом, без синхронизации. Будут коллизии, но за счёт избыточной частоты посылок, в разумный интервал времени получишь значения всех каналов. Конечно, если для системы приемлем джиттер аналоговых данных.