Последовательные интерфейсы
285
Команда “Поиск ПЗУ” может использоваться, если идентификаторы
подчиненных устройств неизвестны заранее. Это делает возможным
обнаружить идентификаторы всех подчиненных устройств, подключенных к
шине. Для этого, вначале передается команда “Пропуск ПЗУ”. Каждый
подчиненный размещает первый бит своего идентификатора на шине.
Ведущий считывает результат, как логическое И над всеми первыми битами
идентификаторов всех подчиненных
устройств. Затем подчиненные
размещают на шине двоичное дополнение к первому биту своего
идентификатора. Ведущий считывает состояние шины, которое есть
результат логического «И» над всеми дополнениями к первому биту
идентификатора всех подчиненных устройств. Если все устройства в первом
разряде ИК содержат 1, то ведущий считает 10b. Аналогично, если значения
1 разряда всех устройств равно
0, то ведущий примет 01b. В этих случаях,
бит может быть сохранен как значение первого бита всех адресов. После
этого ведущий снова выполняет размещение этого бита на шине, чем
сигнализирует подчиненным о необходимости дальнейшего продолжения
передачи разрядов ИК. Если на шине будут присутствовать устройства, как с
лог. 0, так и с лог. 1 в
первом бите идентификатора, то ведущий примет 00. В
этом случае, ведущий должен выбрать с какими адресами продолжать
работу, с лог. 0 или 1 в первом разряде. Выбор передается по шине, указывая
выбранным подчиненным о необходимости дальнейшей передачи ИК, а
остальные подчиненные переходят в режим ожидания.
Затем ведущий переходит к считыванию следующих бит и этот
процесс
повторяется до считывания всех 64 бит. В результате ведущий обнаруживает
полный 64-разрядный идентификатор. Для поиска других идентификаторов
необходимо снова инициировать команду «Поиск ПЗУ», но в этом случае
при возникновении несоответствий сделать другой выбор. Если
придерживаться данной последовательности, то в конечном счете можно
обнаружить все подчиненные устройства. Обратите внимание, что после
выполнения первого поиска все подчиненные, кроме одного, переходят в