Вариант первый:
Сделайте один из сигналов CS (Chip Select).
Взводите его для одного контроллера, опускайте - для второго.
Взвели - передачу принимает первый. Опущен - второй.
В теории, CS сигналы могут коммутировать друг-друга или выбирать конкретного приемника.
Вариант второй:
Чисто программный. Использовать сигнал CD (Carier Detect), его поднимает передающая сторона, все остальные слушают посылку. Никто не может отправлять, пока поднят CD. В посылке первый байт - номер приемника. Чтобы не было коллизий, желательно определить длительность или максимальный размер передачи.
В этом верианте еще можно использовать дополнительную сигнальную линию INT (Interrupt). Ее поднимает, тот, кто хочет сделать срочную передачу, при поднятом CD.
Никто не поднимает CD, Пока не снят INT.
CD поднят, идет посылка
Кто-то поднял INT, Прошла предыдущая посылка, но никто не захватывает линию через CD.
Тот, кто поднял INT, ждет освобождения CD, сам поднимает CD, снимает INT, н7ачинает передачу.
Если линии INT и CD свободны, любой может поднять CD и начать передачу.
Литература: сети I2C, CAN, RS-485 + modbus, SPI, FrameRelay....