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

Рис.23. – Регистры режимы

Режимов несколько (см. рис.23):

  • NACKMOD – No-acknowledge (NACK) mode (режим без подтверждения)

  • FREE – Free emulation mode (работа в точке останова эмулятора)

  • STT – START condition (генерация или обнаружение START)

  • STP – STOP condition (генерация или обнаружение STOP)

  • MST – Master mode (режим ведущего/ведомого (1/0) устройства)

  • TRX – Transmitter mode (режим передачи)

  • XA – Expanded address (режим расширенного адреса)

  • RM – Repeat mode (режим повторения, число повторений в ICCNT)

  • DLB – Digital loopback mode (режим цифровой петли, чтобы данные не через другое устройство передавались, а в ручную подавать данные (для тестирования))

  • IRS – I2C reset (разрешение работы контроллера I2C)

  • STB – START byte mode (режим удлиненного стартового состояния)

  • FDF – Free data format mode (режим свободных данных)

  • BC – Bit count (число бит: 0 – 8 бит, 2 – 2 бита, ..., 7 – 7 бит)

  1. Режим цифровой петли

Рис.24. Режим цифровой петли

  1. Другие регистры

Рис.25. Другие регистры

  • INTCODE – Interrupt code (код прерывания:

0 – нет прерывания;

1 – потеря арбитража (AL);

2 – нет подтверждения (NACK);

3 – готовность доступа к регистру (ARDY);

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

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

6 – состояние STOP (SCD);

7 – адрес как у ведомого устройства (AAS))

  • IGNACK – Ignore NACK (игнорировать отсутствие подтверждения)

  • BCM – Backward compatibility (обратная совместимость – прерывание готовности передатчика генерируются при копировании ICDXR в ICXSR)

  • IPSC – I2C prescaler divide-down (делитель прескалера)

  1. Регистры идентификации

Рис.26. – регистры идентификации

  • Class – Класс устройства (01h)

  • Revision – Версия (06h)

  • TYPE – Тип (05h)

  1. Аппаратурный сброс

Рис.27. – регистр управления сбросом

Запись нуля без эффекта, запись единицы запускает сброс, чтение единицы сигнализирует о состоянии сброса, чтение нуля сигнализирует об окончание сброса.

  1. Инициализация ведущего

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

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

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

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

– MST=1 (ведущее устройство);

– TRX=x (прием – 0, передача – 1);

– XA=x (адресация 7 бит – 0, 10 бит – 1);

– RM=0 (запрет повторения);

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

– FDF=0 (адресный формат);

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

Задание адреса ведомого ICSAR.

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

Тактовая частота в ICCLKL и ICCLKH.

Разрешение прерываний ICIMR[ICRRDY]=1.

Очистка прерываний ICSTR=ICSTR, ICIVR=0.

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

Ожидание освобождения шины ICSTR[BB]==0.

Запуск передачи (START) ICMDR[STT]=1.

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

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

– ICIVR==ICRINT, ICSTR[ICRRDY]=1 (прерывание готовности приемника, сброс флага прерыв.);

Чтение данных из ICDRR.

Повторение запуска передачи, ожидания приема и чтения данных.

Завершение обмена (STOP) ICMDR[STP]=1.

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

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