Микроконверторы фирмы Analog Devices в микропроцессорных приборных комплексах. Виноградов А.Б - 242 стр.

UptoLike

242
ловия «Stop». Чтение байта данных из I
2
C EEPROM по произвольному адресу
реализуется подпрограммой Pod_READ_I2C.
Описанные подпрограммы процедур записи и чтения получаются доволь-
но большими по количеству инструкций, реальная скорость обмена оказывает-
ся невысокой (по сравнению со скоростью записи и чтения по текущему адре-
су), но это плата за возможность обращения к ячейкам памяти с произвольными
адресами.
Следует заметить, аппаратный модуль I2C ADuC824 имеет один довольно
серьезный недостаток при операциях обмена по шине модуль не осуществля-
ет слежение за текущим состоянием линии синхронизации SCL. В соответствии
с протоколом шины I
2
C Slave-устройство в процессе приема данных может
удерживать линию SCL в низком уровне, тем самым, давая указание Master-
устройству на приостановку передачи по шине. Это может происходить, когда
скорость обмена по шине, задаваемая Master-устройством, превышает предель-
ную скорость обмена, допустимую для Slave-устройства. Master-устройство,
установив перед передачей очередного бита данных линию SCL в высокий уро-
вень отпустив» CSL), должно убедиться в отсутствии такого удержания и
только в этом случае продолжить передачу по шине. Если такой контроль не
осуществляется, то в описанной выше ситуации возможна потеря передаваемых
по шине данных. Следует также отметить, что удержание SCL могут произво-
дить не все Slave-устройства. Например, микросхемы I
2
C EEPROM, являясь
чисто аппаратными устройствами и имея высокую предельную скорость обме-
на, не удерживают линию SCL.
Отсутствие аппаратного механизма контроля состояния SCL в модуле I2C
ADuC824 побудило реализовать такой механизм программно. Документ [6] ре-
комендует для контроля состояния SCL использовать любую линию ввода-
вывода общего назначения микроконвертора, настроенную как вход и соеди-
ненную в устройстве с линией SCL I
2
C. Реализация режима «программный ве-
дущий» при наличии такого рода слежения за SCL иллюстрируется програм-
мой, исходный текст которой содержится в файле i2c_eep2.asm (листинг 3.16).
Функционально эта программа полностью идентична коду из предыдущего
примера. Фрагмент принципиальной схемы, на котором показано подключение
EEPROM к ADuC824 для этого примера, приведен на рис. 3.14.
Листинг 3.16. Работа по интерфейсу I
2
C с контролем линий
;-----------------------------------------------------------------------------
;Демонстрационная программа организации обмена между микросхемой EEPROM
;24LC64 и ADuC824 по шине I2C.
;
;ADuC824 является мастер-устройством I2C.
;Протокол обмена по шине I2C реализован программно-аппаратно
;(Используется аппаратный модуль в режиме "программный ведущий").