11.2.8. Регистры модуля I²C

(Руководство разработчика по микроконтроллерам семейства HCS08)

Для управления модулем I2C используются 6 регистров специальных функций:

  • IICC — первый регистр управления модуля I2C;
  • IICC2 — второй регистр управления модуля I2C;
  • IICS — регистр состояния модуля I2C;
  • IICF — регистр скорости обмена модуля I2C;
  • IICA — регистр адреса модуля I2C;
  • IICD — регистр данных модуля I2C.

В МК серии QE присутствуют 2 модуля I2C и, соответственно, по два регистра управления каждого типа. Например, первый регистр состояния IIC1S и второй регистр состояния IIC2S.

11.2.8.1. Регистр управления IICC

Для МК серий AC. AW, Dx, EL, GB, GT, JM, LC, QE. QG. SG, SH, SL
РегистрРежимD7D6D5D4D3D2D1D0
IICCЧтениеIICENIICIEMSTTXTXAK000
ЗаписьRSTA
Сброс00000000

Описание битов:
Имя битаОписаниеСимвол в языке С
IICENБит разрешения работы модуля I2C:
0 — контроллер I2C выключен;
1 — контроллер I2C включен.
bIICEN
IICIEБит разрешения прерывания модуля от I2C:
0 — прерывания по запросу I2C запрещены;
1 — прерывания по запросу I2C разрешены.
bHCIE
MSTБит выбора режима работы контроллера I2C:
0 — контроллер I2C работает в режиме ведомого (Slave);
1 — контроллер I2C работает в режиме ведущего (Master).
Когда этот бит изменяется с 0 на 1, генерируется состояние Старт. Наоборот, когда бит изменяется с 1 на 0, генерируется состояние Стоп.
bMST
TXБит выбора направления передачи по линии данных SDA:
0 — линия работает на ввод;
1 — линия работает на вывод.
bTX
TXAKБит подтверждения в режиме приема:
0 — генерируется бит подтверждения после приема байта;
1 — генерируется бит неподтверждения приема байта.
Этот бит управляет генерацией бита подтверждения после приема байта данных, независимо от того, ведомый это или ведущий.
bTXAK
RSTAЕсли модуль I2C работает в режиме ведущего, то запись 1 в этот бит вызывает повторную генерацию состояния Старт — «Повторный старт».bRSTA

11.2.8.2. Регистр состояния IICS

Для МК серий AC, AW, Dx, EL, GB, GT, JM, LC, QE, QG, SG, SH, SL
РегистрРежимD7D6D5D4D3D2D1D0
IICSЧтениеTCFIAASBUSYARBL0SRWIICIFRXAK
Запись
Сброс00000000

Описание битов:
Имя битаОписаниеСимвол в языке С
TCFБит завершения обмена. Устанавливается после завершения обмена одним байтом:
0 — обмен не завершен;
1 — обмен завершен.
Флаг TCF сбрасывается в 0, когда читают регистр данных IICD (в режиме приема) или когда записывают в регистр данных IICD (в режиме передачи).
bTCF
IAASФлаг адреса ведомого. Устанавливается, если устройство работает в режиме ведомого и переданный в сообщении ведущего адрес равен адресу ведомого, который хранится в регистре адреса IICA.
Флаг сбрасывается при записи в регистр IICC.
bIAAS
BUSYФлаг занятой линии. Этот флаг устанавливается, если модуль I2C распознал старт-бит на линии. Флаг сбрасывается, когда модуль распознает стоп-бит на линии.
0 — шина I2C свободна;
1 — шина I2C занята.
bBUSY
ARBLФлаг потери арбитража:
0 — нет нарушений в работе шины I2C;
1 — есть потеря арбитража. Модуль I2C должен некоторое время подождать, а потом начать операцию передачи снова.
Флаг сбрасывается посредством записи в него 1.
bARBL
SRWБит направления передачи ведомого. Этот бит показывает состояние бита R/W в поле адреса:
0 — ведомый принимает. Ведущий передает ведомому;
1 — ведомый передает. Ведущий принимает от ведомого.
bSRW
IICIFФлаг необслуженных запросов на прерывание модуля I2C.Устанавливается в 1, если установлен один из флагов: TCF, IAAS или ARBL.
0 — нет необслуженных прерываний;
1 — есть необслуженные прерывания.
Флаг сбрасывается посредством записи в него 1.
bIICIF
RXAKБит подтверждения приема ведущего:
0 — ведомый подтвердил прием данных;
1 — ведомый не подтвердил прием данных.
Этот бит отражает состояние поля ASK на временной диаграмме обмена.
bRXAK

11.2.8.3. Регистр адреса IICA

Для МК серий AC, AW, Dx, EL,GB, GT, JM, LC, QE, QG, SG, SH, SL
РегистрРежимD7D6D5D4D3D2D1D0
IICAЧтениеADDR
Запись
Сброс00000000

В этом регистре хранится 7-битный адрес ведомого устройства, который разработчик присвоил данному устройству при разработке системы. Этот адрес автоматически сравнивается с кодом адреса, который ведомый получил в поле адреса по шине I2C. Если адреса совпали, то устанавливается бит IAAS в регистре состояния IICS.

11.2.8.4. Регистр скорости обмена IICF

Для МК серий AC, AW, Dx, EL,GB, GT, JM, LC, QE, QG, SG, SH, SL
РегистрРежимD7D6D5D4D3D2D1D0
IICFЧтениеMULTICR
Запись
Сброс00000000

Описание битов:
Имя битаОписаниеСимвол в языке С
MULTБитовое поле MULT назначает коэффициент умножения для модуля I2C:
00 — 1;
01 — 2;
10 — 4;
11 — резерв.

I2C_M1
I2C_M2
I2C_M4
ICRБитовое поле ISR назначает фактор ICR для определения параметров временной диаграммы обмена по I2C. Фактор ICR используется как для назначения скорости обмена, так и для назначения времени установления данных. В соответствие коду ICR ставятся два коэффициента SCL_DIV и SDA_HV, значения которых указаны в таблице, размещённой ниже. Формулы для расчета с использованием этих коэффициентов приведены ниже.
-

Значения коэффициентов SCL_DIV и SDA_HV

ISRSCL_DIVSDA_HVISRSCL_DIVSDA_HV
0x002070x2016017
0x012270x2119217
0x022480x2222433
0x032680x2325633
0x042890x2428849
0x053090x2532049
0x0634100x2638465
0x0740100x2748065
0x082870x2832033
0x093270x2938433
0x0A3690x2A44865
0x0B4090x2B51265
0x0C44110x2C57697
0x0D48110x2D64097
0x0E56130x2E768129
0x0F68130x2F960129
0x104890x3064065
0x115690x3176865
0x1264130x32896129
0x1372130x331024129
0x1480170x341152193
0x1588170x351280193
0x16104210x361536257
0x17128210x371920257
0x188090x381280129
0x199690x391536129
0x1A112170x3A1792257
0x1B128170x3B2048257
0x1C144250x3C2304385
0x1D160250x3D2560385
0x1E192330x3E3072513
0x1F240330x3F3840513

В этом регистре хранятся два битовых поля, которые определяют скорость и параметры временной диаграммы обмена по I2C. Частота сигналов синхронизации определяется по формуле:

.

Время установления данных SDA_hold_time на шине I2C — это временной интервал между моментом установления в 0 сигнала SCL и изменением данных на линии SDA. Назначается параметром SDA_HV (SDA_Hold_Value) из таблицы для фактора ICR регистра скорости обмена:

.

11.2.8.5. Регистр данных IICD

Для МК серий AC, AW, Dx, EL,GB, GT, JM, LC, QE, QG, SG, SH, SL
РегистрРежимD7D6D5D4D3D2D1D0
IICDЧтениеI2C DATA
Запись
Сброс00000000

Если модуль I2C работает в режиме ведущего, то операция записи в этот регистр инициирует обмен по I2C (но только если бит направления обмена в регистре управления IICC выставлен правильно, т.е. TX = 1). Первый байт после состояния Старт, который программа записывает в регистр данных, интерпретируется ведомыми как адрес устройства. Поэтому программа должна правильно сформировать содержимое первого байта. Операция чтения регистра возвращает последний принятый байт по I2C. Операция чтения регистра также инициирует начало приема следующего байта, но только если бит направления обмена в регистре управления IICC выставлен правильно, т.е. при TX = 0! При TX = 1 операция чтения регистра не вызовет прием нового байта по I2C от ведомого.

Если модуль I2C работает в режиме ведомого, то записанные в этот регистр данные будут переданы на линию SDA шины I2C тогда, когда ведущее устройство будет выполнять цикл приема от этого ведомого. Операция чтения регистра возвращает последний принятый байт от ведущего.

11.2.8.6. Регистр управления IICC2

Для МК серий AC, Dx, EL, JM, QE, SG, SH, SL
РегистрРежимD7D6D5D4D3D2D1D0
IICCЧтениеGCAENADEXT000AD10AD9AD8
Запись
Сброс00000000

Описание битов:
Имя битаОписаниеСимвол в языке С
GCAENБит широковещательного режима работы модуля I2C:
0 — режим не включен;
1 — режим разрешен.
bGCAEN
ADEXTБит разрешения режима расширенной адресации от модуля I2C:
0 — модуль I2C реализует режим 7-битной адресации;
1 — модуль I2C реализует режим 10-битной адресации.
bADEXT
AD10
AD9
AD8
Старшие биты адреса ведомого для контроллера I2C. Младшие 7 бит контроллер берет из регистра адреса IICA. Эти биты принимаются во внимание только при ADEXT = 1.

Электронные компоненты Freescale >>>
Подробнее о компании Freescale >>>