Описание интерфейса I2C (1031655), страница 6
Текст из файла (страница 6)
Кроме того, необходимо следить, чтобывремя между изменением на линии SDA и стробированием положительным импульсом налинии SCL было не меньше половины минимальной длительности полупериода SCL (4.7мкс/2=2.4 мкс.)Еще одна распространенная ошибка - игнорирование требования слежения зазахватом линии SCL "Slave"-абонентом. Грамотно реализованные программы операций"Master"-абонента должны контролировать возврат линии SCL после того, как переводятее в единичное состояние, и только дождавшись реальной установки линии SCL вединичное состояние продолжать операции приемо-передачи.Теперь мы опишем минимально необходимый набор операций для реализации"Master"-абонента.
Прежде всего, это подпрограммы выдачи "Start"- и "Stop"-условия,подпрограмма передачи байта, подпрограмма приема байта, выдающая сигнал АСК иподпрограмма приема байта, не выдающая сигнал АСК. Три последние используютподпрограммы передачи бита и приема бита. Во временных промежутках междуподпрограммами линия SCL имеет нулевое значение. Как уже говорилось ранее, важноправильно согласовывать все временные характеристики подпрограмм.
Если, к примеру,вы вызываете повторный "Start" сразу за передачей (приемом) байта, то необходимо,чтобы полностью завершился нулевой полупериод (>4.7 мкс), предшествующий "Start"условию, а подпрограмма, реализующая "Start"-условие, переведя линии SDA и SCL вединичное состояние, дождавшись их реального возврата, должна удерживать ее в такомсостоянии не менее установленного времени (>4.7 мкс), и так во всех случаях.Оперируя этими пятью подпрограммами можно легко наладить обмен по шине I2C.Можно выдать на шину "Start"-условие, за ним "Slave Adress", далее данные, всоответствии с протоколом адресуемого устройства. Можно выдать повторное "Start"условие, новый "Slave Adress" и так далее, формируя процесс обмена как из элементовконструктора..















