Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
403
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

Обычно скважность сигнала SCL равна 2 и эти регистры содержат равные значения, хотя это не обязательно. Частота не должна превышать кГц. Следовательно, для расчета значений регистров можно рекомендовать следующее выражение:

,

(1.18.2)

где частота задана в мегагерцах.

1.18.3 Настройка модуля I2C

Для настройки модуля I2C, как правило, достаточно:

а) выбрать режим портовых линий SDA и SCL через регистр

PINSEL0;

б) присвоить одинаковые значения регистрам выбора скорости (I2CxSCLH, I2CxSCLL), рассчитанные по формуле 1.18.2;

в) включить модуль I2C, записав код 0x40 в регистр I2CxCONSET.

1.18.4 Типовые циклы обмена данными по шине I2C

На практике чаще всего встречаются три вида циклов обмена данными по шине I2C. Цикл содержит ожидание готовности I2C через регистры I2CxCONSET и I2CxSTAT, установку и снятие состояний через регистры I2CxCONSET и I2CxCONCLR, прием и передачу данных через регистр I2CxDAT. Ниже приведены алгоритмы каждого цикла обмена.

Цикл «Адрес–Передача»

1.Установить START.

2.Дождаться состояния 0x08 (START передан); снять START; пере-

дать адрес и .

3.Дождаться состояния 0x18 (адрес передан); передать байт.

4.Дождаться состояния 0x28 (данные переданы); передать следующий байт. Если передан последний (или единственный) байт, установить STOP.

Цикл «Адрес–Прием»

1.Установить START.

2.Дождаться состояния 0x08 (START передан); снять START; если требуется принять больше одного байта, разрешить подтверждение; передать адрес и . Если байт всего один, пункт 3 пропустить.

3.Дождаться состояния 0x50 (данные получены, подтверждение отправлено); сохранить принятый байт. Если получен предпоследний байт, запретить подтверждение (запретить сразу, если байта всего два).

4.Дождаться состояния 0x58 (данные получены, подтверждение НЕ отправлено). Установить STOP.

Цикл «Адрес–Передача–Прием»

1.Установить START.

2.Дождаться состояния 0x08 (START передан); снять START; передать адрес и .

3.Дождаться состояния 0x18 (адрес передан); передать байт.

79