Файл: Семейство микроконтроллеров MSP430X1XX, руководство пользователя (2004).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2025

Просмотров: 2816

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Раздел XV.

Периферийный интерфейс USART, режим I2C

сброс бита I2CEN сбрасывают I2CTXUDF. I2CTXUDF используется только в режиме передачи.

Переполнение при приеме

Переполнение при приеме происходит, когда сдвиговый регистр приема и буфер приема заполнены. Когда происходит переполнение при приеме, устанавливается бит I2CRXOVR. Потери данных не происходит, поскольку в этом случае линия SCL удерживается в состоянии низкого уровня, которое приостанавливает дальнейшую активность на шине. Чтение регистра I2CDR или сброс бита I2CEN сбрасывают бит I2CRXOVR. Бит I2CRXOVR используется только в режиме приема.

15.2.6. Генерация тактовых сигналов I2C и синхронизация

Модуль I2C работает с источником тактовой частоты, выбираемым битами I2CSSELx. Прескалер I2CPSC и регистры I2CSCLH и I2CSCLL определяют частоту и скважность тактового сигнала SCL для режима ведомого, как показано на рис. 15-13.

Примечание: максимальная частота I2CCLK

I2CIN

I2CPSC

I2CCLK

(I2CPSC + 1) (I2CSCLH + 1) (I2CPSC + 1) (I2CSCLL + 1)

Рис. 15-13. Генерация сигналов на линии SCL модуля I2C

Источник тактовых импульсов I2CIN модуля I2C должен иметь частоту, по крайней мере, в 10 раз больше частоты SCL в обоих режимах ведущего и ведомого. Это условие выполняется автоматически в режиме ведущего регистрами I2CSCLL и I2CSCLH.

Примечание: значение U2CPSC

Когда I2CPSC>4, функционирование может оказаться непредсказуемым. Для установки частоты SCL необходимо использовать регистры I2CSCLL и I2CSCLH.

Во время процедуры арбитража тактовые импульсы от различных ведущих должны быть синхронизированы. Устройство, первым генерирующее период низкого уровня на SCL, берет верх над другими устройствами, вынуждая их запустить их собственные периоды низкого уровня. В этом случае SCL удерживается в состоянии низкого уровня устройством с самым долгим периодом низкого уровня. Другие устройства должны ожидать, пока линия SCL будет освобождена перед стартом своих периодов высокого уровня. Рис. 15-14 ил-

Библиотека Компэла

281


MSP430x1xxFamily

Состояние

ожидания

Старт ВЫСОКОГО периода

SCL от устройства № 1

SCL от устройства № 2

Линия шины SCL

Рис. 15-14. Синхронизация двух тактовых генераторов I2C во время арбитража

люстрирует тактовую синхронизацию. Это позволяет медленному ведомому замедлять быстрого ведущего.

15.2.7. Использование модуля I2C в режимах пониженного энергопотребления

Модуль I2C может использоваться в MSP430 в режимах пониженного энергопотребления. Когда для модуля I2C задействован внутренний источник тактирования, модуль работает нормально независимо от режима работы MSP430. Когда внутренний источник тактирования модуля I2C отсутствует, обеспечивается автоматическая активация тактирования. Когда модуль I2C простаивает, I2CBUSY=0 и источник тактирования I2CIN отключен от модуля I2C, сохраняя энергию источника питания.

Когда источник тактирования I2C неактивен, модуль I2C автоматически активирует выбранный источник тактирования, когда это необходимо, независимо от установок управляющих битов источника тактирования. Источник тактирования остается активным до перехода модуля I2C в состояние ожидания. После возврата модуля I2C в режим ожидания, управление источником тактирования возвращается к установкам его управляющих битов.

Автоматическая активация тактирования I2C происходит в следующих ситуациях:

В режиме ведущего тактирование активируется, когда I2CSTT=1 и остается активным до завершения переноса, после чего модуль I2C возвращается в состояние ожидания.

282

Библиотека Компэла


Раздел XV.

Периферийный интерфейс USART, режим I2C

В режиме ведомого тактирование активируется, когда обнаружено условие «СТАРТ» и остается активным до завершения переноса, после чего модуль I2C возвращается в состояние ожидания. После определения условия «СТАРТ» устанавливается флаг STTIFG и модуль удерживает линию SCL в низком состоянии, пока источник тактирования не станет активным. Как только источник запускается, модуль I2C освобождает линию SCL ведущему.

Когда модуль I2C активирует неактивный источник тактирования, источник тактирования становится активным для всего устройства, и любая периферия, сконфигурированная для использования этого источника, окажется задействованной. Например, таймер, использующий SMCLK, будет инкрементироваться, пока модуль I2C будет удерживать SMCLK в активном состоянии.

15.2.8. Прерывания I2C

Модуль I2C имеет один вектор прерывания для восьми флагов прерывания, показанных в таблице 15-3. Каждый флаг прерывания имеет собственный бит разрешения прерывания. Когда прерывание разрешено, и бит GIE установлен, флаг прерывания будет генерировать запрос прерывания.

Таблица 15-3. Прерывания I2C

Флаг

Условие прерывания

прерывания

Потеря арбитража. Арбитраж может быть потерян, когда два или более передат-

чиков начинают передачу одновременно или когда программное обеспечение

ALIFG

пытается инициировать I2C перенос при I2CBB=1. Флаг ALIFG устанавливается,

когда арбитраж был потерян. Когда ALIFG устанавливается, биты MST и I2CSTP

очищаются и контроллер I2C становится ведомым приемником.

NACKIFG

Прерывание при отсутствии подтверждения. Этот флаг устанавливается, когда

подтверждение ожидается, но не получено.

OAIFG

Прерывание собственного адреса. Этот флаг устанавливается, когда другой веду-

щий имеет адрес модуля I2C. OAIFG используется только в режиме ведомого.

Прерывание «регистр доступен для чтения». Этот флаг устанавливается, когда ранее

ARDYIFG

запрограммированный перенос завершен, и биты статуса обновлены. Это прерыва-

ние используется для уведомления ЦПУ о том, что регистры I2C готовы к доступу.

Прерывание/статус готовности приема. Этот флаг устанавливается, когда модуль

RXRDYIFG

I2C принял новые данные. RXRDYIFG автоматически очищается, когда I2CDR

прочитан и буфер приема пуст. Переполнение приемника показывается, если бит

I2CRXOVR=1. RXRDYIFG используется только в режиме приема.

Прерывание/статус готовности передачи. Этот флаг устанавливается, когда модуль

I2C готов для новой передачи данных (режим ведущего передатчика) или когда

TXRDYIFG

другой ведущий запрашивает данные (режим ведомого передатчика). TXRDYIFG

автоматически очищается, когда I2CDR и буфер передачи полны. Опустошение

передачи показывается, если I2CTXUDF=1. Не используется в режиме приема.

Библиотека Компэла

283


MSP430x1xxFamily

Таблица 15-3. (Окончание)

Флаг

Условие прерывания

прерывания

GCIFG

Прерывание общего вызова. Этот флаг устанавливается, когда модуль I2C принял адрес общего вызова (00h). GCIFG используется только в режим приема.

Прерывание при обнаружении условия «СТАРТ». Этот флаг устанавливается, когда модуль I2C обнаружил условие «СТАРТ» в режиме ведомого. Это позволяет

STTIFG MSP430 находиться в режиме пониженного энергопотребления с неактивным источником тактирования I2C, пока ведущий не инициирует связь по I2C. STTIFG используется только в режиме ведомого.

Генератор вектора прерывания I2CIV

Флаги прерывания I2C разделены по приоритетам и объединены в источник одного вектора прерывания. Регистр вектора прерывания I2CIV используется для выяснения, какой флаг запросил прерывание. Разрешенное прерывание с наивысшим приоритетом генерирует число в регистре I2CIV, которое может быть оценено или добавлено к программному счетчику для автоматического входа в соответствующую программную процедуру. Запрещенные I2C прерывания не воздействуют на содержимое I2CIV. Когда RXDMAEN=1, RXRDYIFG не будет влиять на значение I2CIV и когда TXDMAEN=1, TXRDYIFG не будет влиять на значение I2CIV, независимо от состояния RXRDYIE или TXRDYIE.

При любом доступе (чтение или запись) к регистру I2CIV автоматически сбрасывается флаг ожидающего прерывания с наивысшим приоритетом. Если устанавливается другой флаг прерывания, после обработки начального прерывания немедленно генерируется другое прерывание.

Пример программного обеспечения, использующего I2CIV

Приведенный далее пример программного обеспечения показывает рекомендуемое использование I2CIV. Значение I2CIV добавляется к PC для автоматического перехода к соответствующей процедуре:

I2C_ISR

;Добавление смещения к таблице переходов

ADD &I2CIV, PC

RETI

;Вектор 0: Нет прерывания

JMP AL IFG_ISR

;Вектор 2: ALIFG

JMP NACKIFG_ISR

;Вектор 4: NACKIFG

JMP OAIFG_ISR

;Вектор 6: OAIFG

JMP ARDYIFG_ISR

;Вектор 8: ARDYIFG

JMP RXRDYIFG_ISR

;Вектор 10: RXRDYIFG

JMP TXRDYIFG_ISR

;Вектор 12: TXRDYIFG

JMP GCIFG_ISR

;Вектор 14: GCIFG

STTIFG_ISR

;Вектор 16

...

;Задача (программный модуль) начинается здесь

Библиотека Компэла

284


Раздел XV.

Периферийный интерфейс USART, режим I2C

RETI

;Возврат

ALIFG_ISR

;Вектор 2

...

;Задача начинается здесь

RETI

;Возврат

NACKIFG_ISR

;Вектор 4

...

;Задача начинается здесь

RETI

;Возврат

OAIFG_ISR

;Вектор 6

...

;Задача начинается здесь

RETI

;Возврат

ARDYIFG_ISR

;Вектор 8

...

;Задача начинается здесь

RETI

;Возврат

RXRDYIFG_ISR

;Вектор 10

...

;Задача начинается здесь

RETI

;Возврат

TXRDYIFG_ISR

;Вектор 12

...

;Задача начинается здесь

RETI

;Возврат

GCIFG_ISR

;Вектор 14

...

;Задача начинается здесь

RETI

;Возврат

15.3. Регистры модуля I2C

Регистры модуля I2C приведены в таблице 15-4.

Таблица 15-4. Регистры I2C

Регистр

Краткое

Тип регистра

Адрес

Исходное

обозначение

состояние

Разрешение прерывания I2C

I2CIE

Чтение/запись

050h

Сброс с PUC

Флаг прерывания I2C

I2CIFG

Чтение/запись

051h

Сброс с PUC

Счет данных I2C

I2CNDAT

Чтение/запись

052h

Сброс с PUC

Управление USART

U0CTL

Чтение/запись

070h

001h с PUC

Управление передачей I2C

I2CTCTL

Чтение/запись

071h

Сброс с PUC

Управление данными I2C

I2CDCTL

Только чтение

072h

Сброс с PUC

Прескалер I2C

I2CPSC

Чтение/запись

073h

Сброс с PUC

«Высокий» SCL I2C

I2CSCLH

Чтение/запись

074h

Сброс с PUC

«Низкий» SCL I2C

I2CSCLL

Чтение/запись

075h

Сброс с PUC

Данные I2C

I2CDRW/I2CDRB

Чтение/запись

076h

Сброс с PUC

Собственный адрес I2C

I2COA

Чтение/запись

0118h

Сброс с PUC

Адрес ведомого I2C

I2CSA

Чтение/запись

011Ah

Сброс с PUC

Вектор прерываний I2C

I2CIV

Только чтение

011Ch

Сброс с PUC

Библиотека Компэла

285