Микроконтроллеры MSP430. Руководство пользователя - часть 5

 

  Главная      Учебники - Разные     Микроконтроллеры MSP430. Руководство пользователя

 

поиск по сайту            правообладателям  

 

 

 

 

 

 

 

 

 

 

 

содержание      ..     3      4      5      6     ..

 

 

 

Микроконтроллеры MSP430. Руководство пользователя - часть 5

 

 

 

Раздел 14

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

Универсальный синхронно/асинхронный приемопередающий (USART) периферийный интерфейс поддерживает два последовательных режима в одном аппаратном модуле. Этот раздел описывает работу синхронного периферийного интерфейса или режима SPI. USART0 реализован в устройствах MSP430x12xx, MSP430x13xx и MSP430x15x. В дополнение к USART0, в устройствах MSP430x14x и MSP430x16x реализован второй идентичный USART модуль – USART1.

14.1 Введение в USART: режим SPI

В синхронном режиме USART подключает MSP430 к внешней системе через три или четыре вывода: SIMO, SOMI, UCLK и STE. Режим SPI выбирается, когда бит SYNC установлен, а бит I2C очищен.

Режим SPI имеет следующие возможности:

  • 7-ми или 8-разрядные данные
  • Работа SPI с 3-мя или 4-мя выводами
  • Режимы ведущий или ведомый
  • Независимые сдвиговые регистры передачи и приема
  • Раздельные буферные регистры передачи и приема
  • Выбираемая полярность UCLK и управление фазой
  • Программируемая частота UCLK в режиме ведущего
  • Независимая возможность прерывания для приема и передачи

На рис.14-1 показан USART, сконфигурированный в режиме SPI.

msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-1. Блок-схема USART в режиме SPI
Рис.14-1. Блок-схема USART в режиме SPI

14.2 Функционирование USART: режим SPI

В синхронном режиме последовательные данные передаются и принимаются множеством устройств с использованием общего тактирования, обеспечиваемого ведущим. Дополнительный вывод STE, управляемый ведущим, необходим для разрешения приема и передачи данных устройством.

Три или четыре сигнала используются для обмена данными через SPI:

  • SIMO
  • Вход ведомого, выход ведущего
    Режим ведущего: SIMO – линия вывода данных
    Режим ведомого: SIMO – линия ввода данных
  • SOMI
  • Выход ведомого, вход ведущего
    Режим ведущего: SOMI – линия ввода данных
    Режим ведомого: SOMI – линия вывода данных
  • UCLK
  • Тактирование USART SPI
    Режим ведущего: UCLK – выход
    Режим ведомого: UCLK – вход
  • STE
  • Разрешение передачи ведомого. Используется в 4-выводном режиме, когда на одной шине может быть много ведущих. Не применяется в 3-выводном режиме.
    4-х выводной режим ведущего:
    Когда STE имеет высокий уровень, SIMO и UCLK работают как обычно.
    Когда STE имеет низкий уровень, SIMO и UCLK устанавливаются на направление ввода.
    4-х выводной режим ведомого:
    Когда STE имеет высокий уровень, функционирование RX/TX ведомого отключено и SOMI принудительно устанавливается на направление ввода.
    Когда STE имеет низкий уровень, функционирование RX/TX ведомого разрешено и SOMI работает как обычно.

    14.2.1 Инициализация USART и сброс

    USART сбрасывается сигналом PUC или битом SWRST. После PUC бит SWRST автоматически устанавливается, оставляя USART в состоянии сброса. Когда он установлен, бит SWRST сбрасывает биты URXIEx, UTXIEx, URXIFGx, OE, FE и устанавливает флаг UTXIFGx. Бит USPIEx не изменяется битом SWRST. Для работы USART необходимо очистить SWRST. См. также раздел «Модуль USART, режим I2C» для USART0, когда он реконфигурируется из режима I2C в режим SPI.

    Примечание: Инициализация и реконфигурирование модуля USART
    Для инициализации/реконфигурирования USART необходим следующий процесс:
    1. Установить SWRST (BIS.B #SWRST,&UxCTL)
    2. Инициализировать все регистры USART установкой SWRST=1 (включая UxCTL)
    3. Включить модуль USART через MEx SFRs (USPIEx)
    4. Программно очистить SWRST (BIC.B #SWRST,&UxCTL)
    5. Разрешить прерывания (если необходимо) через IEx SFRs (URXIEx и/или UTXIEx)
    Невыполнение этих действий может привести к непредсказуемому поведению USART.

    14.2.2 Режим ведущего

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-2. USART – ведущий, внешнее устройство - ведомое
    Рис.14-2. USART – ведущий, внешнее устройство - ведомое

    На рис.14-2 показан USART в качестве мастера в обеих 3-х и 4-х выводных конфигурациях. USART инициализирует передачу данных, когда данные перемещаются в буфер передачи данных UxTXBUF. Данные UxTXBUF перемещаются в сдвиговый регистр TX, когда сдвиговый регистр TX пуст, инициируя передачу данных на SIMO, начиная со старшего разряда. Данные на SOMI сдвигаются в сдвиговый регистр приема по противоположному тактовому фронту, начиная со старшего разряда. Когда символ принят, принятые данные перемещены из сдвигового регистра RX в буфер принятых данных UxRXBUF, флаг прерывания приема URXIFGx установлен, указывая завершение операции RX/TX.

    Установка флага прерывания передачи UTXIFGx указывает, что данные перемещены из UxTXBUF в сдвиговый регистр TX и UxTXBUF готов для поступления новых данных. Это не указывает на завершение операции RX/TX.

    Чтобы принимать данные в USART в режиме ведущего, данные должны быть записаны в UxTXBUF, поскольку операции приема и передачи выполняются одновременно.

    4-х выводной режим ведущего SPI

    В 4-х выводном режиме ведущего STE используется для предотвращения конфликтов с другим ведущим. Ведущий функционирует нормально, когда STE имеет высокий уровень. Когда у STE низкий уровень:

    • SIMO и UCLK установлены на ввод и более не управляют шиной
    • Установлен бит ошибки FE, что указывает на нарушение целостности связи, которое будет обработано пользователем
    • Сигнал STE низкого уровня не сбрасывает модуль USART. Входной сигнал STE не используется в 3-х выводном режиме ведущего.

    14.2.3 Режим ведомого

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-3. USART – ведомый, внешнее устройство - ведущее
    Рис.14-3. USART – ведомый, внешнее устройство - ведущее

    На рис.14-3 показан USART в качестве ведомого в обеих 3-х и 4-х выводных конфигурациях. UCLK используется как вход для тактирования SPI и должен управляться внешним ведущим. Скорость передачи данных определяется этим тактовым сигналом и не зависит от внутреннего генератора скорости передачи. Данные записываются в UxTXBUF и перемещаются в сдвиговый регистр TX до старта передачи UCLK на SOMI. Данные на SIMO сдвигаются в сдвиговый регистр приема по противоположному фронту UCLK и перемещаются в UxRXBUF, когда принято заданное количество бит. Когда данные перемещаются из сдвигового регистра RX в UxRXBUF, устанавливается флаг прерывания URXIFGx, указывая, что данные были приняты. Бит ошибки переполнения OE устанавливается, когда предыдущие принятые данные не были прочитаны из UxRXBUF до перемещения новых данных в UxRXBUF.

    4-х выводной режим ведомого SPI

    В 4-х выводном режиме ведущего STE используется ведомым для разрешения операций передачи и приема и управляется ведущим SPI. Когда STE имеет низкий уровень, ведомый работает нормально. Когда у STE высокий уровень:

    • Любая выполняющаяся операция приема на SIMO останавливается
    • SOMI устанавливается на направление ввода
    • Высокий уровень сигнала STE не сбрасывает модуль USART. Входной сигнал STE не используется в 3-х выводном режиме ведомого.

    14.2.4 Включение SPI

    Бит включения USPIEx передачи/приема SPI включает или отключает USART в режиме SPI. Когда USPIEx=0, USART останавливает работу после завершения текущей передачи или немедленно, если действий не выполнялось. Сигнал PUC или установка бита SWRST отключают USART немедленно, при этом любая выполняющаяся передача прерывается.

    Разрешение передачи

    Когда USPIEx=0, любая последующая запись в UxTXBUF не приводит к передаче. Данные, записанные в UxTXBUF начнут передаваться, когда USPIEx=1 и активен источник BRCLK. На рис.14-4 и рис.14-5 показаны диаграммы состояний при разрешении передачи.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-4. Разрешение передачи в режиме ведущего
    Рис.14-4. Разрешение передачи в режиме ведущего

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-5. Диаграмма состояний разрешения передачи ведомого
    Рис.14-5. Диаграмма состояний разрешения передачи ведомого

    Разрешение приема

    Диаграммы состояний разрешения приема SPI показаны на рис.14-6 и рис.14-7. Когда USPIEx=0, UCLK не сдвигает данные в сдвиговый регистр RX.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-6. Диаграмма состояний разрешения приема в режиме ведущего SPI
    Рис.14-6. Диаграмма состояний разрешения приема в режиме ведущего SPI

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-7. Диаграмма состояний разрешения приема ведомым SPI
    Рис.14-7. Диаграмма состояний разрешения приема ведомым SPI

    14.2.5 Управление последовательным тактированием

    Сигнал UCLK на шине SPI обеспечивается ведущим. Когда MM=1, BITCLK обеспечивается генератором скорости передачи USART на выводе UCLK, как показано на рис.14-8. Когда MM=0, тактирование USART на выводе UCLK обеспечивается ведущим, генератор скорости передачи не используется, а значения битов SSELx не учитываются. Приемник и передатчик SPI работают параллельно и используют одинаковый источник тактирования для передачи данных.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-8. Генератор скорости передачи SPI
    Рис.14-8. Генератор скорости передачи SPI

    16-разрядное значение UxBR0+UxBR1 представляет собой коэффициент деления источника тактирования USART – BRCLK. Максимальная скорость передачи, генерируемая в режиме ведущего равна BRCLK/2. Модулятор в генераторе скорости передачи USART не используется в режиме SPI, рекомендуется устанавливать его значение равным 000h. Частота UCLK определяется так:

    Скорость передачи = BRCLK / UxBR, где UxBR = [UxBR1, UxBR0]

    Полярность и фаза последовательного тактирования

    Полярность и фаза UCLK раздельно конфигурируются через управляющие биты CKPL и CKPH модуля USART. Синхронизация для каждого случая показана на рис.14-9.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-9. Синхронизация USART SPI
    Рис.14-9. Синхронизация USART SPI

    14.2.6 Прерывания SPI

    SPI имеет один вектор прерывания для передачи и один вектор прерывания для приема.

    Работа прерывания SPI при передаче

    Флаг прерывания UTXIFGx устанавливается передатчиком для указания, что UxTXBUF готов к приему другого символа. Запрос прерывания генерируется, если также установлены флаги UTXIEx и GIE. UTXIFGx автоматически сбрасывается, если запрос прерывания обработан или если символ записан в UxTXBUF.

    UTXIFGx устанавливается после PUC или когда SWRST=1. UTXIEx сбрасывается после PUC или когда SWRST=1. Это показано на рис.14-10.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-10. Функционирование  прерывания при передаче
    Рис.14-10. Функционирование прерывания при передаче

    Примечание: запись в UxTXBUF в режиме SPI
    Запись данных в UxTXBUF, когда UTXIFGx=0 и USPIEx=1 может привести к ошибочной передаче данных.

    Работа прерывания SPI при приеме

    Флаг прерывания URXIFGx устанавливается каждый раз, когда символ принят и загружен в UxRXBUF, как показано на рис.14-11 и 14-12. Запрос прерывания генерируется, если также установлены флаги URXIEx и GIE. URXIFGx и URXIEx сбрасываются сигналом системного сброса PUC или когда SWRST=1. URXIFGx сбрасывается автоматически, если ожидаемое прерывание обработано или когда UxRXBUF прочитан. Это показано на рис.14-11 и рис.14-12.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-11. Функционирование прерывания при приеме
    Рис.14-11. Функционирование прерывания при приеме

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.14-12. Диаграмма состояний прерывания при приеме
    Рис.14-12. Диаграмма состояний прерывания при приеме

     

     

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

    14.3 Регистры USART: режим SPI

    Регистры USART, показанные в таблице 14-1 и таблице 14-2, структурированы побайтно, поэтому доступ к ним необходимо выполнять с помощью команд работы с байтами.

    Таблица 14-1. Регистры управления и статуса USART0

    Регистр Краткое
    обозначение
    Тип
    регистра
    Адрес Исходное
    состояние
    Регистр управления USART U0CTL Чтение/запись 070h 001h после PUC
    Регистр управления передачей U0TCTL Чтение/запись 071h 001h после PUC
    Регистр управления приемом U0RCTL Чтение/запись 072h 000h после PUC
    Регистр управления модуляцией U0MCTL Чтение/запись 073h Не изменяется
    Регистр 0 управления скоростью передачи U0BR0 Чтение/запись 074h Не изменяется
    Регистр 1 управления скоростью передачи U0BR1 Чтение/запись 075h Не изменяется
    Регистр буфера приема U0RXBUF Чтение 076h Не изменяется
    Регистр буфера передачи U0TXBUF Чтение/запись 077h Не изменяется
    Регистр 1 включения модуля SFR* ME1 Чтение/запись 004h 000h после PUC
    Регистр 1 разрешения прерывания SFR* IE1 Чтение/запись 000h 000h после PUC
    Регистр 1 флага прерывания SFR* IFG1 Чтение/запись 002h 082h после PUC

    * Не применимо к устройствам MSP430x12xx. См. описания регистров для выяснения расположения регистров и бит в этих устройствах.

    Таблица 14-2. Регистры управления и статуса USART1

    Регистр Краткое
    обозначение
    Тип
    регистра
    Адрес Исходное
    состояние
    Регистр управления USART U1CTL Чтение/запись 078h 001h после PUC
    Регистр управления передачей U1TCTL Чтение/запись 079h 001h после PUC
    Регистр управления приемом U1RCTL Чтение/запись 07Ah 000h после PUC
    Регистр управления модуляцией U1MCTL Чтение/запись 07Bh Не изменяется
    Регистр 0 управления скоростью передачи U1BR0 Чтение/запись 07Ch Не изменяется
    Регистр 1 управления скоростью передачи U1BR1 Чтение/запись 07Dh Не изменяется
    Регистр буфера приема U1RXBUF Чтение 07Eh Не изменяется
    Регистр буфера передачи U1TXBUF Чтение/запись 07Fh Не изменяется
    Регистр 2 включения модуля SFR ME2 Чтение/запись 005h 000h после PUC
    Регистр 2 разрешения прерывания SFR IE2 Чтение/запись 001h 000h после PUC
    Регистр 2 флага прерывания SFR IFG2 Чтение/запись 003h 020h после PUC


     
    Примечание: Изменение битов SFR
    Чтобы избежать изменения управляющих битов другими модулями, рекомендуется устанавливать или очищать биты IEx и IFGx с помощью команд BIS.B или BIC.B вместо команд MOV.B или CLR.B.

    UxCTL, регистр управления USART

    7 6 5 4 3 2 1 0
    Не исполь
    зуется
    Не исполь
    зуется
    I2C* CHAR LISTEN SYNC MM SWRST
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1


     
    Не используется Биты
    7-6
    Не используются
    I2C* Бит 5 Включение режима I2C. Этот бит позволяет выбрать режим I2C или SPI, когда SYNC=1.
      0  Режим SPI
      1  Режим I2C
      
    CHAR Бит 4 Длина символа
      0  7-разрядные данные
      1  8-разрядные данные
      
    LISTEN Бит 3 Включение прослушивания. Бит LISTEN включает режим обратной петли.
      0  Отключен
      1  Включен. Сигнал передачи внутренне подключается назад к приемнику
      
    SYNC Бит 2 Включение синхронного режима
      0  Режим UART
      1  Режим SPI
      
    MM Бит 1 Режим ведущего
      0  USART ведомый
      1  USART ведущий
      
    SWRST Бит 0 Включение программного сброса
      0  Отключен. Сброс USART исключен из работы
      1  Разрешен. Логика USART удерживается в состоянии сброса
      

    *Применимо к USART0 только в устройствах MSP430x15x и MSP430x16x.

    UxTCTL, регистр управления передачей USART

    7 6 5 4 3 2 1 0
    CKPH CKPL SSELx Не исполь
    зуется
    Не исполь
    зуется
    STC TXEPT
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1


     
    CKPH Бит 7 Выбор фазы тактирования. Управляет фазой UCLK.
      0  Обычная схема тактирования UCLK
      1  Сигнал UCLK отстает на один полупериод
      
    CKPL Бит 6 Выбор полярности тактового сигнала.
      0  Неактивный уровень низкий;
         вывод данных происходит по нарастающему фронту UCLK;
         входные данные защелкиваются по спаду UCLK.
      1  Неактивный уровень высокий;
         вывод данных происходит по спаду UCLK;
         входные данные защелкиваются по нарастающему фронту UCLK.
      
    SSELx Биты 5-4 Выбор источника. Эти биты выбирают источник тактирования для BRCLK
      00  Внешний UCLK (действует только в режиме ведомого)
      01  ACLK (справедливо только для режима ведущего)
      10  SMCLK (справедливо только для режима ведущего)
      11  SMCLK (справедливо только для режима ведущего)
      
    Не используется Биты
    2-3
    Не используется
    STC Бит 1 Управление передачей ведомого.
      0  4-х выводной режим SPI: STE включен
      1  3-х выводной режим SPI: STE выключен
      
    TXEPT Бит 0 Флаг опустошения передатчика. Флаг TXEPT не используется в режиме ведомого.
      0  Передача активна и/или в UxTXBUF находятся данные
      1  UxTXBUF и сдвиговый регистр TX пусты
      

    UxRCTL, регистр управления приемом USART

    7 6 5 4 3 2 1 0
    FE Не исполь
    зуется
    OE Не исполь
    зуется
    Не исполь
    зуется
    Не исполь
    зуется
    Не исполь
    зуется
    Не исполь
    зуется
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0


     
    FE Бит 7 Флаг ошибки фрэйма. Этот бит указывает на конфликт шины, когда MM=1 и STC=0. FE не используется в режиме ведомого.
      0  Конфликт не обнаружен
      1  На STC появился отрицательный фронт, указывая на конфликт при обращении к шине
      
    Не используется Бит 6 Не используется
    OE Бит 5 Флаг ошибки переполнения. Этот бит устанавливается, когда символ перемещен в UxRXBUF до завершения чтения предыдущего символа. OE автоматически сбрасывается, когда UxRXBUF прочитан, когда SWRST=1, а также может быть сброшен программно.
      0  Нет ошибки
      1  Произошла ошибка переполнения
      
    Не используется Биты
    4-0
    Не используется

    UxBR0, регистр 0 управления скоростью передачи USART

    7 6 5 4 3 2 1 0
    27 26 25 24 23 22 21 20
    rw rw rw rw rw rw rw rw

    UxBR1, регистр 1 управления скоростью передачи USART

    7 6 5 4 3 2 1 0
    215 214 213 212 211 210 29 28
    rw rw rw rw rw rw rw rw


     
    UxBRx Биты
    7-0
    Генератор скорости передачи использует содержимое {UxBR1+UxBR0} для установки скорости передачи. Наименьший коэффициент деления равен двум.

    UxMCTL, регистр управления модуляцией USART

    7 6 5 4 3 2 1 0
    m7 m6 m5 m4 m3 m2 m1 m0
    rw rw rw rw rw rw rw rw


     
    UxMCTLx Биты 7-0 Регистр управления модуляцией не используется в режиме SPI и должен быть установлен на 000h.

    UxRXBUF, регистр буфера приема USART

    7 6 5 4 3 2 1 0
    27 26 25 24 23 22 21 20
    r r r r r r r r


     
    UxRXBUFx Биты 7-0 Буфер принятых данных доступен пользователю и содержит последний принятый из сдвигового регистра приема символ. Чтение UxRXBUF сбрасывает бит OE и флаг URXIFGx. В режиме 7-разрядных данных, UxRXBUF выравнивается по младшему разряду, а старший разряд всегда сбрасывается.

    UxTXBUF, регистр буфера передачи USART

    7 6 5 4 3 2 1 0
    27 26 25 24 23 22 21 20
    rw rw rw rw rw rw rw rw




     
    UxTXBUFx Биты 7-0 Буфер передаваемых данных доступен пользователю и содержит текущие передаваемые данные. Когда используется длина символа в 7 бит, данные необходимо выровнять по старшему разряду перед перемещением их в UxTXBUF. Данные передаются начиная со старшего разряда. Запись в UxTXBUF очищает UTXIFGx.

    ME1, регистр 1 включения модуля

    7 6 5 4 3 2 1 0
      USPIE0*          
      rw-0            


     
      Бит 7 Эти биты могут использоваться другими модулями. См. справочные данные конкретного устройства.
    USPIE0* Бит 6 Включение USART0 SPI. Этот бит включает режим SPI для USART0.
      0  Модуль выключен
      1  Модуль включен
      
      Биты 5-0 Эти биты могут использоваться другими модулями. См. справочные данные конкретного устройства.

    * Не используется в устройствах MSP430x12xx. См. ME2 для битов включения модуля USART0 MSP430x12xx.

    ME2, регистр 2 включения модуля

    7 6 5 4 3 2 1 0
          USPIE1       USPIE0**
          rw-0       rw-0


     
      Биты
    7-5
    Эти биты могут использоваться другими модулями. См. справочные данные конкретного устройства.
    USPIE1 Бит 4 Включение USART1 SPI. Этот бит включает режим SPI для USART1.
      0  Модуль выключен
      1  Модуль включен
      
      Биты
    3-1
    Эти биты могут использоваться другими модулями. См. справочные данные конкретного устройства.
    USPIE0** Бит 0 Включение USART0 SPI. Этот бит включает режим SPI для USART0.
      0  Модуль выключен
      1  Модуль включен
      

    ** Только устройства MSP430x12xx

    IE1, регистр 1 разрешения прерываний

    7 6 5 4 3 2 1 0
    UTXIE0* URXIE0*            
    rw-0 rw-0            


     
    UTXIE0* Бит 7 Разрешение прерывания при передаче USART0. Этот бит разрешает прерывание UTXIFG0.
      0  Прерывание не разрешено
      1  Прерывание разрешено
      
    URXIE0* Бит 6 Разрешение прерывания при приеме USART0. Этот бит разрешает прерывание URXIFG0.
      0  Прерывание не разрешено
      1  Прерывание разрешено
      
      Биты 5-0 Эти биты могут быть использованы другими модулями. См. справочные данные конкретного устройства.

    * Не используется в устройствах MSP430x12xx. См. IE2 для битов разрешения прерывания USART0 MSP430x12xx.

    IE2, регистр 2 разрешения прерывания

    7 6 5 4 3 2 1 0
    UTXIE1 URXIE1     UTXIE0** URXIE0**    
    rw-0 rw-0     rw-0 rw-0    


     
      Биты
    7-6
    Эти биты могут использоваться другими модулями. См. справочные данные конкретного устройства.
    UTXIE1 Бит 5 Разрешение прерывания при передаче USART1. Этот бит разрешает прерывание UTXIFG1.
      0  Прерывание не разрешено
      1  Прерывание разрешено
      
    URXIE1 Бит 4 Разрешение прерывания при приеме USART1. Этот бит разрешает прерывание URXIFG1.
      0  Прерывание не разрешено
      1  Прерывание разрешено
      
      Биты
    3-2
    Эти биты могут использоваться другими модулями. См. справочные данные конкретного устройства.
    UTXIE0** Бит 1 Разрешение прерывания при передаче USART0. Этот бит разрешает прерывание UTXIFG0.
      0  Прерывание не разрешено
      1  Прерывание разрешено
      
    URXIE0** Бит 0 Разрешение прерывания при приеме USART0. Этот бит разрешает прерывание URXIFG0.
      0  Прерывание не разрешено
      1  Прерывание разрешено
      

    ** Только в устройствах MSP430x12xx

    IFG1, регистр 1 флагов прерываний

    7 6 5 4 3 2 1 0
    UTXIFG0* URXIFG0*            
    rw-1 rw-0            


     
    UTXIFG0* Бит 7 Флаг прерывания при передаче USART0. UTXIFG0 устанавливается, когда U0TXBUF пуст.
      0  Прерывание не ожидается
      1  Прерывание ожидается
      
    URXIFG0* Бит 6 Флаг прерывания при приеме USART0. URXIFG0 устанавливается, когда в U0TXBUF принят полный символ.
      0  Прерывание не ожидается
      1  Прерывание ожидается
      
      Биты 5-0 Эти биты могут быть использованы другими модулями. См. справочные данные конкретного устройства.

    * Не используется в устройствах MSP430x12xx. См. IFG2 для битов флагов прерывания USART0 MSP430x12xx.

    IFG2, регистр 2 флагов прерываний

    7 6 5 4 3 2 1 0
        UTXIFG1 URXIFG1     UTXIFG0** URXIFG0**
        rw-1 rw-0     rw-1 rw-0


     
      Биты 7-6 Эти биты могут использоваться другими модулями. См. справочные данные конкретного устройства.
    UTXIFG1 Бит 5 Флаг прерывания при передаче USART1. UTXIFG1 устанавливается, когда U1TXBUF пуст.
      0  Прерывание не ожидается
      1  Прерывание ожидается
      
    URXIFG1 Бит 4 Флаг прерывания при приеме USART1. URXIFG1 устанавливается, когда в U1RXBUF принят полный символ.
      0  Прерывание не ожидается
      1  Прерывание ожидается
      
      Биты
    3-2
    Эти биты могут использоваться другими модулями. См. справочные данные конкретного устройства.
    UTXIFG0** Бит 1 Флаг прерывания при передаче USART0. UTXIFG0 устанавливается, когда U0TXBUF пуст.
      0  Прерывание не ожидается
      1  Прерывание ожидается
      
    URXIFG0** Бит 0 Флаг прерывания при приеме USART0. URXIFG0 устанавливается, когда в U0RXBUF принят полный символ.
      0  Прерывание не ожидается
      1  Прерывание ожидается

     

     

    Раздел 15

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

    Универсальный синхронно/асинхронный приемопередающий (USART) периферийный интерфейс поддерживает связь по I2C в модулях USART0 устройств MSP430x15x и MSP430x16x. Этот раздел описывает режим I2C.

    15.1 Введение в модуль I2C

    Модуль управления взаимообменом между интегральными схемами (I2C) обеспечивает интерфейс между MSP430 и I2C-совместимыми устройствами через последовательную двухпроводную шину I2C. Внешние компоненты, подключенные к шине I2C последовательно передают и принимают последовательные данные в/из USART через 2-х проводной I2C-интерфейс.

    Модуль I2C имеет следующие возможности:

    • Соответствует спецификации I2C v2.1 Philips Semiconductor
          - Побитный/побайтный формат передачи
          - 7-разрядный и 10-разрядный режимы адресации устройств
          - Общий вызов
          - Старт/рестарт/стоп
          - Режим приемника передатчик/ведущий со многими ведущими
          - Режим передатчика приемник/ведомый со многими ведущими
          - Комбинированный режим ведущего передача/прием и прием/передача
          - Поддерживаются стандартный режим до 100 кбод и быстрый режим до 400 кбод
    • Встроенный FIFO для буферирования чтения и записи
    • Программируемая генерация тактовых импульсов
    • 16-разрядный доступ к данным для увеличения пропускной способности шины
    • Разработан с учетом пониженного энергопотребления
    • Два триггера DMA
    • Расширенные возможности прерываний
    • Реализован только в USART0

    На рис.15-1 показана блок-схема модуля I2C.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments Рис.15-1. Блок-схема USART: режим I<sup>2</sup>C
    Рис.15-1. Блок-схема USART: режим I2C

    15.2 Функционирование модуля I2C

    Модуль I2C поддерживает любые ведущие и ведомые устройства, совместимые с I2C. На рис.15-2 показан пример шины I2C. Каждое устройство обладает уникальным адресом и может работать и как передатчик и как приемник. Устройство, подключенное к шине I2C, во время передачи данных может рассматриваться как ведущее или ведомое. Ведущий инициирует передачу данных и генерирует тактовый сигнал SCL. Любое устройство, адресованное ведущим, рассматривается как ведомое.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-2. Схема подключений на шине I2C

    При обмене данными на I2C используется вывод последовательных данных (SDA) и вывод последовательного тактирования (SCK). Оба вывода SDA и SCL являются двунаправленными и должны подключаться к положительному источнику напряжения через нагрузочные («подтягивающие») резисторы.

    Примечание: Уровни SDA и SCL
    Уровни напряжения на выводах SDA и SCL не должны быть выше уровня VCC микроконтроллера MSP430.

    15.2.1 Последовательные данные I2C

    При передаче каждого бита ведущим устройством генерируется один тактовый импульс. Модуль I2C работает с данными, организованными побайтно. Сначала перемещается старший значащий разряд, как показано на рис.15-3.

    Первый, после условия «СТАРТ», байт состоит из 7-разрядного адреса ведомого и бита R/nonW. Когда R/nonW=0, ведущий передает данные ведомому. Когда R/nonW=1, ведущее устройство принимает данные от ведомого. Бит ACK посылается приемником после каждого байта на 9-ом такте SCL.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-3. Передача данных модулем I2C

    Данные на SDA должны быть неизменны в течение периода высокого уровня SCL, как показано на рис.15-4. Высокий и низкий уровень SDA может изменяться, только когда SCL имеет низкий уровень, в противном случае будет сгенерировано условие «старт» или «стоп».

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-4. Передача бита на шине I2C

    15.2.2 Условия «СТАРТ» и «СТОП» I2C

    Условия «СТАРТ» и «СТОП», показанные на рис.15-5, генерируются ведущим. Условие «СТАРТ» возникает при переходе с высокого уровня на низкий на линии SDA, когда SCL имеет высокий уровень. Условие «СТОП» появляется при переходе с низкого уровня на высокий на линии SDA при высоком уровне на SCL. Бит занятости I2CBB устанавливается после условия «СТАРТ» и сбрасывается после «СТОП».

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-5. Условия «СТАРТ» и «СТОП» модуля I2C

    15.2.3 Режимы адресации I2C

    Модуль I2C поддерживает 7-разрядный и 10-разрядный режимы адресации.

    7-разрядная адресация

    В 7-разрядном формате адресации, показанном на рис.15-6, первый байт – это 7-разрядный адрес ведомого и бит R/nonW. Бит ACK посылается приемником после каждого байта.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-6. 7-разрядный формат модуля I2C

    10-разрядная адресация

    В 10-разрядном адресном формате, показанном на рис.15-7, первый байт содержит 11110b плюс два старших бита 10-разрядного адреса ведомого и бит R/nonW. Бит ACK посылается приемником после каждого байта. Следующий байт содержит оставшиеся 8 бит 10-разрядного адреса ведомого, завершающиеся битом ACK и 8-разрядными данными.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-7. 10-разрядный адресный формат модуля I2C

    Повторные условия «СТАРТ»

    Направление потока данных на SDA может быть изменено ведущим без первоначального останова передачи, что приведет к повторению условия «СТАРТ». Это вызовет «РЕСТАРТ». После выполнения «РЕСТАРТА» адрес ведомого отправляется снова, но уже с новым направлением данных, заданным битом R/nonW. Условие «РЕСТАРТ» показано на рис.15-8.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-8. Формат адресации модуля I2C с повторным условием «СТАРТ»

    15.2.4 Режимы работы модуля I2C

    Модуль I2C работает в режимах «ведущий передатчик», «ведущий приемник», «ведомый передатчик» или «ведомый приемник».

    Режим ведущего

    В режиме ведущего выполнение передачи и приема управляется с помощью битов I2CRM, I2CSTT и I2CSTP, как описано в таблице 15-1. Режим ведущего приемника вводится установкой I2CTRX=0 после передачи адресного байта ведомого и установленного бита R/nonW. Режимы ведущего передатчика и ведущего приемника показаны на рис.15-9 и рис.15-10.

    SCL удерживается в низком состоянии, когда необходимо вмешательство ЦПУ после передачи байта.

    Таблица 15-1. Функционирование ведущего

    I2CRM I2CSTP I2CSTT Условие или активность шины
    X 0 0 Модуль I2C в режиме ведущего, но свободен. Условия «старт» и «стоп» не генерируются.
    0 0 1 Активность инициируется установкой I2CSTT. I2CNDAT используется для установки длины передачи. Условие «стоп» автоматически не генерируется после перемещения байт, количество которых задано в I2CNDAT. Программное обеспечение должно установить I2CSTP для генерации условия «стоп» в конце передачи.
    0 1 1 I2CNDAT используется для установки длины передачи. Установкой I2CSTT инициируется активность. Условие «стоп» автоматически генерируется после передачи байт, количество которых задано I2CNDAT.
    1 0 1 I2CNDAT не используется для установки длины передачи. Длиной передачи должно управлять программное обеспечение. Установка бита I2CSTT инициирует активность. Для инициирования условия «стоп» или останова активности программное обеспечение должно установить бит I2CSTP. Этот режим используется, если необходимо передать более 256 байт.
    0 1 0 Установка бита I2CSTP генерирует условие «стоп» на шине после отправки количества байт, заданного I2CNDAT или немедленно, если уже передано количество байт, заданное I2CNDAT.
    1 1 0 Установка бита I2CSTP генерирует условие «стоп» на шине после завершения текущей передачи или немедленно, если текущая передача не активна.
    1 1 1 Зарезервировано, шина неактивна.

    Диаграмма состояний I2C

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-9. Режим ведущего передатчика, I2CWORD = 1

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-10. Режим ведущего приемника, I2CWORD = 1

    Арбитраж

    Если два или более передатчиков одновременно начинают передачу на шине, запускается процедура арбитража. На рис.15-11 поясняется процедура арбитража между двумя устройствами. Процедура арбитража использует данные, представленные на SDA конкурирующими передатчиками. Первый ведущий передатчик, генерирующий логическую единицу, отвергается противостоящим ведущим, генерирующим логический сигнал низкого уровня. Процедура арбитража дает приоритет устройству, которое передает поток последовательных данных с наименьшим двоичным значением. Ведущий передатчик, потерявший арбитраж, переключается в режим ведомого приемника и устанавливает флаг потери арбитража ALIFG. Если два или более устройства посылают одинаковые первые байты, арбитраж продолжается на последующих байтах.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-11. Процедура арбитража между двумя ведущими передатчиками

    Если выполняется процедура арбитража, когда на SDA повторяются условия «СТАРТ» или «СТОП», ведущие передатчики, вовлеченные в арбитраж, должны послать повторные условия «СТАРТ» или «СТОП» в том же самом месте в формате фрэйма. Арбитраж не разрешается между:

    • Повторным условием «СТАРТ» и битом данных
    • Условием «СТОП» и битом данных
    • Повторным условием «СТАРТ» и условием «СТОП»

    Режим ведомого

    В режиме ведомого операции передачи и приема управляются автоматически модулем I2C. Режимы ведомого передатчика и ведомого приемника показаны на рис.15-12 и рис.15-13.

    В режиме ведомого приемника биты последовательных данных принимаются на SDA и сдвигаются по тактовым импульсам, генерируемым ведущим устройством. Ведомое устройство не генерирует тактовый сигнал, но может удерживать линию SCL в состоянии низкого уровня, если после приема байта необходимо вмешательство ЦПУ.

    В режим ведомого передатчика можно войти только из режима ведомого приемника. Вход в режим ведомого передатчика происходит, если байт адреса ведомого, переданный ведущим, является таким же адресом, как и его собственный и был послан установленный бит R/W, указывая на запрос отправки данных ведущему. Ведомый передатчик сдвигает последовательные данные из устройства на SDA по импульсам тактирования, генерируемым ведущим устройством. Ведомое устройство не генерирует тактовых сигналов, но может удерживать линию SCL в состоянии низкого уровня, если после передачи байта необходимо вмешательство ЦПУ.

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-12. Ведомый передатчик, I2CWORD=1

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-13. Ведомый приемник, I2CWORD=1

    15.2.5 Регистр данных I2CDR шины I2C

    Регистр I2CDR может быть доступен как 8-разрядный или 16-разрядный регистр, что определяется битом I2CWORD. Функции регистра I2CDR описаны в таблице 15-2.

    Таблица 15-2. Функции регистра I2CDR

    I2CWORD I2CTRX Функция I2CDR
    0 1

    Режим передачи байта: Используется только младший байт. Байт дважды буферизируется. Если новый байт записан до передачи предыдущего байта, новый байт ожидает во временном буфере до момента защелкивания в младшем байте регистра I2CDR. Когда I2CDR доступен, устанавливается бит TXRDYIFG.

    0 0

    Режим приема байта: Используется только младший байт. Байт дважды буферизируется. Если новый байт принят до прочтения предыдущего байта, новый байт ожидает во временном буфере до момента защелкивания в младшем байте регистра I2CDR. Когда I2CDR готов для чтения, устанавливается бит RXRDYIFG.

    1 1

    Режим передачи слова: Первым передается младший байт слова, затем старший байт. Регистр дважды буферизируется. Если новое слово записано до передачи предыдущего слова, новое слово ожидает во временном буфере до момента защелкивания в регистре I2CDR. Когда I2CDR доступен, устанавливается бит TXRDYIFG. Если последние передаваемые данные состоят только из одного байта, старший байт должен содержать нуль. Когда I2CDR готов к доступу, устанавливается бит TXRDYIFG.

    1 0

    Режим приема слова: Первым принимается младший байт слова, затем старший байт. Регистр дважды буферизируется. Если новое слово принято до прочтения предыдущего слова, новое слово ожидает во временном буфере до момента защелкивания в регистре I2CDR. Если последним был принят один байт, тогда старший байт содержит нуль, устанавливается бит I2CSDB. Когда I2CDR готов к доступу, устанавливается бит RXRDYIFG.

    Опустошение при передаче

    В режиме ведущего опустошение происходит, когда сдвиговый регистр передачи и буфер передачи пусты, а I2CNDAT > 0. В режиме ведомого опустошение происходит, когда сдвиговый регистр передачи и буфер передачи пусты, а внешний ведущий I2C все еще запрашивает данные. Когда происходит опустошение при передаче, устанавливается бит I2CTXUDF. Запись данных в регистр I2CDR или сброс бита I2CEN сбрасывает I2CTXUDF. I2CTXUDF используется только в режиме передачи.

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

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

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

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

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-14. Генерация сигналов на линии SCL модуля I2C

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

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

    msp430 Микроконтроллеры семейства MSP430 фирмы Texas Instruments
    Рис.15-15. Синхронизация двух тактовых генераторов I2C во время арбитража

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

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

    В режиме ведомого, а также когда внутренний источник тактирования не задействован, модуль I2C может автоматически обнаруживать стартовый бит для пробуждения ЦПУ. Для включения этой возможности необходимо установить биты STTIE и GIE, чтобы флаг STTIFG мог вызвать прерывание ЦПУ. Когда модуль I2C обнаруживает стартовое условие, устанавливается флаг STTIFG, а линия SCL удерживается модулем в состоянии низкого уровня, останавливая дальнейшую активность на шине. Процедура обработки прерывания должна включить внутренний источник тактирования для модуля I2C, чтобы освободить линию SCL и дать возможность продолжить нормальную работу на шине.

    15.2.8 Использование модуля I2C с контроллером DMA

    Модуль I2C обеспечивает два источника запуска для контроллера DMA. Флаг RXRDYIFG может запустить DMA перенос, когда получены новые данные I2C, флаг TXRDYIFG может запустить DMA перенос, когда модуль I2C нуждается в очередной передаче данных.

    Биты TXDMAEN и RXDMAEN разрешают или запрещают использование контроллера DMA с модулем I2C. Когда RXDMAEN=1, контроллер DMA может использоваться для переноса данных из модуля I2C после приема данных модулем I2C. Когда RXDMAEN=1, RXDYIE автоматически очищается.

    Когда TXDMAEN=1, контроллер DMA может быть использован для переноса данных в модуль I2C для последующей передачи. Когда TXDMAEN=1, TXRDYIE автоматически очищается.

    См. раздел «Контроллер DMA» для выяснения подробностей функционирования контроллера DMA.

    15.2.9 Конфигурирование USART для функционирования I2C

    Контроллер I2C является частью периферии USART. Определение индивидуального бита при использовании USART0 в режиме I2C отличается от режимов SPI или UART. По умолчанию в регистре U0CTL значения для режима UART и он содержит следующие биты:

    Для работы в режимах SPI или I2C необходимо установить бит SYNC. Установка бита SYNC при SWRST=1 выбирает режим SPI. Установка бита I2C, когда SYNC=1 приводит к выбору режима I2C. Биты SYNC и I2C могут быть установлены вместе в одной команде для выбора режима I2C в модуле USART0.

    После инициализации модуля, модуль I2C готов для выполнения операций передачи и приема. Очистка I2CEN прекращает работу модуля.

    Примечание: Переконфигурирование модуля I2C для работы UART или SPI
    Необходим следующий процесс переконфигурирования USART:
    1. Очистка бита I2C (BIC.B #I2C,&U0CTL)
    2. Очистка U0CTL и установка бита SWRST (MOV.B #SWRST,&U0CTL)
    3. Инициализация всех регистров USART установкой SWRST = 1 (включая UxCTL)
    4. Включение модуля USART с помощью MEx SFRs (URXEx и/или UTXEx)
    5. Очистка SWRST программным обеспечением (BIC.B #SWRST,&UxCTL)
    6. Разрешение прерываний (если необходимо) с помощью IEx SFRs (URXIEx и/или UTXIEx)
    Нарушение выполнения этого процесса может привести к непредсказуемому поведению USART.


     
    Примечание: Переконфигурирование модуля I2C для других условий I2C
    Необходим следующий процесс переконфигурирования I2C:
    1. Очистка бита I2CEN (BIC.B #I2CEN,&U0CTL)
    2. Переконфигурирование модуля I2C при I2CEN=0
    3. Установка I2CEN программным обеспечением (BIS.B #I2CEN,&U0CTL)
    Нарушение выполнения этого процесса может привести к непредсказуемому поведению USART.

    Сброс модуля I2C

    После PUC модуль USART сконфигурирован в режиме UART при SWRST=1. В режиме I2C установка I2CEN=0 приведет к следующему результату:

    • Связь по I2C остановится
    • Выводы SDA и SCL перейдут в «третье» состояние
    • В I2CTCTL очистятся биты 3-0, биты 7-4 останутся неизменными
    • Регистры I2CDCTL и I2CDR очистятся
    • Сдвиговые регистры передачи и приема очистятся
    • Содержимое регистров U0CTL, I2CNDAT, I2CPSC, I2CSCLL и I2CSCLH не изменится
    • Содержимое регистров I2COA, I2CSA, I2CIE, I2CIFG и I2CIV не изменится

    15.2.10 Прерывания I2C

    Модуль I2C имеет один вектор прерывания для восьми флагов прерывания. Каждый флаг прерывания имеет собственный бит разрешения прерывания. Когда прерывание разрешено и установлен бит GIE, флаг прерывания будет генерировать запрос прерывания. Следующие события вызывают I2C прерывание:

    Флаг
    прерывания
    Условие прерывания
    ALIFG Потеря арбитража. Арбитраж может быть потерян, когда два или более передатчиков начинают передачу одновременно или когда программное обеспечение пытается инициировать I2C передачу при I2CBB=1. Флаг ALIFG устанавливается, когда арбитраж потерян. Когда ALIFG установлен, биты MST и I2CSTP очищаются и контроллер I2C становится ведомым приемником.
    NACKIFG Прерывание при отсутствии подтверждения. Этот флаг устанавливается, когда ведущий не получил от ведомого подтверждение. NACKIFG используется только в режиме ведущего.
    OAIFG Прерывание собственного адреса. Флаг прерывания OAIFG устанавливается, когда другой ведущий адресует I2C модуль. OAIFG используется только в режиме ведомого.
    ARDYIFG Прерывание «регистр доступен». Этот флаг устанавливается, когда ранее запрограммированный перенос завершен, а биты статуса обновлены. Это прерывание используется для уведомления ЦПУ о том, что регистры I2C готовы к доступу.
    RXRDYIFG Прерывание/статус готовности приема. Этот флаг устанавливается, когда модуль I2C принял новые данные. RXRDYIFG автоматически очищается, когда I2CDR прочитан и буфер приема пуст. Переполнение приемника показывается, если бит I2CRXOVR=1. RXRDYIFG используется только в режиме приема.
    TXRDYIFG Прерывание/статус готовности передачи. Регистр I2CDR готов к новой передаче данных, когда I2CNDAT>0 или I2CRM=1 (режим передачи ведущего) или же когда другой ведущий запрашивает данные (режим передачи ведомого). TXRDYIFG автоматически очищается, когда I2CDR и буфер передачи полны. Опустошение передачи показывается, если I2CTXUDF=1. Не используется в режиме приема.
    GCIFG Прерывание общего вызова. Этот флаг устанавливается, когда модуль I2C принял адрес общего вызова (00h). GCIFG используется только в режим приема.
    STTIFG Прерывание при обнаружении условия старта. Этот флаг устанавливается, когда модуль I2C обнаружил условие старта в режиме ведомого. Это позволяет MSP430 находиться в режиме пониженного энергопотребления с неактивным источником тактирования I2C до инициирования связи ведущим по I2C. STTIFG используется только в режиме ведомого.

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

    Флаги прерывания I2C разделены по приоритетам и объединены в источник одного вектора прерывания. Регистр вектора прерывания I2CIV используется для выяснения, какой флаг запросил прерывание. Разрешенное прерывание с наивысшим приоритетом генерирует число в регистре I2CIV. Это число может быть оценено или добавлено к программному счетчику для автоматического входа в соответствующую программную процедуру. Запрещенные I2C прерывания не воздействуют на содержимое I2CIV.

    При любом доступе (чтение или запись) к регистру 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
      ...                     ; Задача (программный модуль) начинается здесь
      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-3.

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

    Регистр Краткое
    обозначение
    Тип
    регистра
    Адрес Исходное
    состояние
    Разрешение прерывания I2C I2CIE Чтение/запись 050h Сброс с PUC
    Флаг прерывания I2C I2CIFG Чтение/запись 051h Сброс с PUC
    Подсчет данных I2C I2CNDAT Чтение/запись 052h Сброс с PUC
    Управление USART U0CTL Чтение/запись 070h Сброс с PUC
    Управление передачей I2C I2CTCTL Чтение/запись 071h Сброс с PUC
    Управление данными I2C I2CDCTL Только чтение 072h Сброс с PUC
    Прескалер I2C I2CPSC Чтение/запись 073h Сброс с PUC
    «Высокий» SCL I2C I2CSCLH Чтение/запись 074h Сброс с PUC
    «Низкий» SCL I2C I2CSCLL Чтение/запись 075h Сброс с PUC
    Данные I2C I2CDR Чтение/запись 076h Сброс с PUC
    Собственный адрес I2C I2COA Чтение/запись 0118h Сброс с PUC
    Адрес ведомого I2C I2CSA Чтение/запись 011Ah Сброс с PUC
    Вектор прерываний I2C I2CIV Только чтение 011Ch Сброс с PUC

    U0CTL, регистр управления USART0 в режиме I2C

    7 6 5 4 3 2 1 0
    RXDMAEN TXDMAEN I2C XA LISTEN SYNC MST I2CEN
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1


     
    RXDMAEN Бит 7 Разрешение DMA при приеме. Этот бит включает контроллер DMA, чтобы переносить данные из модуля I2C после приема данных модулем I2C. Когда RXDMAEN=1, RXRDYIE автоматически очищается. 0 Выключен 1 Включен
    TXDMAEN Бит 6 Разрешение DMA при передаче. Этот бит включает контроллер DMA, что может быть использовано для переноса данных в модуль I2C для передачи. Когда TXDMAEN=1, TXRDYIE автоматически очищается. 0 Выключен 1 Включен
    I2C Бит 5 Включение режима I2C. Этот бит позволяет выбрать режим I2C или SPI, когда SYNC=1. 0 Режим SPI 1 Режим I2C
    XA Бит 4 Расширенная адресация 0 7-разрядная адресация 1 10-разрядная адресация
    LISTEN Бит 3 Прослушивание. Этот бит устанавливает режим обратной петли. Бит LISTEN действителен только когда MST=1 и I2CTRX=1 (ведущий передатчик). 0 Нормальный режим 1 SDA внутренне подключается назад к приемнику (обратная петля)
    SYNC Бит 2 Включение синхронного режима 0 Режим UART 1 Режим SPI или I2C
    MST Бит 1 Выбор режима ведущий/ведомый. Этот бит выбирает режим ведомого или ведущего. Бит MST автоматически очищается при потере арбитража. 0 Режим ведомого 1 Режим ведущего
    I2CEN Бит 0 Включение I2C. Бит включает или выключает модуль I2C. В исходном состоянии он установлен, и для UART или SPI функционирует как SWRST. Когда первыми после PUC устанавливаются биты I2C и SYNC, этот бит функционирует как I2CEN и автоматически очищается. 0 Работа I2C запрещена. 1 Работа I2C разрешена.

    I2CTCTL, регистр управления передачей в режиме I2C

    7 6 5 4 3 2 1 0
    I2CWORD I2CRM I2CSSELx I2CTRX I2CSTB I2CSTP I2CSTT
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0

    Модифицируется, только когда I2CEN=0

    I2CWORD Бит 7 Режим слова I2C. Выбирается режим байта или слова для регистра данных I2C. 0 Режим байта 1 Режим слова
    I2CRM Бит 6 Режим повтора I2C 0 I2CNDAT определяет количество переданных байтов 1 Количество передаваемых байт определяется программным обеспечением. I2CNDAT не используется.
    I2CSSELx Биты
    5-4
    Выбор источника тактирования I2C. Когда MST=1 и арбитраж потерян, автоматически используется внешний сигнал SCL. 00 Нет тактирования – модуль I2C неактивен 01 ACLK 10 SMCLK 11 SMCLK
    I2CTRX Бит 3 Передача I2C. Этот бит выбирает функцию передачи или приема для контроллера I2C, когда MST=1. Когда MST=0, бит R/W байта адреса определяет направление данных и I2CTRX отражает направление вывода SDA. 0 Режим приема. Данные принимаются на выводе SDA. 1 Режим передачи. Данные передаются на выводе SDA.
    I2CSTB Бит 2 Стартовый байт. Установка бита I2CSTB при MST=1 инициирует стартовый байт. 0 Нет действия 1 Отправка условия СТАРТ, стартового байта (03h), но не условия останова.
    I2CSTP Бит 1 Бит стоп. Этот бит используется для генерации условия СТОП. После условия СТОП бит I2CSTP автоматически очищается. 0 Нет действия 1 Отправка условия СТОП
    I2CSTT Бит 0 Бит старт. Этот бит используется для генерации условия СТАРТ. После условия СТАРТ бит I2CSTT автоматически очищается. 0 Нет действия 1 Отправка условия СТАРТ
     

     

    I2CDCTL, регистр управления данными I2C

    7 6 5 4 3 2 1 0
    Не исполь
    зуется
    Не исполь
    зуется
    Не исполь
    зуется
    I2C
    SCLLOW
    I2XSBD I2XTXUDF I2CRXOVR I2CBB
    r0 r0 r0 r-0 r-0 r-0 r-0 r-0


     
    Не исполь
    зуется
    Биты
    7-5
    Не используются. Всегда читаются как 0.
    I2C
    SCLLOW
    Бит 4 «Низкий» SCL I2C. Этот бит показывает, что ведомый удерживает линию SCL в низком состоянии, когда MSP430 – ведущий. Этот бит не используется в режиме ведомого. 0 SCL не удерживается в состоянии низкого уровня. 1 SCL удерживается в состоянии низкого уровня.
    I2CSBD Бит 3 Один байт данных I2C. Этот бит показывает, что содержится в регистре приема – слово или байт. Бит I2CSBD действителен только когда I2CWORD=1. 0 Слово было принято полностью 1 В I2CDR достоверен только младший байт
    I2CTXUDF Бит 2 Опустошение при передаче I2C 0 Опустошения нет 1 Произошло опустошение при передаче
    I2CRXOVR Бит 1 Переполнение при приеме I2C. 0 Переполнения при приеме не произошло. 1 Произошло переполнение при приеме.
    I2CBB Бит 0 Бит занятости I2C. Условие старта устанавливает I2CBB в 1. I2CBB сбрасывается условием стоп или при I2CEN=0. 0 Не занято 1 Занято

    I2CDR, регистр данных I2C

    15 14 13 12 11 10 9 8
    Старший байт данных I2C (передается вторым)
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0


     
    7 6 5 4 3 2 1 0
    Младший байт данных I2C
    (передается первым)
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0


     
    I2CDRx Биты
    15-0
    Данные I2C

    I2CNDAT, регистр подсчета переданных байтов I2C

    7 6 5 4 3 2 1 0
    I2CNDATx
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0


     
    I2CNDATx Биты
    7-0
    Количество байтов I2C. Эти биты обеспечивают автоматический подсчет байтов данных. В режиме слова I2CNDATx должен иметь четное значение.
      Запись в регистр:             Количество байтов
      Чтение из регистра, I2CBB=1:  Количество байтов, остающихся при передаче
      Чтение из регистра, I2CBB=0:  Количество байтов, которые были переданы
      


     
    Примечание: Регистр I2CNDAT
    Не изменяйте регистр I2CNDAT, когда I2CBB=1 и I2CRM=0.

    I2CPSC, регистр прескалера тактирования I2C

    7 6 5 4 3 2 1 0
    I2CPSCx
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0

    Модифицируется, только когда I2CEN=0

    I2CPSCx Биты
    7-0
    Прескалер тактирования I2C. Входная тактовая частота I2C делится содержимым I2CPSCx, обеспечивая внутреннюю тактовую частоту I2C. Коэффициент деления равен I2CPSC+1.
    000h Деление на 1
    001h Деление на 2
    .
    .
    0FFh Деление на 256

    I2CSCLH, сдвиговый регистр высокого уровня сигналов тактирования I2C

    7 6 5 4 3 2 1 0
    I2CSCLHx
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0


     

    Модифицируется, только когда I2CEN=0

    I2CSCLHx Биты 7-0 Сдвиговый регистр высокого уровня тактовых импульсов I2C. Эти биты определяют продолжительность высокого уровня сигнала на SCL, когда контроллер I2C находится в режиме ведущего. Длительность высокого уровня SCL составляет (I2CSCLH + 2) * I2CPSC.
    000h Не используется
    001h Не используется
    002h Не используется
    003h Длительность высокого уровня SCL = 5 * I2CPSC
    .
    .
    0FFh Длительность высокого уровня SCL = 257 * I2CPSC

    I2CSCLL, сдвиговый регистр низкого уровня сигналов тактирования I2C

    7 6 5 4 3 2 1 0
    I2CSCLLx
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0

    Модифицируется, только когда I2CEN=0

    I2CSCLLx Биты
    7-0
    Сдвиговый регистр низкого уровня тактовых импульсов I2C. Эти биты определяют продолжительность низкого уровня сигнала на SCL, когда контроллер I2C находится в режиме ведущего. Длительность низкого уровня SCL составляет (I2CSCLL + 2) * I2CPSC.
    000h Не используется
    001h Не используется
    002h Не используется
    003h Длительность низкого уровня SCL = 5 * I2CPSC
    .
    .
    0FFh Длительность низкого уровня SCL = 257 * I2CPSC

    I2COA, регистр собственного адреса I2C в 7-разрядном адресном режиме

    15 14 13 12 11 10 9 8
    0 0 0 0 0 0 0 0
    r0 r0 r0 r0 r0 r0 rw-0 rw-0


     
    7 6 5 4 3 2 1 0
    0 I2COAx
    r0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0

    Модифицируется, только когда I2CEN=0

    I2COAx Биты
    15-0
    Собственный адрес I2C. Регистр I2COA содержит локальный адрес контроллера I2C MSP430. Регистр I2COA выровнен по правому краю. Старшим битом (MSB) является 6-ой бит. Биты 15-7 всегда равны 0.

    I2COA, регистр собственного адреса I2C в 10-разрядном адресном режиме

    15 14 13 12 11 10 9 8
    0 0 0 0 0 0 I2COAx
    r0 r0 r0 r0 r0 r0 rw-0 rw-0


     
    7 6 5 4 3 2 1 0
    I2COAx
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0

    Модифицируется, только когда I2CEN=0

    I2COAx Биты
    15-0
    Собственный адрес I2C. Регистр I2COA содержит локальный адрес контроллера I2C MSP430. Регистр I2COA выровнен по правому краю. Старшим битом (MSB) является 9-ый бит. Биты 15-10 всегда равны 0.

    I2CSA, регистр адреса ведомого I2C в 7-разрядном адресном режиме

    15 14 13 12 11 10 9 8
    0 0 0 0 0 0 0 0
    r0 r0 r0 r0 r0 r0 r0 r0


     
    7 6 5 4 3 2 1 0
    I2CSAx
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0


     
    I2CSAx Биты
    15-0
    Адрес ведомого I2C. Регистр I2CSA содержит адрес внешнего ведомого устройства, которое адресуется MSP430. Он используется только в режиме ведущего. Регистр I2CSA выровнен по правому краю. Старшим битом (MSB) является 6-ой бит. Биты 15-7 всегда равны 0.

    I2CSA, регистр адреса ведомого I2C в 10-разрядном адресном режиме

    15 14 13 12 11 10 9 8
    0 0 0 0 0 0 I2CSAx
    r0 r0 r0 r0 r0 r0 rw-0 rw-0


     
    7 6 5 4 3 2 1 0
    I2CSAx
    rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0


     
    I2CSAx Биты
    15-0
    Адрес ведомого I2C. Регистр I2CSA содержит адрес внешнего ведомого устройства, которое адресуется MSP430. Он используется только в режиме ведущего. Регистр I2CSA выровнен по правому краю. Старшим битом (MSB) является 9-ый бит. Биты 15-10 всегда равны 0.

     

     

     

     

     

     

     

     

    содержание      ..     3      4      5      6     ..