Описание интерфейса I2C (1031655), страница 5
Текст из файла (страница 5)
Конечно, в последнем случае скорость передачи данных будетопределяться возможностями устройства, а не шины.Таблица 3. Электрические параметры.ПараметрСимволВходное напряжение НИЗКОГО уровня,Vilфиксированное зависящее от Vdd(V)Входное напряжение ВЫСОКОГОVihуровня, фиксированное зависящее отVdd(V)Гистерезис входного триггера Шмиттафиксированные вх уровни зависящие от VhysVdd(V)Ширина импульсов выбросов, которыеTspдолжен подавлять входной фильтрВыходное напряжение НИЗКОГОуровня (открытый сток или открытыйVol2коллектор) при токе 3 мА при токе 8 мАVol1Время падения входного напряжения отVihmin до Vilmax при емкости шины отTof10 до 400 пФ при токе 3 мА на Vol1 притоке 8 мА на Vol2Входной ток любого входа при входномIiнапряжении между 0.4V и 0.9VЕмкость любого контактаCiСтандартминмаксБыстрыйминмакс-0.5 - 0.5 1.5 - 0.3 -0.5 - 0.5 1.5 0.3ЕдВ3.0 0.7*1) *1) 3.0 0.7*1) *1) В----0.2 0.05 - -В--050нс0-0.4 -000.4 0.6В--250* -20 +250 250* нс0.1C **10-10-10 *** 10 ***-1010мкАпФПРИМЕЧАНИЯ:*1) Максимальное Vih = Vddmax + 0.5 В* Максимальное время Tf для линий SDA и SCL, указанное в таблице 4 (300 нс) большеданного максимального Tof.
Это позволяет подключить последовательные резисторы Rs (рис37) без превышения максимального значения Tf.** C - емкость одной линии шины в пФ.*** Порты ввода/вывода быстрых устройств при выключенном питании не должнынарушать работу шины.Рисунок 30.
Временная диаграмма работы шины I2C.Таблица 4. Временные параметры.ПараметрСимволЧастота SCLfsclВремя свободной шины - междуTbufсигналами СТОП и СТАРТДлительность сигнала (повторного)СТАРТА. После окончания этогоThd;staпериода может быть сгенерированпервый синхроимпульсНИЗКИЙ период SCLTlowВЫСОКИЙ период SCLThighВремя установления сигнала повторногоTsu;staСТАРТАВремя удержания данных для CBUSThd;datсовместимых для I2C-устройствВремя установления данныхTsu;datВремя нарастания SDA, SCLTrВремя спада SDA, SCLTfВремя установления сигнала СТОПTsu;stoЕмкостная нагрузка на каждую линиюCшиныСтандартминмакс0100Быстрыйминмакс04004.7-1.3-мкс4.0-0.6-мкс4.74.0-1.30.6-мксмкс4.7-0.6-мкс5.0 0*--- 0*- 0.9**2504.01000300-100***20+0.1C20+0.1C0.6300300--400-400ЕдКГцмксмкснснсмкспФПРИМЕЧАНИЯ:Все значения отночительно уровней Vihmin и Vilmax (табл 3)* Устройство должно обеспечить время удержания не менее 300 нс для сигнала SDA(относительно Vihmin сигнала SCL), чтобы данные не менялись во время изменения SCL.** Время удержания должно достигать максимума только если устройство не вытягиваетНИЗКИЙ период сигнала SCL.*** Быстрые устройства могут быть использованы в медленной шине, но требованиеTsu;dat > 250 нс должно выполняться.
Это происходит автоматически, если устройство невытягивает НИЗКИЙ период SCL. Если же устройство вытягивает НИЗКИЙ период, онодолжно выдать следующий бит на линию данных SDA за время T до отпускания линии SCL, гдеТ = Trmax + Tsu;dat = 1000 + 250 = 1250 нс (в соответствии со спецификацией стандартногорежима шины).**** С - общая ёмкость шины в пФ.14. Практические рекомендации.Ниже мы рассмотрим основные трудности, связанные с использованием шины I2Cв целом, типичные ошибки, возникающие на начальных этапах реализации алгоритмовобмена и особенности стыковки с ЭКЛЗ.14.1.
Особенность реализации интерфейса с шиной I2C в ЭКЛЗ.Электрический интерфейс шины I2C реализован на микросхемах LVC07A соткрытым коллектором с нагрузочными резисторами на линиях SCL и SDA номиналом5.6 кОм. По электрическим характеристикам данная реализация соответствуеттребованиям стандарта Philips на шину I2C.Анализируемое устройство отрабатывает интерфейс I2C в режиме "Slave" иреализует протокол I2C режима "Slave" программным способом.
Временные параметрыреализованного интерфейса укладываются в требования стандарта Philips на шину I2C(см. Таблицу 4) для стандартных устройств со скоростью передачи данных до 100 кбит/с."Slave"-адрес ЭКЛЗ на шине I2C в данной версии программного обеспечения 7-ибитный, фиксирован, не може быть изменен и равен 02h.ЭКЛЗ не реагирует на команды "общий вызов" и "байт СТАРТА", совместим длясовместной работы с 10-и битово адресуемыми устройствами.Подстройку скорости обмена данными под свои возможности ЭКЛЗ производитпутем перевода линии SCL в НИЗКОЕ состояние.
ЭКЛЗ не способен работать в "быстром"режиме (400 кГц на шине SCL).14.2. Рекомендации по созданию "Master"- устройства.I2C-абоненты жестко разделяются по классам: "Master"- и "Slave"- устройство. Тотфакт, что сигнал SCL всегда генерируется "Master"-устройством означает, что "Master"абонент может быть достаточно легко реализован чисто программными средствами, таккак все изменения на шине будут происходить только по сигналу SCL. (Реализацию"Slave"-устройства мы в данном руководстве не рассматриваем, поскольку сопрягаемое сЭКЛЗ устройство должно работать в режиме "Master")Типичная ошибка при реализации программ "Master"-абонента - управлениезначением порта для установки нулевого и единичного состояний линий SCL и SDA.
Еслидля, например, ОМЭВМ семейства MCS-51 это нормальный режим работы, так какединичное состояние порта у них реализуется встроенным подтягивающим резистором =50 кОм, то для ОМЭВМ с симметричными портами (Motorola 68HCxx, Microchip PIC, Atmel AVR), атак же при использовании LPT-порта IBM-совместимого компьютера в однонаправленномрежиме вывода (линии LPT-порта D0-D7), это будет порождать электрическиеконфликты. Например, в руководстве "Microchip. Embedded Control Handbook 1994/1995"приведены практические программы для связи PIC c шиной I2C, содержащие подобныегрубые ошибки.
Положение усугубляется тем, что в случае взаимодействия по шине I2C снекоторыми микросхемами (например, EEPROM) такой вариант может сработать, так какони являются 100% аппаратными схемами и не вносят задержек в связной протокол, апаузу ожидания окончания цикла программирования производят переходом в пассивноесостояние. Использование таких подпрограмм с устройствами, производящими захватлинии SCL (а в случае ЭКЛЗ так оно и есть), приведет к невозможности связи, авозможно, и к выходу одного из сопрягаемых устройств из строя.Реализовать настоящую имитацию ОК (мы назвали этот режим имитацией ОК, такон не позволяет устанавливать на линии напряжение выше напряжения питания, что былобы нормально для настоящего ОК, но так как по спецификации I2C напряжение на линияхSCL и SDA не должно превышать напряжение питания, его вполне законно можносчитать выходом с ОК) на порте с симметричным выходом можно, если установитьзначение порта постоянно в ноль, а управлять состоянием линии через манипуляции срегистром направления данных.
Для ОМЭВМ PIC это будет регистр "TRISx",переводящий порт либо в третье состояние, либо подключающий линии в соответствии ссостоянием регистра "PORTx". Практически так же это реализуется в AVR и MC68HC05(08, 11), где "DDRx" коммутирует порт "PORTx", с той лишь разницей, что у них другаяполярность управляющего сигнала - у PIC ноль в "TRISx" соответствует нулю на выходе,а у AVR и MC68HC05 единица в "DDRx" соответствует нулю на выходе.Еще одна тонкость, не имеющая собственно к I2C никакого отношения,заключается в том, что у некоторых ОМЭВМ совмещены регистр чтения состояния линийпорта и регистр записи значения порта, в результате чего, если часть линий портазапрограммирована на вывод, а другая находится в третьем состоянии, то при выполнениипоследовательности операции "чтение из порта" - "модификация отдельных линий порта"- "запись в порт" - "активизация линий, находившихся в третьем состоянии" можетпроизойти изменение ранее предустановленных состояний отдельных линий,находящихся в момент чтения в третьем состоянии.
Это может нарушить (и скорее всегонарушит) работу программы обмена (потеряются нули, обеспечивающие имитациювыходов с ОК). Поэтому лучше производить принудительную установку в ноль битовперед каждой операцией обмена.Для IBM-совместимых ПЭВМ для реализации шины >I2C на базе LPT-портарекомендуется использовать не регистр данных DR, а регистр управления CR, выходыкоторого построены по схеме открытого коллектора. Но и в этом случае следуетпроявлять осторожность, поскольку регистр управления LPT-порта имеет открытыйколлектор только в режиме "Normal", а в режимах EPP и ECP этот регистр можетоказаться с симметричным выходом.Другая важная сторона вопроса - необходимость тщательного соблюденияпараметров временной диаграммы процесса обмена. Несмотря на то, что шина I2Cасинхронная и позволяет "Slave"-абоненту затягивать передачу бита (байта) на скольугодно длительное время, требования к минимальным значениям длительностейимпульсов очень жесткие.
Ситуация усугубляется тем, что положительные перепадысостояния линии имеют склонность затягиваться, так как несимметричные управляющиевыходы не могут создать крутые положительные фронты.При написании программ очень важно контролировать время между операциями нашине, реализуемыми различными подпрограммами, например выдача "Start" и "Stop"условия, передача бита, передача байта. При состыковке этих подпрограмм не должныбыть нарушены минимальные значения времени, что очень легко происходит прииспользовании высокоскоростных процессоров.















