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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
IICC | Чтение | IICEN | IICIE | MST | TX | TXAK | 0 | 0 | 0 |
Запись | RSTA | — | — | ||||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Описание битов:
Имя бита | Описание | Символ в языке С |
---|---|---|
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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
IICS | Чтение | TCF | IAAS | BUSY | ARBL | 0 | SRW | IICIF | RXAK |
Запись | — | — | — | — | — | ||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Описание битов:
Имя бита | Описание | Символ в языке С |
---|---|---|
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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
IICA | Чтение | ADDR | |||||||
Запись | |||||||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
В этом регистре хранится 7-битный адрес ведомого устройства, который разработчик присвоил данному устройству при разработке системы. Этот адрес автоматически сравнивается с кодом адреса, который ведомый получил в поле адреса по шине I2C. Если адреса совпали, то устанавливается бит IAAS в регистре состояния IICS.
11.2.8.4. Регистр скорости обмена IICF
Для МК серий AC, AW, Dx, EL,GB, GT, JM, LC, QE, QG, SG, SH, SL
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
IICF | Чтение | MULT | ICR | ||||||
Запись | |||||||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Описание битов:
Имя бита | Описание | Символ в языке С |
---|---|---|
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
ISR | SCL_DIV | SDA_HV | ISR | SCL_DIV | SDA_HV | |
---|---|---|---|---|---|---|
0x00 | 20 | 7 | 0x20 | 160 | 17 | |
0x01 | 22 | 7 | 0x21 | 192 | 17 | |
0x02 | 24 | 8 | 0x22 | 224 | 33 | |
0x03 | 26 | 8 | 0x23 | 256 | 33 | |
0x04 | 28 | 9 | 0x24 | 288 | 49 | |
0x05 | 30 | 9 | 0x25 | 320 | 49 | |
0x06 | 34 | 10 | 0x26 | 384 | 65 | |
0x07 | 40 | 10 | 0x27 | 480 | 65 | |
0x08 | 28 | 7 | 0x28 | 320 | 33 | |
0x09 | 32 | 7 | 0x29 | 384 | 33 | |
0x0A | 36 | 9 | 0x2A | 448 | 65 | |
0x0B | 40 | 9 | 0x2B | 512 | 65 | |
0x0C | 44 | 11 | 0x2C | 576 | 97 | |
0x0D | 48 | 11 | 0x2D | 640 | 97 | |
0x0E | 56 | 13 | 0x2E | 768 | 129 | |
0x0F | 68 | 13 | 0x2F | 960 | 129 | |
0x10 | 48 | 9 | 0x30 | 640 | 65 | |
0x11 | 56 | 9 | 0x31 | 768 | 65 | |
0x12 | 64 | 13 | 0x32 | 896 | 129 | |
0x13 | 72 | 13 | 0x33 | 1024 | 129 | |
0x14 | 80 | 17 | 0x34 | 1152 | 193 | |
0x15 | 88 | 17 | 0x35 | 1280 | 193 | |
0x16 | 104 | 21 | 0x36 | 1536 | 257 | |
0x17 | 128 | 21 | 0x37 | 1920 | 257 | |
0x18 | 80 | 9 | 0x38 | 1280 | 129 | |
0x19 | 96 | 9 | 0x39 | 1536 | 129 | |
0x1A | 112 | 17 | 0x3A | 1792 | 257 | |
0x1B | 128 | 17 | 0x3B | 2048 | 257 | |
0x1C | 144 | 25 | 0x3C | 2304 | 385 | |
0x1D | 160 | 25 | 0x3D | 2560 | 385 | |
0x1E | 192 | 33 | 0x3E | 3072 | 513 | |
0x1F | 240 | 33 | 0x3F | 3840 | 513 |
В этом регистре хранятся два битовых поля, которые определяют скорость и параметры временной диаграммы обмена по 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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
IICD | Чтение | I2C DATA | |||||||
Запись | |||||||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Если модуль 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
Регистр | Режим | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
IICC | Чтение | GCAEN | ADEXT | 0 | 0 | 0 | AD10 | AD9 | AD8 |
Запись | — | — | — | ||||||
Сброс | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Описание битов:
Имя бита | Описание | Символ в языке С |
---|---|---|
GCAEN | Бит широковещательного режима работы модуля I2C: 0 — режим не включен; 1 — режим разрешен. | bGCAEN |
ADEXT | Бит разрешения режима расширенной адресации от модуля I2C: 0 — модуль I2C реализует режим 7-битной адресации; 1 — модуль I2C реализует режим 10-битной адресации. | bADEXT |
AD10 AD9 AD8 | Старшие биты адреса ведомого для контроллера I2C. Младшие 7 бит контроллер берет из регистра адреса IICA. Эти биты принимаются во внимание только при ADEXT = 1. | — |
Электронные компоненты Freescale >>>
Подробнее о компании Freescale >>>