Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция 16.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.25 Mб
Скачать
  1. Инициализация ведомого

Сброс I2C PRCR[I2C_RST]=1 и ожидание нуля.

Подача тактового питания PCGCR1[I2CCG]=1.

Запрет работы контроллера ICMDR[IRS]=0.

Задание разрядности адреса ICMDR[XA]=x.

Задание собственного адреса ICOAR.

Разрешение прерываний в ICIMR:

– AAS=1 (нулевой адрес или адрес ведомого);

– ICRRDY=1 (готовность приемника);

– ICXRDY=1 (готовность передатчика);

– SCD=1 (обнаружение STOP).

Настройка прескалера ICPSC (6,7-13,1 МГц).

Тактовая частота в ICCLKL и ICCLKH (400 кГц).

Конфигурирование ICMDR:

– MST=0 (ведомое устройство);

– DLB=0 (запрет цифровой петли);

– RM=1 (поддержка режима повторения);

– STP=0 (запрет обнаружения STOP );

– STT=0 (запрет обнаружения START);

– BC=0 (число бит в посылке 8).

Разрешение работы контроллера ICMDR[IRS]=1.

Очистка флагов прерываний ICSTR=ICSTR

Очистка вектора ICIVR=0 пока ICIVR!=0.

Разрешение обнаружения START ICMDR[STT]=1.

Ожидание приема или передачи данных:

– ICSTR[ICRRDY]==0 или ICSTR[ICXRDY] (опрос);

– ICIVR=={ICRINT, ICXINT, STOP} (прерывание).

Повторение ожидания приема или передачи.

Завершение обмена, если STOP.

Запрет работы устройства ICMDR[IRS]=0.

Снятие тактового питания PCGCR1[I2CCG]=0.