Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MSP430_A.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
163.33 Кб
Скачать

3.9.3.5 Регистры модуля usart в режиме i2c

Регистры I2C представлены в таблице ?

Таблица ?

Имя

Назначение регистра

Адрес

Нач.значен.

U0CTL

Управление USART0

70h

1

I2CTCTL

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

71h

0

I2CDCTL

Контроль данных I2C

72h

0

I2CPSC

Управление предделителя

73h

0

I2CSCLH

Управление длительностью SCL в 1

74h

0

I2CSCLL

Управление длительностью SCL в 0

75h

0

I2CDRB/I2CDRW

Буфер приемника приемопередатчика

76h

0

I2CNDAT

Счетчик байтов транзакции

52h

0

I2CIE

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

50h

0

I2CIFG

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

51h

0

I2COA

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

118h

0

I2CSA

Адрес ведомого при обращении

11Ah

0

I2CIV

Регистр идентификации прерывания

11Ch

0

  • U0CTL (USART Control) – 8-ми битный регистр, доступен по записи и чтению. Содержит биты управления USART.

7 6 5 4 3 2 1 0

RXDMAEN

TXDMAEN

I2C

XA

LISTEN

SYNC

MST

I2CEN

  • Бит 7 – RXDMAEN – разрешение работы DMA контроллера при приеме данных:

0 – DMA запрещен;

1 – DMA разрешен.

  • Бит 6 – TXDMAEN – разрешение работы DMA контроллера при передаче данных:

0 – DMA запрещен;

1 – DMA разрешен.

  • Бит 5 – I2C – для работы в режиме I2C должен быть установлен в 1;

  • Бит 4 – XA (Extended Addressing) – сбрасывается/устанавливается программно для задания режима 7-ми/10-ти битного адреса;

  • Бит 3 – LISTEN – прослушивание. При установка этого бита в 1 происходит внутреннее замыкание сдвигового регистра передатчика на сдвиговый регистр приемника. Назначение этого бита не совсем понятно, т.к. мастер – передатчик в любом случае прослушивает линию SDA на предмет определения коллизий. Вероятно, этот бит в режиме I2C является рудиментным и «достался в наследство» от режимов UART и SPI.

  • Бит 2 – SYNC - для работы в режиме I2C должен быть установлен в 1;

  • Бит 1 – MST (Master) – определяет режим работы модуля:

0 –режим ведомого;

1 – режим ведущего.

  • Бит 0 – I2CEN – установка/сброс этого бита разрешает/запрещает работу модуля I2C.

  • I2CTCTL (I2C Transmit Control) – 8-ми битный регистр управления передатчика. Биты 7..4 могут быть модифицированы только при условии I2CEN=0.

7 6 5 4 3 2 1 0

I2CWORD

I2CRM

I2CSSEL1,0

I2CTRX

I2CSTB

I2CSTP

I2CSTT

  • Бит 7 – I2CWORD – установка/сброс этого бита задает словный/байтовый формат при обращении к регистру I2CDR;

  • Бит 6 – I2CRM – (Repeat mode) – режим использования регистра I2CNDAT.

0 – содержимое регистра I2CNDAT определяет количество байтов

в транзакции;

1 – количество байтов в транзакции определяется программно,

содержимое I2CNDAT игнорируется.

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

  • Бит 5,4 – I2CSSEL1,0 (Clock Source Select) – комбинация этих бит выбирает источник тактирования I2C модуля

I2CSSEL1

I2CSSEL0

Источник

0

0

I2C модуль не активен

0

1

ACLK

1

0

SMCLK

1

1

SMCLK



  • Бит 3 – I2CTRX - установка/сброс этого бита задает режим передачи/приема данных в том случае, если модуль конфигурирован как ведущий. Если модуль конфигурирован как ведомый, этот бит должен быть сброшен.

  • Бит 2 – I2CSTB (Start Byte) – в том случае, если модуль конфигурирован как мастер, установка этого бита инициирует передачу стартового байта (код 01h) после генерации стартового состояния шины.

  • Бит 1 – I2CSTP (Stop) – установка этого бита вызывает генерацию стопового состояния шины. После того, как данная операция выполнена, этот бит автоматически сбрасывается.

  • Бит 0 – I2CSTT (Start) – установка этого бита вызывает генерацию стартового состояния шины. После того, как данная операция выполнена, этот бит автоматически сбрасывается.

  • I2CDCTL (I2C Transmit Control) – 8-ми битный регистр содержит биты позволяющие определить текущее состояние шины. Регистр доступен только по чтению

7 6 5 4 3 2 1 0

-

I2CBUSY

I2CSCLLOW

I2CSBD

I2CTXUDF

I2CRXOVR

I2CBB

  • Бит 7,6 – не используются.

  • Бит 5 – I2CBUSY – модуль I2C занят. Устанавливается аппаратно если I2C модуль активизируется, в противном случае сбрасывается.

  • Бит 4 – I2CSCLLOW – устанавливается аппаратно, если ведомое устройство удерживает линию SCL в состоянии логического нуля, в противном случае сбрасывается. Бит используется только в режиме ведущего.

  • Бит 3 – I2CSBD (Single Byte Data) – единичный байт данных. Бит используется только в режиме 16-ти битного формата данных. Устанавливается аппаратно в единицу, если буфер приемника принял младший байт слова, сбрасывается аппаратно, когда все слово принято.

  • Бит 2 – I2CTXUDF (Transmit Underflow) – истощение передатчика. В режиме ведущего устанавливается если буферный и сдвиговый регистр передатчика не имеют данных для передачи. В режиме ведомого устанавливается в случае, если сдвиговый и буферный регистры передатчика пусты, а мастер продолжает запрашивать данные по шине, генерируя импульсы SCL. Сбрасывается после записи новых данных в буфер передатчика.

  • Бит 1 – I2CRXOVR (Receive Overrun) – переполнение приемника. Устанавливается в том случае, если сдвиговый регистр принял очередной байт, а предыдущий байт не был вычитан из буфера. В этом случае потеря данных не происходит, т.к. приемник автоматически блокирует дальнейшую передачу, удерживая линию SCL в состоянии логического нуля.

  • Бит 0 – I2CBB (Bus Busy) – шина занята. Устанавливается в единицу после обнаружения на шине стартового состояния, сбрасывается после стопового состояния.

  • I2CDR (I2C Data Register) – 8-ми иди 16-ти разрядный буфер данных приемопередатчика. В том случае, если используется словный формат данных ( I2CWORD=1) любая попытка модификации этого регистра с помощью байтовых форм инструкции будет игнорирована.

  • I2CNDAT (Number Data) – 8-ми разрядный регистр, поддерживающий автоматический подсчет переданных/принятых байт в режиме ведущего. Если используется 16-ти разрядный формат данных, его содержимое должно быть четным.

  • I2CPSC (Clock Prescaler) – делитель входной частоты тактирования I2C модуля для формирования скорости приема/передачи данных. Коэффициент деления при этом рассчитывается как I2CPSC+1. Не рекомендуется задавать значения этому регистру больше чем 4. Содержимое этого регистра может быть модифицировано при условии I2CEN=0.

  • I2CSCLH (SCL High) – 8-ми разрядный регистр, используемый для задания длительности сигнала SCL, когда он находится в состоянии логической единицы. Длительность сигнала определяется по формуле (I2CSCL+2)*/(I2CPSC+1)/ Fin, где Fin – частота тактирования модуля I2C. Приведенная формулы верна для значений I2CSCL=4..255, для значений I2CSCL=0..5, длительность рассчитывается по формуле 5*/(I2CPSC+1)/ Fin. Содержимое этого регистра может быть модифицировано при условии I2CEN=0.

  • I2CSCLL (SCL Low) – 8-ми разрядный регистр, используемый для задания длительности сигнала SCL, когда он находится в состоянии логической нуля. Расчет длительности проводится также как для регистра I2CSCLH. Содержимое этого регистра может быть модифицировано при условии I2CEN=0.

  • I2COA (Own Address) – собственный адрес. 16-разрядный регистр, куда записывается собственный адрес в том случае, если контроллер используется как ведомое устройство. Содержимое этого регистра может быть модифицировано при условии I2CEN=0.

  • I2CSA (Slave Address) – адрес ведомого. Содержимое этого 16-ти регистра передается автоматически после генерации стартового состояния. Регистр используется, если задан режим мастера шины.

  • I2CIFG (Interrupt Flag) – регистр содержит флаги требования прерывания. Все флаги устанавливаются аппаратно. Сброс большинства флагов осуществляется либо аппаратно при вычитывании соответствующего кода прерывания из регистра I2CIV (см. ниже), либо программно.

7 6 5 4 3 2 1 0

STTIFG

GCIFG

TXRDYIFG

RXRDYIFG

ARDYIFG

OAIFG

NACKIFG

ALIFG

    • Бит 7 – STTIFG (Start) – флаг требования прерывания при распознании стартового состояния шины. Используется только в режиме ведомого.

    • Бит 6 – GCIFG (Global Call) – флаг требования прерывания при регистрации общего вызова. Используется только в режиме приемника.

    • Бит 5 – TXRDYIFG (Transmit Ready) – флаг требования прерывания при готовности буфера передатчика. Сбрасывается также аппаратно, если имеются данные в сдвиговом и буферном регистрах. Не используется в режиме приемника.

    • Бит 4 – RXRDYIFG (Receive Ready) – флаг требования прерывания при приеме нового байта данных. Сбрасывается также аппаратно после вычитывания данных из буфера I2CDR, и не имеется новых данных для записи в буфер. Используется только в режиме приемника.

    • Бит 3 – ARDYIFG (Access Ready) – флаг требования прерывания по готовности регистров к доступу. Логика установки этого бита зависит от режима работы модуля I2C:

      • ведущий передатчик, I2CRM=0 – все данные переданы;

      • ведущий передатчик, I2CRM=1 – все данные переданы и бит I2CSTP=1;

      • ведущий приемник, I2CRM=0 – все данные, согласно содержимому I2CNDAT, приняты и вычитаны из I2CDR;

      • ведущий приемник, I2CRM=1 – принят и вычитан последний байт и бит I2CSTP=1;

      • ведомый передатчик – обнаружено стоповое состояние шины;

      • ведомый приемник – обнаружено стоповое состояние шины и все данные вычитаны.

    • Бит 2 – OAIFG (Own Address) – флаг требования прерывания при распознавании собственного адреса. Используется только в режиме ведомого;

    • Бит 1 – NACKIFG (No Acknowledge)) – флаг требования прерывания при отсутствии подтверждения на переданный байт данных. Используется только в режиме ведущего.

    • Бит 0 – ALIFG (Arbitration Lost) – флаг требования прерывания при потере арбитража. Используется только в режиме ведущего передатчика. При установке этого флага, режим автоматически переключается на ведомый приемник.

  • I2CIE (Interrupt Enable) – разрешение прерывания. Установка/сброс битов этого регистра разрешают/запрещают соответствующие прерывания.

7 6 5 4 3 2 1 0

STTIE

GCIE

TXRDYIE

RXRDYIE

ARDYIE

OAIE

NACKIE

ALIE

    • Бит 7 – STTIE (Start) – разрешение прерывания при установке флага STTIFG;

    • Бит 6 – GCIE (Global Call) – разрешение прерывания при установке флага GCIFG;

    • Бит 5 – TXRDYIE (Transmit Ready) – разрешение прерывания при установке флага TXRDYIFG;

    • Бит 4 – RXRDYIE (Receive Ready) – разрешение прерывания при установке флага RXRDYIFG;

    • Бит 3 – ARDYIE (Access Ready) – разрешение прерывания при установке флага ARDYIFG ;

    • Бит 2 – OAIE (Own Address) – разрешение прерывания при установке флага OAIFG;

    • Бит 1 – NACKIE (No Acknowledge) – разрешение прерывания при установке флага NACKIFG;

    • Бит 0 – ALIE (Arbitration Lost) – разрешение прерывания при установке флага ALIFG;

  • I2CIV (Interrupt Vector) – регистр идентификации прерывания от I2C модуля. Доступен только для чтения и содержит следующие коды:

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

    • 2 – прерывание при потере арбитража (ALIFG);

    • 4 – прерывание при отсутствии подтверждения (NACKIFG);

    • 6 – прерывание при распознании собственного адреса (OAIFG);

    • 8 – прерывание при передачи адреса ведомого (ARDYIFG);

    • 10 – прерывание по готовности данных по чтению (RXRDYIFG);

    • 12 – прерывание по готовности передатчика (TXRDYIFG);

    • 14 – прерывание при общем вызове (GCIFG);

    • 16 – прерывание при обнаружении стартового состояния (STTIFG).

Техника работы с этим регистром аналогична описанной в п.3.7.

ПРИМЕР

Ведомому устройству с адресом 1010000b передать по шине I2C тринадцать байт данных, расположенных в памяти, начиная с адреса 24Ah. Частота SMCLK – 8 MHz, скорость передачи по шине – 100kHz (длительность 1 SCL – 4.7 us, длительность 0 SCL – 4 us).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]