ADDR - регистр адреса подчиненного модуля TWI 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

ADDR - регистр адреса подчиненного модуля TWI



Бит                  
+0x04
DATA[7:0]
DATA
Чтение/запись Чт/Зап Чт/Зап Чт/Зап Чт/Зап Чт/Зап Чт/Зап Чт/Зап Чт/Зап
Нач значение                

Регистр данных (DATA) используется для передачи и приема данных. Передача и приема данных выполняется путем логических сдвигов регистра DATA через линию SDA. Из этого следует, что доступ к регистру DATA во время передачи байта невозможен (блокируется на аппаратном уровне). Доступ к регистру данных возможен, только если линия SCL удерживается подчиненным устройством в низком состоянии, т.е. когда бит CLKHOLD равен единице.

Когда ведущее устройство считывает данные из подчиненного, подлежащие отправке данные должны быть записаны в регистр DATA. Передача байта начинается, когда ведущее устройство передаст бит подтверждения, а затем запустит синхронизацию для передачи подчиненным устройством байта данных. Флаги DIF и CLKHOLD становятся равными единице.

Когда ведущее устройство записывает данные в подчиненное устройство и, в результате такой операции, в регистр DATA принят один байт данных, флаги DIF и CLKHOLD станут равными единице. Если активизирован режим SMART, то чтение из регистра DATA инициирует выполнение заданной битом ACKACT операции.

Доступ к регистру DATA приводит к сбросу флагов прерываний подчиненного модуля и флага CLKHOLD.

Нет

 

ADDRMASK - регистр маски адреса подчиненного модуля TWI

Бит                  
+0x05
ADDRMASK[7:1] ADDREN
ADDRMASK
Чтение/запись Чт/Зап Чт/Зап Чт/Зап Чт/Зап Чт/Зап Чт/Зап Чт/Зап Чт/Зап
Нач значение                

· Биты 7:1 - ADDRMASK[7:1]: направление чтение/запись

Данные биты регистра ADDRMASK могут использоваться в качестве второго регистра сравнения адреса или в качестве регистра маски адреса, что зависит от значения бита ADDREN.

Если ADDREN равен нулю, ADDRMASK используется в роли 7-битного регистра маски адреса подчиненного устройства. В таком случае, каждый бит ADDRMASK будет маскировать (исключать из процедуры сравнения) соответствующие биты адреса регистра ADDR. Если бит маски равен единице, то результат сравнения соответствующих бит принятого адреса и регистра ADDR игнорируется. Проще говоря, маскированные биты всегда считаются совпавшими.

Если ADDREN равен единице, в сравнении принимаемого адреса, помимо регистра ADDR, будет участвовать заданное битами ADDRMASK значение. В этом режиме принимаемый адрес сравнивается с двумя значениями: одно в регистре ADDR и еще одно, заданное битами ADDRMASK.

· Бит 0- ADDREN: назначение бит ADDRMASK

По умолчанию, данный бит равен нулю и биты ADDRMASK выступают в роли маски адреса для регистра ADDR.

Если же данный бит равен единице, биты ADDRMASK, в дополнение к регистру ADDR, будут участвовать в сравнении с принятым адресом.

Обзор регистров модуля TWI

Адрес Наименование Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
+0x00 CTRL - - - - - - SDAHOLD EDIEN
+0x01 MASTER Смещение адреса для ведущего модуля TWI
+0x08 SLAVE Смещение адреса для подчиненного модуля TWI

Обзор регистров ведущего модуля TWI

Адрес Наименование Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
+0x01 CTRLA INTLVL[1:0] RIEN WIEN ENABLE - - -
+0x02 CTRLB - - - - TIMEOUT[1:0] QCEN SMEN
+0x03 CTRLC - - - - - ACKACT CMD[1:0]
+0x04 STATUS RIF WIF CLKHOLD RXACK ARBLOST BUSERR BUSSTATE[1:0]
+0x05 BAUD BAUD[7:0]
+0x06 ADDR ADDR[7:0]
+0x07 DATA DATA[7:0]

Обзор регистров подчиненного модуля TWI

Адрес Наименование Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
+0x00 CTRLA INTLVL[1:0] DIEN APIEN ENABLE PIEN TPMEN SMEN
+0x01 CTRLB - - - - - ACKACT CMD[1:0]
+0x02 STATUS DIF APIF CLKHOLD RXACK COLL BUSERR DIR AP
+0x03 ADDR ADDR[7:0]
+0x04 DATA DATA[7:0]
+0x05 ADDRMASK ADDRMASK[7:1] ADDREN

Обзор векторов прерываний

Таблица 19.9. Векторы прерываний модуля TWI и значения смещений их адресов

Смещение Источник Описание прерывания
0x00 MASTER_vect Вектор прерывания ведущего модуля TWI
0x02 SLAVE_vect Вектор прерывания подчиненного модуля TWI

Последовательный интерфейс SPI

Отличительные особенности

· Полнодуплексная, синхронная передача данных по трем линиям

· Ведущая или подчиненная работа

· Первым передается младший или старший бит данных

· Восемь программно-выбираемых скоростей

· Флаг прерывания по завершению передачи

· Флаг ошибочной записи в регистр данных

· Возобновление активной работы МК из режима IDLE

· Ведущий режим с удвоенной скоростью (CK/2)

Обзор

Последовательный интерфейс SPI - интерфейс для высокоскоростной синхронной передачи данных с использованием трех или четырех выводов ИС. С его помощью можно организовать высокоскоростное соединение между МК XMEGA и внешними ИС, а также между несколькими микроконтроллерами AVR. Интерфейс SPI поддерживает полнодуплексную передачу данных.

Устройство, подключенное к шине, должно действовать как ведущее устройство или как подчиненное. Ведущее устройство инициирует транзакции передачи данных и полностью ими управляет. Взаимодействие между ведущим и подчиненным ЦПУ через интерфейс SPI показано на рисунке 20.1. Система состоит из двух сдвиговых регистров, а также генератора синхронизации на стороне ведущего устройства.

Ведущий SPI инициирует цикл связи установкой низкого уровня на выводе выбора подчиненного устройства (SS) той ИС, с которой необходимо установить соединение. Подлежащие передаче данные ведущее и подчиненное устройства помещают в сдвиговые регистры. После этого, ведущее устройство начинает генерировать импульсы синхронизации на линии SCK, что приводит к взаимному обмену данными. Передача данных сдвигом в направлении от ведущего устройства к подчиненному всегда выполняется на линии MOSI, а передача в обратном направлении - на линии MISO. После передачи каждого пакета данных, ведущее устройство, в целях синхронизации подчиненного устройства, может перевести линию SS в высокое состояние.


Рисунок 20.1. Механизм взаимодействия ведущего и подчиненного модулей SPI

Модуль SPI микроконтроллеров XMEGA оснащен одноуровневой буферизацией в канале передачи и двухуровневой буферизацией в канале приема. Это означает, что подлежащие передаче байты данных, нельзя поместить в регистр данных модуля SPI пока полностью не завершится цикл сдвигов. Во время приема данных, принятую посылку необходимо успеть считать прежде, чем завершится прием очередной посылки. В противном случае, первый байт данных будет потерян.

В подчиненном режиме SPI, логика управления выполняет выборку поступающего на вход SCK сигнала. Чтобы гарантировать корректность выборок сигнала синхронизации, необходимо соблюдать требования к длительности низкого и высокого уровней импульсов синхронизации: длительность и низкого и высокого уровней должна быть не менее 2 циклов синхронизации ЦПУ.

После разрешения работы модуля SPI, вступают в силу альтернативные настройки направления на выводах MOSI, MISO, SCK и SS в соответствии с таблицей 20.1. Выводы, которые отмечены как "задается пользователем", должны быть настроены программно.

Таблица 20.1. Перекрытие модулем SPI настроек порта ввода-вывода

Вывод Направление для ведущего SPI Направление для подчиненного SPI
MOSI Задается пользователем Вход
MISO Вход Задается пользователем
SCK Задается пользователем Вход
/SS Задается пользователем Вход

Ведущий режим

Когда интерфейс SPI используется как ведущий, автоматическое управление линией SS не производится. Вывод SS необходимо настроить как выход и им необходимо управлять из программы пользователя. Если к шине подключено несколько подчиненных и/или ведущих устройств, то ведущий модуль SPI может использовать любые имеющиеся у МК линии ввода-вывода общего назначения для управления линией SS каждого подключенного к шине подчиненного устройства.

После записи байта в регистр данных включается в работу генератор синхронизации шины SPI и выполняется передача сдвигом восьми бит данных в подчиненное устройство. По завершении сдвига одного байта, генератор синхронизации шины SPI останавливается и устанавливается флаг прерывания модуля SPI. Записью нового байта в регистр данных ведущее устройство может продолжить передачу данных. Кроме того, он может сигнализировать о завершении передачи данных установкой низкого уровня на линии SS. Последний принятый байт данных сберегается в буферном регистре.

Если вывод SS настроен как вход, необходимо учитывать, что работа ведущего устройства будет возможной, только если на этом входе будет присутствовать высокий уровень. Если же вывод SS будет работать как вход и на нем будет присутствовать низкий уровень, то модуль SPI будет интерпретировать такую ситуацию, как попытку другого ведущего устройства получить управление над шиной. Во избежание конфликтов на шине, ведущее устройство выполняет следующие действия:

· Переходит в подчиненный режим.

· Устанавливает флаг прерывания модуля SPI.

Подчиненный режим

Когда интерфейс SPI настроен как подчиненный, он будет находиться в состоянии ожидания до тех пор, пока на выводе SS будет присутствовать высокий уровень, при этом, линия MISO будет находиться в высокоимпедансном состоянии. Когда модуль находится в состоянии ожидания, программа имеет возможность обновления содержимого регистра данных, но данные не будут передаваться сдвигом даже при наличии импульсов синхронизации на линии SCK. После установления низкого уровня на выводе SS и при условии настройки вывода MISO как выхода, подчиненный модуль начнет передачу данных сдвигом по первому импульсу синхронизации на линии SCK. По завершении передачи сдвигом одного байта данных, становится равным единице флаг прерывания модуля SPI. Подчиненный модуль может разместить новые данные для передачи в регистре до чтения принятых данных. Последний принятый байт данных сберегается в буферном регистре.

Если вход SS вновь переходит в высокое состояние, это приведет к сбросу логики SPI и невозможности дальнейшего приема данных. Если это произойдет во время передачи, то все частично принятые сдвиговым регистром данные будут потеряны.

Вывод SS используется для сигнализации начала и окончания передачи. Он также полезен для синхронизации пакетов/посылок за счет поддержания синхронизма счетчика бит подчиненного устройства и генератора синхронизации в ведущем устройстве.

Режимы SPI

Возможны четыре комбинации фазы и полярности сигнала SCK по отношению к сигналам данных. Передача данных по интерфейсу SPI выполняется в форматах, показанных на рисунке 20.2. Биты данных передаются сдвигом и защелкиваются по противоположным фронтам сигнала SCK. Этим гарантируется достаточность времени для стабилизации сигналов данных.

Таблица 20.2. Режимы SPI

Режим Передний фронт Задний фронт
  Нарастающий; выборка Падающий; установка
  Нарастающий; установка Падающий; выборка
  Падающий; выборка Нарастающий; установка
  Падающий; установка Нарастающий; выборка

Передний фронт - фронт, с которого начинается период импульсов синхронизации. Задний фронт - фронт, которым заканчивается период импульсов синхронизации.

Рисунок 20.2. Режимы передачи SPI

Поддержка DMA

Поддержка DMA модулем SPI доступна только в подчиненном режиме. Подчиненный модуль SPI может запустить DMA-передачу после заполнения в результате сдвигов регистра данных. При необходимости поддержки DMA в ведущем режиме, можно воспользоваться модулем USART, настроенный на работу в режиме SPI. Более детально об этом см. в разделе 21.10 "USART в режиме ведущий SPI".

Описание регистров



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 302; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.151.214 (0.016 с.)