Интерфейсы АСОИУ. Курс лекций. Писарев А.П. - 49 стр.

UptoLike

Составители: 

После передачи бита подтверждения ведомое устройство может задержать следующую
посылку, удерживая линию SCL на низком уровне. Ведомое устройство в режимах F/S
может замедлить передачу по шине и на уровне приема каждого бита, удерживая SCL на
низком уровне после его спада, сформированного передатчиком. Поэтому ведущее
устройство должно генерировать сигнал SCL, анализируя состояние этой линии: сняв
этот
сигнал, новый импульс (открытие ключа передатчика) оно имеет право вводить, лишь
убедившись, что сигнал SCL вернулся в пассивное состояние (высокий уровень). В
противном случае синхронизация будет потеряна. Сигнал SCL может быть растянут и
другим устройством, пытающимся захватить шину в это же время. Тактовый сигнал SCL не
обязательно будет равномерным: время его нахождения на
низком уровне будет
определяться максимальным временем, в котором его захочет удержать самое медленное из
устройств, участвующих в данном обмене (даже и конфликтующих).
Коллизия (конфликт) на шине может возникнуть, когда два (или более) устройства,
убедившись в покое шины, одновременно (или почти одновременно) инициируют обмен
данными. Все они управляют линиями SCL и SDA и
наблюдают за ними. Если устройство,
передающее единицу (высокий уровень), в данном такте на линии SDA видит ноль (низкий
уровень), оно должно признать свой проигрыш в конфликте и освободить линии SCL и SDA.
Выигравшее устройство даже и не заметит проигравших конкурентов и продолжит работу.
Искажения информации, передаваемой выигравшим устройством, не происходит (в отличие
от коллизий
, например, в сетях Ethernet). Если ведущее устройство, проигравшее в
конфликте, имеет и функции ведомого устройства, по признанию проигрыша оно должно
перейти в режим ведомого, поскольку конфликт мог быть вызван попыткой обращения к
нему победившего ведущего устройства.
Бит подтверждения ACK, вводящийся в конце каждого байта устройством-приемни-
ком, выполняет несколько функций. Когда передатчиком
является ведущее устройство,
приемник (ведомый) должен вводить нулевой бит ACK, свидетельствующий о нормальном
получении очередного байта. Единичный бит ACK (нет подтверждения) в ответ на посылку
адреса свидетельствует об отсутствии адресованного ведомого устройства на шине или его
занятости внутренними процессами. Не получив бита подтверждения, ведущее устройство
должно сформировать условие Stop, чтобы освободить шину.
Когда ведущее устройство
является приемником, оно должно формировать нулевой бит ACK после каждого принятого
байта, кроме последнего. Единичный бит ACK в этом случае является указанием ведомому
устройству на окончание передачионо теперь должно освободить линии SDA и SCL,
чтобы ведущее устройство смогло сформировать условие Р или Sr.
На вышеописанной физической основе строится протокол обмена данными по
I
2
C.
Каждое ведомое устройство имеет свой адрес, уникальный на шине. В начале любой
После передачи бита подтверждения ведомое устройство может задержать следующую
посылку, удерживая линию SCL на низком уровне. Ведомое устройство в режимах F/S
может замедлить передачу по шине и на уровне приема каждого бита, удерживая SCL на
низком уровне после его спада, сформированного передатчиком. Поэтому ведущее
устройство должно генерировать сигнал SCL, анализируя состояние этой линии: сняв этот
сигнал, новый импульс (открытие ключа передатчика) оно имеет право вводить, лишь
убедившись, что сигнал SCL вернулся в пассивное состояние (высокий уровень). В
противном случае синхронизация будет потеряна. Сигнал SCL может быть растянут и
другим устройством, пытающимся захватить шину в это же время. Тактовый сигнал SCL не
обязательно будет равномерным: время его нахождения на низком уровне будет
определяться максимальным временем, в котором его захочет удержать самое медленное из
устройств, участвующих в данном обмене (даже и конфликтующих).
      Коллизия (конфликт) на шине может возникнуть, когда два (или более) устройства,
убедившись в покое шины, одновременно (или почти одновременно) инициируют обмен
данными. Все они управляют линиями SCL и SDA и наблюдают за ними. Если устройство,
передающее единицу (высокий уровень), в данном такте на линии SDA видит ноль (низкий
уровень), оно должно признать свой проигрыш в конфликте и освободить линии SCL и SDA.
Выигравшее устройство даже и не заметит проигравших конкурентов и продолжит работу.
Искажения информации, передаваемой выигравшим устройством, не происходит (в отличие
от коллизий, например, в сетях Ethernet). Если ведущее устройство, проигравшее в
конфликте, имеет и функции ведомого устройства, по признанию проигрыша оно должно
перейти в режим ведомого, поскольку конфликт мог быть вызван попыткой обращения к
нему победившего ведущего устройства.
      Бит подтверждения ACK, вводящийся в конце каждого байта устройством-приемни-
ком, выполняет несколько функций. Когда передатчиком является ведущее устройство,
приемник (ведомый) должен вводить нулевой бит ACK, свидетельствующий о нормальном
получении очередного байта. Единичный бит ACK (нет подтверждения) в ответ на посылку
адреса свидетельствует об отсутствии адресованного ведомого устройства на шине или его
занятости внутренними процессами. Не получив бита подтверждения, ведущее устройство
должно сформировать условие Stop, чтобы освободить шину. Когда ведущее устройство
является приемником, оно должно формировать нулевой бит ACK после каждого принятого
байта, кроме последнего. Единичный бит ACK в этом случае является указанием ведомому
устройству на окончание передачи — оно теперь должно освободить линии SDA и SCL,
чтобы ведущее устройство смогло сформировать условие Р или Sr.
      На вышеописанной физической основе строится протокол обмена данными по I2C.
Каждое ведомое устройство имеет свой адрес, уникальный на шине. В начале любой