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

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

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

Добавлен: 14.01.2021

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

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

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

СОДЕРЖАНИЕ

1Про данное руководство

1.1Рекомендации по чтению руководства

1.2Ресурсы

1.3Рекомендовано для прочтения

2Обзор

2.1Функциональная схема

3ЦПУ AVR

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

3.2Обзор

3.3Обзор архитектуры

3.4Арифметико-логическое устройство

3.4.1Аппаратное умножающее устройство

3.5Программный поток

3.6Временная диаграмма выполнения инструкций

3.7Регистр статуса

3.8Стек и указатель стека

3.9Регистровый файл

3.9.1Регистры X, Y и Z

3.10Регистры RAMP и расширенной косвенной адресации

3.10.1Регистры RAMPX, RAMPY и RAMPZ

3.10.2Регистр RAMPD

3.10.3Регистр расширенной косвенной адресации EIND

3.11Доступ к 16-битным регистрам

3.11.1Доступ к 24- и 32-битным регистрам

3.12Защита от изменения конфигурации

3.12.1Последовательность записи защищенных регистров ввода-вывода

3.12.2Последовательность выполнения защищенных инструкций SPM/LPM

3.13Fuse-биты для блокировки изменений

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

3.14.1Регистр защиты от изменения конфигурации CCP

3.15Краткий обзор регистров

4Запоминающие устройства

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

4.2Обзор

4.3Flash-память программ

4.3.1Сектор прикладной программы

4.3.2Сектор таблицы приложения

4.3.3Загрузочный сектор

4.3.4Сигнатурный код производителя и ячейки калибровки

4.3.4.1Сигнатурный код пользователя

4.4Fuse- и Lock-биты

4.5Память данных

4.6Внутреннее SRAM

4.7EEPROM

4.7.1Доступ к EEPROM в пространстве памяти данных

4.8Память ввода-вывода

4.8.1Регистры ввода-вывода общего назначения

4.9Внешняя память

4.10Память данных и арбитраж шины

4.10.1Шинный приоритет

4.11Временные характеристики доступа к памяти

4.12Идентификация микроконтроллера

4.13Отключение порта JTAG

4.14Защита памяти ввода-вывода

4.15Описание регистров контроллера NVM энергонезависимой памяти

4.16Описание регистров - Fuse- и Lock-биты

4.16.1FUSEBYTE0 - конфигурационный байт 0 энергонезависимой памяти - JTAG-идентификатор пользователя

4.17Описание регистров - сигнатурный код производителя

4.17.1RCOSC2M - регистр калибровочного значения внутреннего генератора частоты 2 МГц

4.18Описание регистров - память ввода-вывода общего назначения

4.18.1GPIORn - регистр ввода-вывода n общего назначения

4.19Описание регистров внешней памяти

4.20Описание регистров управления МК

4.20.1DEVID0 - регистр 0 идентификатора МК

4.21Обзор регистров контроллера энергонезависимой памяти

4.22Обзор регистров Fuse- и Lock-бит

4.23Обзор регистров кода сигнатуры производителя

4.24Обзор регистров ввода-вывода общего назначения

4.25Обзор регистров управления микроконтроллером

4.26Векторы прерываний контроллера энергонезависимой памяти

5Контроллер прямого доступа к памяти (DMA-контроллер)

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

5.2Обзор

5.3Транзакция DMA

5.3.1Передача блока и повтор

5.3.2Передача пакета

5.4Запуск передачи

5.5Адресация

5.6Приоритеты каналов

5.7Двойная буферизация

5.8Передача буферов

5.9Обнаружение ошибок

5.10Программный сброс

5.11Защита

5.12Прерывания

5.13Описание регистров DMA-контроллера

5.13.1CTRL - регистр управления DMA

5.13.2INTFLAGS - регистр статуса прерываний DMA

5.13.3STATUS - Регистр статуса DMA

5.13.4TEMPH - старший байт временного регистра DMTEMP

5.13.5TEMPL - младший байт временного регистра DMTEMP

5.14Описание регистров DMA-канала

5.14.1CTRLA - регистр А управления DMA-каналом

5.14.2CTRLB - регистр B управления DMA-каналом

5.14.3ADDRCTRL - регистр управления адресом DMA-канала

5.14.4TRIGSRC - источник запуска DMA-канала

5.14.5TRFCNTH - старший регистр счетчика байт при передаче блока по DMA-каналу

5.14.6TRFCNTL - младший регистр счетчика байт при передаче блока по DMA-каналу

5.14.7REPCNT - регистр счетчика повторов в DMA-канале

5.14.8SRCADDR2 - регистр 2 адреса источника DMA-канала

5.14.9SRCADDR1 - регистр 1 адреса источника DMA-канала

5.14.10SRCADDR0 - регистр 0 адреса источника DMA-канала

5.14.11DESTADDR2 - регистр 2 адреса получателя DMA-канала

5.14.12DESTADDR1 - регистр 1 адреса получателя DMA-канала

5.14.13DESTADDR0 - регистр 0 адреса получателя DMA-канала

5.15Обзор регистров DMA-контроллера

5.16Обзор регистров DMA-канала

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

5.18Использование DMA микропроцессора Xmega

5.18.1Каналы DMA

5.18.2Передача данных

5.18.3Блочная передача и режим повтора

5.18.4DMA посылка

5.18.5Режимы адресации

5.18.6Перезагрузка адреса

5.18.7Запуск передачи и режим однократного запуска

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

5.18.9Доступ контроллера DMA к многобайтным регистрам

5.18.10Дополнительные возможности

5.18.11С чего начать

6Система событий

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

6.2Обзор

6.3События

6.3.1Сигнальные события

6.3.2Информационные события

6.3.3Ручная генерация событий

6.4Сеть маршрутизации событий

6.5Временные характеристики передачи событий

6.6Фильтрация

6.7Квадратурный декодер

6.7.1Работа квадратурного декодера

6.7.2Настройка квадратурного декодера

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

6.8.1CHnMUX - регистр мультиплексора канала события n

6.8.2CHnCTRL - Регистр управления каналом события n

6.8.3STROBE - строб-регистр события

6.8.4DATA - регистр данных события

6.9Обзор регистров

7Системная синхронизация и источники синхронизации

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

7.2Обзор

7.3Распределение сигналов синхронизации

7.3.1Сигнал системной синхронизации- CLKsys

7.3.2Сигнал синхронизации ЦПУ - CLKcpu

7.3.3Сигнал синхронизации УВВ - CLKper

7.3.4Сигналы синхронизации УВВ с удвоенной/учетверенной частотой – CLKper2/CLKper4

7.3.5Асинхронный сигнал синхронизации - CLKasy

7.4Источники синхронизации

7.4.1Внутренние генераторы

7.4.1.1Сверхмаломощный генератор частоты 32 кГц (ULP-генератор)

7.4.1.2Внутренний калиброванный генератор частоты 32.768 кГц

7.4.1.3Внутренний генератор частоты 32 МГц с возможностью автоматической калибровки

7.4.1.4Внутренний генератор частоты 2 МГц с возможностью автоматической калибровки

7.4.2Внешние источники синхронизации

7.4.2.1Кварцевый генератор частоты 0.4…16 МГц

7.4.2.2Вход внешней синхронизации

7.4.2.3Кварцевый генератор частоты 32 кГц

7.5Настройка системной синхронизации и предделителей частоты

7.6Блок PLL с коэффициентом умножения от 1 до 31

7.7Блоки DFLL 2- и 32-мегагерцевых генераторов

7.8Функция обнаружения отказа внешнего источника синхронизации

7.9Описание регистров системы синхронизации

7.9.1CTRL - регистр управления системной синхронизацией

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

7.10.1CTRL - регистр управления генераторами

7.11Описание регистров блоков DFLL32M/DFLL2M

7.11.1CTRL - регистр управления блоком DFLL

7.12Обзор регистров системы синхронизации

7.13Обзор регистров генераторов

7.14Обзор регистров блоков DFLL32M/DFLL2M

7.15Обзор вектора прерывания при отказе кварцевого генератора

8Управление энергопотреблением и экономичные режимы

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

8.2Обзор

8.3Экономичные режимы работы

8.3.1Режим IDLE

8.3.2Режим POWER-DOWN

8.3.3Режим POWER-SAVE

8.3.4Режим STANDBY

8.3.5Режим EXTENDED STANDBY

8.4Регистры снижения энергопотребления

8.5Описание регистров управления экономичными режимами

8.5.1CTRL- регистр управления экономичными режимами работы

8.6Описание регистров снижения энергопотребления

8.6.1PRGEN - общий регистр снижения энергопотребления

8.6.2PRPA/B - регистр снижения энергопотребления порта А/В

8.6.38.6.3. PRPC/D/E/F - регистр снижения энергопотребления порта C/D/E/F

8.7Обзор регистров управления экономичными режимами работы

8.8Обзор регистров управления энергопотреблением

9Система сброса

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

9.2Обзор

9.3Последовательность сброса

9.3.1Счетчик задержки сброса

9.3.2Запуск генератора

9.3.3Калибровка генератора

9.4Источники сброса

9.4.1Сброс при подаче питания

9.4.2Супервизор питания

9.4.3Сброс от детектора просадки питания

9.4.4Внешний сброс

9.4.5Сброс сторожевым таймером

9.4.6Программный сброс

9.4.7Сброс через интерфейс программирования и отладки

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

9.5.1STATUS - Регистр статуса сброса

9.5.2CTRL - регистр управления сбросом

9.6Обзор регистров

10Система резервного батарейного питания

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

10.2Обзор

10.3Модуль с резервированием питания

10.3.1Обнаружение подачи питания резервного батарейного питания

10.3.2Супервизор батарейного питания

10.4Исчезновение основного питания

10.5Основной сброс и последовательность запуска

10.5.1Резервирование питания разрешено

10.5.2Резервирование питания не разрешено и сбой в его работе

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

10.6.1CTRL: регистр управления резервированием питания

10.6.2STATUS: регистр статуса модуля с резервированием питания

10.6.3BACKUP0: регистр 0 с резервным батарейным питанием

10.7Обзор регистров

11Сторожевой таймер WDT

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

11.2Обзор

11.3Нормальный режим работы

11.4Оконный режим работы

11.5Синхронизация сторожевого таймера

11.6Защита и блокировка конфигурации

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

11.7.1CTRL - регистр управления сторожевым таймером

11.7.2WINCTRL - регистр управления оконным режимом

11.7.3STATUS - регистр статуса сторожевого таймера

11.8Обзор регистров

12Прерывания и программируемый многоуровневый контроллер прерываний

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

12.2Обзор

12.3Принцип действия

12.4Прерывания

12.4.1Немаскируемые прерывания (NMI)

12.4.2Задержка реагирования на прерывание

12.5Уровень прерывания

12.6Приоритет прерывания

12.6.1Статическая приоритезация

12.6.2Динамическая приоритезация

12.7Перемещение векторов прерываний между сектором прикладной программы и загрузочным сектором

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

12.8.1STATUS - регистр статуса PMIC-контроллера

12.8.2INTPRI - регистр приоритета прерываний PMIC Priority Register

12.8.3CTRL - регистр управления PMIC-контроллером

12.9Обзор регистров

13Порты ввода-вывода

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

13.2Обзор

13.3Использование линий ввода-вывода

13.4Настройка линий ввода-вывода

13.4.1Двухтактный выход

13.4.2Подтягивание к минусу питания

13.4.3Подтягивание к плюсу питания

13.4.4Адаптивная подтяжка

13.4.5Выход "монтажное ИЛИ"

13.4.6Выход "монтажное И"

13.5Опрос состояния линии в/в

13.6Настройка параметров контроля входа

13.7Прерывания порта

13.8Генерация событий портом ввода-вывода

13.9Альтернативные функции портов

13.10Управление скоростью фронтов

13.11Вывод синхронизации и событий

13.12Мультипортовая конфигурация

13.13Виртуальные регистры

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

13.14.1DIR - регистр направления

13.14.2DIRSET - регистр установки бит направления

13.14.3DIRCLR - регистр сброса бит направления

13.14.4DIRTGL - регистр инвертирования бита направления

13.14.5OUT - регистр вывода данных

13.14.6OUTSET - регистр установки выходов порта

13.14.7OUTCLR - регистр сброса выходов порта

13.14.8OUTTGL - регистр инвертирования выходов порта

13.14.9IN - регистр ввода данных

13.14.10INTCTRL - регистр управления прерываниями

13.14.11INT0MASK - регистр маски прерывания 0

13.14.12INT1MASK - регистр маски прерывания 1

13.14.13INTFLAGS - регистр флагов прерывания

13.14.14PINnCTRL - конфигурационный регистр линии n

13.15Описание регистров мультипортовой конфигурации

13.15.1MPCMASK - регистр маски одновременной и одинаковой конфигурации нескольких линий в/в

13.15.2VPCTRLA - регистр А управлению связью с виртуальными портами

13.15.3VPCTRLB - регистр В управлению связью с виртуальными портами

13.15.4CLKEVOUT - регистр вывода сигналов событий и синхронизации

13.16Описание регистров виртуальных портов

13.16.1DIR - регистр направления

13.16.2OUT - регистр вывода данных

13.16.3IN - регистр ввода данных

13.16.4INTFLAGS - регистр флагов прерываний

13.17Обзор регистров портов

13.18Обзор регистров мультипортовой конфигурации

13.19Обзор регистров виртуальных портов

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

1416-битный таймер-счетчик

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

14.2Обзор

14.2.1Определения

14.3Функциональная схема

14.4Источники синхронизации и событий

14.5Двойная буферизация

14.6Работа счетчика

14.6.1Нормальная работа

14.6.2Управляемый событиями режим работы

14.6.332-битная работа

14.6.4Изменение периода

14.7Канал захвата

14.7.1Входной захват

14.7.2Захват частоты

14.7.3Захват длительности импульса

14.7.432-битный входной захват

14.7.5Переполнение захвата

14.8Канал сравнения

14.8.1Генерация импульсов

14.8.2Генерация частотных сигналов (FRQ)

14.8.3Генерация ШИМ сигнала в режиме PWM с однонаправленным счетом

14.8.4Генерация ШИМ сигнала в режиме PWM с двунаправленным счетом

14.8.5Вывод сигналов генератора импульсов на линии порта

14.9Прерывания и события

14.10Поддержка DMA

14.11Команды таймера-счетчика

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

14.12.1CTRLA - регистр управления А

14.12.2CTRLB - регистр управления В

14.12.3CTRLC - регистр управления C

14.12.4CTRLD - регистр управления D

14.12.5CTRLE - регистр управления E

14.12.6INTCTRLA - регистр А разрешения прерываний

14.12.7INTCTRLB - регистр В разрешения прерываний

14.12.8CTRLFCLR/CTRLFSET - сброс/установка регистра управления F

14.12.9CTRLGCLR/CTRLGSET - сброс/установка регистра управления G

14.12.10INTFLAGS - регистр флага прерывания

14.12.11TEMP - временный регистр для 16-битного доступа

14.12.12CNTH - старший регистр счетчика

14.12.13CNTL - младший регистр счетчика

14.12.14PERH - старший регистр периода

14.12.15PERL - младший регистр периода

14.12.16CCxH - старший регистр n захвата/сравнения

14.12.17CCxL - младший регистр n захвата/сравнения

14.12.18PERBUFH - старший буферный регистр периода таймера-счетчика

14.12.19PERBUFL - младший буферный регистр периода таймера-счетчика

14.12.20CCxBUFH - старший регистр буфера захвата или сравнения х

14.12.21CCxBUFL - младший регистр буфера захвата или сравнения x

14.13Обзор регистров

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

15Блок расширения возможностей генерации импульсов AWeX

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

15.2Обзор

15.3Перекрытие порта

15.4Генерация паузы неперекрытия

15.5Образцовый генератор

15.6Защита от повреждения

15.6.1Действия защиты

15.6.2Режимы восстановления нормальной работы

15.6.3Изменение защиты

15.6.4Взаимодействие со встроенной отладочной системой

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

15.7.1CTRL - Регистр управления

15.7.2FDEMASK - регистр маски событий для обнаружения повреждения

15.7.3FDCTRL - регистр управления обнаружением отказа

15.7.4STATUS - регистр статуса

15.7.5DTBOTH - регистр общего доступа к паузам неперекрытия

15.7.6DTBOTHBUF - регистр общего доступа к буферным регистрам пауз неперекрытия

15.7.7DTLS - регистр паузы неперекрытия нижнего уровня

15.7.8DTHS - регистр паузы неперекрытия верхнего уровня

15.7.9DTLSBUF - буферный регистр паузы неперекрытия нижнего уровня

15.7.10DTHSBUF - буферный регистр паузы неперекрытия верхнего уровня

15.7.11OUTOVEN - регистр разрешения перекрытия выходов

15.8Обзор регистров

16Блок расширения разрешающей способности

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

16.2Обзор

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

16.3.1CTRLA - регистр управления А блока Hi-Res

16.4Обзор регистров

17Счетчик реального времени RTC

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

17.2Обзор

17.2.1Домены синхронизации

17.2.2Прерывания и события

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

17.3.1CTRL - регистр управления счетчиком реального времени

17.3.2STATUS - регистр статуса счетчик реального времени

17.3.3INTCTRL - регистр управления прерываниями счетчика реального времени

17.3.4INTFLAGS - регистр флагов прерываний счетчика реального времени

17.3.5TEMP - временный регистр счетчика реального времени

17.3.6CNTH - старший регистр счетчика реального времени

17.3.7CNTL - младший регистр счетчика реального времени

17.3.8PERH - старший регистр периода счетчика реального времени

17.3.9PERL - младший регистр периода счетчика реального времени

17.3.10COMPH - старший регистр сравнения счетчика реального времени

17.3.11COMPL - младший регистр сравнения счетчика реального времени

17.4Обзор регистров

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

1832-битный счетчик реального времени RTC32

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

18.2Обзор

18.2.1Настройка синхронизации

18.2.2Домены синхронизации

18.2.3Домена питания

18.2.4События и прерывания

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

18.3.1CTRL - регистр управления

18.3.2SYNCCTRL - регистр управления/статуса синхронизации

18.3.3INTCTRL - регистр управления прерываниями

18.3.4INTFLAGS - регистр флагов прерываний

18.3.5CNT3 - регистр счетчика 3

18.3.6CNT2 - регистр счетчика 2

18.3.7CNT1 - регистр счетчика 1

18.3.8CNT0 - регистр счетчика 0

18.3.9PER3 - регистр периода 3

18.3.10PER2 - регистр периода 2

18.3.11PER1 - регистр периода 1

18.3.12PER0 - регистр периода 0

18.3.13COMP3 - регистр сравнения 3

18.3.14COMP2 - регистр сравнения 2

18.3.15COMP1 - регистр сравнения 1

18.3.16COMP0 - регистр сравнения 0

18.4Обзор регистров

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

19Двухпроводной интерфейс TWI

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

19.2Обзор

19.3Принцип действия шины TWI

19.3.1Электрические характеристики

19.3.2Условия START и STOP

19.3.3Передача бит

19.3.4Пакет адреса

19.3.5Пакет данных

19.3.6Транзакция

19.3.7Синхронизация и задержка импульсов синхронизации

19.3.8Арбитраж

19.3.9Синхронизация ведущих устройств

19.4Логика контроля состояния шины TWI

19.5Работа ведущего модуля TWI

19.5.1Передача пакета адреса

19.5.1.1Сценарий M1: арбитраж проигран или ошибка во время передачи пакета адреса

19.5.1.2Сценарий M2: Передача пакета адреса завершена, но он не подтвержден подчиненным устройством

19.5.1.3Сценарий M3: Завершена передача пакета адреса с равным нулю битом направления

19.5.1.4Сценарий M4: Завершена передача пакета адреса с равным единице битом направления

19.5.2Передача пакетов данных

19.5.3Прием пакетов данных

19.6Работа подчиненного модуля TWI

19.6.1Прием пакета адреса

19.6.1.1Сценарий 1: принят пакета адреса с равным единице битом направления

19.6.1.2Сценарий 2: принят пакет адреса с равным нулю битом направления

19.6.1.3Сценарий 3: коллизия

19.6.1.4Сценарий 4: принято условие STOP

19.6.2Прием пакетов данных

19.6.3Передача пакетов данных

19.7Разрешение работы интерфейса внешнего драйвера

19.8Описание регистров модуля TWI

19.8.1CTRL - общий регистр управления модуля TWI

19.9Описание регистров ведущего модуля TWI

19.9.1CTRLA - регистр управления А ведущего модуля TWI

19.9.2CTRLB - регистр управления В ведущего модуля TWI

19.9.3CTRLC - регистр управления С ведущего модуля TWI

19.9.4STATUS - регистр статуса ведущего устройства

19.9.5BAUD - регистр скорости

19.10Ftwi = Fsys/[2(5+BAUD)], Гц (1)

19.11BAUD = (Fsys/2 * Ftwi) - 5 (2)

19.11.1ADDR - регистр адреса ведущего модуля TWI

19.11.2DATA - регистр данных ведущего модуля TWI

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

19.12.1CTRLA - регистр управления А подчиненного модуля TWI

19.12.2CTRLB - регистр управления В починенным модулем TWI

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

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

19.12.5???нет

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

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

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

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

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

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

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

20.2Обзор

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

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

20.5Режимы SPI

20.6Поддержка DMA

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

20.7.1CTRL - регистр управления SPI

20.7.2INTCTRL - регистр управления прерываниями SPI

20.7.3STATUS - регистр статуса модуля SPI

20.7.4DATA - регистр данных SPI

20.8Обзор регистров

20.9Векторы прерываний модуля SPI

21Модуль USART

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

21.2Обзор

21.3Генерация синхронизации

21.3.1Внутренняя генерация синхронизации дробным генератором скорости

21.3.2Внешняя синхронизация

21.3.3Работа с удвоенной скоростью (CLK2X)

21.3.4Синхронный режим

21.3.5Генерация синхронизации для шины SPI

21.4Форматы посылок

21.4.1Вычисление бита паритета

21.4.2SPI-совместимые форматы посылок

21.5Инициализация USART

21.6Отправка данных передатчиком USART

21.6.1Отправка посылок

21.6.2Отключение передатчика

21.7Получение данных приемником USART

21.7.1Прием посылок

21.7.2Флаги ошибок приемника

21.7.3Проверка паритета

21.7.4Отключение приемника

21.7.5Очистка буфера приемника

21.8Асинхронный прием данных

21.8.1Восстановление синхронизации

21.8.2Восстановление данных

21.8.3Рабочий диапазон асинхронного приемника

21.9Дробная генерация скорости

21.10Работа USART в ведущем SPI-совместимом режиме

21.11Сравнение режима SPI модуля USART с модулем SPI

21.12Режим мультипроцессорной связи

21.12.1Использование режима мультипроцессорной связи

21.13Работа в режиме IRCOM

21.14Поддержка DMA

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

21.15.1DATA - регистр ввода-вывода данных модуля USART

21.15.2STATUS - регистр статуса USART

21.15.3CTRLA - регистр управления А модуля USART

21.15.4CTRLB - регистр управления В модуля USART

21.15.5CTRLC - регистр управления С модуля USART

21.16Таблица 21.6. Настройка бит CMODE

21.16.1BAUDCTRLA - регистр скорости USART

21.16.2BAUDCTRLB - регистр скорости USART

21.17Обзор регистров

21.17.1Описание регистров модуля USART

21.17.2Описание регистров модуля USART, работающего в режиме ведущего интерфейса SPI

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

22Модуль инфракрасной связи IRCOM

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

22.2Обзор

22.322.2.1. Фильтрация системы событий

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

22.4.1TXPLCTRL - регистр управления длительностью импульса передатчика IRCOM

22.4.2RXPLCTRL - регистр управления длительностью импульса приемника IRCOM

22.4.3CTRL - регистр управления IRCOM

22.5Обзор регистров

23Криптоускорители

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

23.2Обзор

23.3Инструкция DES

23.4Модуль AES

23.4.1Память ключа и память состояния

23.4.2Поддержка DMA

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

23.5.1CTRL - регистр управления модулем AES

23.5.2STATUS - регистр статуса модуля AES

23.5.3STATE - регистр состояния модуля AES

23.5.4KEY - регистр ключа модуля AES

23.5.5INTCTRL - регистр управления прерыванием модуля AES

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

23.7Вектор прерываний модуля AES

24Интерфейс внешней шины EBI

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

24.2Обзор

24.3Выходы выбора микросхем

24.3.1Базовый адрес

24.3.2Размер адресного пространства

24.3.3Выхода выбора микросхем в качестве адресных линий

24.4Настройка линий ввода-вывода

24.5Синхронизация EBI

24.6Совместная работа со SRAM

24.6.1Работа без мультиплексирования

24.6.2Мультиплексирование байтов адреса 0 и 1

24.6.3Мультиплексирование байтов адреса 0 и 2

24.6.4Мультиплексирование байтов адреса 0, 1 и 2

24.6.5Требования к регистрам фиксации адреса

24.6.6Временная диаграмма

24.7Совместная работа со SRAM LPC-типа

24.7.1Мультиплексирование данных с байтом адреса 0

24.7.2Мультиплексирование данных с байтами адреса 0 и 1

24.8Совместная работа с SDRAM

24.8.1Поддерживаемые команды

24.8.23-портовая конфигурация интерфейса EBI

24.8.34-портовая конфигурация интерфейса EBI

24.8.4Временная диаграмма

24.8.5Инициализация

24.8.6Регенерация

24.9Комбинированное подключение к SRAM и SDRAM

24.10Временная диаграмма интерфейса EBI

24.10.1SRAM

24.10.1.1Режим SRAM без мультиплексирования

24.10.1.2Режим SRAM с мультиплексированием адреса и синхронизацией 1х

24.10.1.3Режим SRAM с мультиплексированием адреса и синхронизацией 2х

24.10.1.4Режим SRAM LPC с мультиплексированием адреса/данных и синхронизацией 1x

24.10.1.5Режим SRAM LPC с мультиплексированием адреса/данных и синхронизацией 2x

24.10.2SDRAM

24.10.2.14-битный режим SDRAM с синхронизацией 1х

24.10.2.28-битный режим SDRAM с синхронизацией 2х

24.11Описание регистров модуля EBI

24.11.1CTRL - регистр управления модулем EBI

24.11.2SDRAMCTRLA - регистр A управления SDRAM

24.11.3REFRESH - регистр периода регенерации SDRAM

24.11.4INITDLY - регистр задержки инициализации SDRAM

24.11.5SDRAMCTRLB - регистр В управления SDRAM

24.11.6SDRAMCTRLC - регистр С управления SDRAM

24.12Описание регистров управления выбором микросхем

24.12.1CTRLA - регистр А управления выбором микросхемы

24.12.2CTRLB (SRAM) - регистр В управления выбором микросхемы

24.12.3CTRLB (SDRAM) - регистр В управления выбором микросхемы

24.12.4BASEADDR - регистр базового адреса выбора микросхемы

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

24.14Обзор регистров управления выбором микросхем

25Аналогово-цифровой преобразователь ADC

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

25.2Обзор

25.3Входные источники

25.3.1Дифференциальный вход

25.3.2Дифференциальный вход с усилением

25.3.3Несимметричный вход

25.3.4Внутренние входы

25.4Каналы АЦП

25.5Выбор опорного напряжения

25.6Результат преобразования

25.7Функция сравнения

25.8Запуск преобразования

25.9Синхронизация и временная диаграмма преобразования АЦП

25.9.1Одиночное преобразование без усиления

25.9.2Одиночное преобразование с усилением

25.9.3Одиночные преобразования в двух каналах АЦП

25.9.4Одиночные преобразования в двух каналах АЦП с усилением в канале 0

25.9.5Одиночные преобразования в двух каналах АЦП с усилением в канале 1

25.9.6Автоматический режим с усилением в двух каналах АЦП

25.10DMA-передача

25.11Прерывания и события

25.12Калибровка

25.13Приоритет каналов

25.14Синхронизация выборок

25.15Описание регистров модуля АЦП

25.15.1CTRLA - регистр управления А модуля АЦП

25.15.2CTRLB - регистр управления В модуля АЦП

25.15.3REFCTRL - регистр управления опорным напряжением АЦП

25.15.4EVCTRL - регистр управления событиями АЦП

25.15.5PRESCALER - регистр предделителя синхронизации АЦП

25.15.6INTFLAGS - регистр флагов прерываний АЦП

25.15.7TEMP - временный регистр АЦП

25.15.8CALL - регистр младшего байта калибровочного значения АЦП

25.15.9CALH - регистр старшего байта калибровочного значения АЦП

25.15.10CHnRESH - старший регистр результата канала АЦП n

25.15.10.112-битный режим с левым выравниванием

25.15.10.212-битный режим с правым выравниванием

25.15.10.38-битный режим

25.15.11CHnRESL - младший регистр результата канала АЦП n

25.15.11.112-/8-битный режим

25.15.11.212-битный режим с левым выравниванием

25.15.12CMPH - старший регистр сравнения модуля АЦП

25.15.13CMPL - младший регистр сравнения модуля АЦП

25.16Описание регистра канала АЦП

25.16.1CTRL - регистр управления канала АЦП

25.16.2MUXCTRL - регистры управления мультиплексором канала АЦП

25.16.3INTCTRL - регистры управления прерыванием канала АЦП

25.16.4INTFLAG - регистр флагов прерываний канала АЦП

25.16.5RESH - старший регистр результата канала АЦП n

25.16.5.112-битный режим с левым выравниванием

25.16.5.212-битный режим с правым выравниванием

25.16.5.38-битный режим

25.16.6RESL - младший регистр результата канала АЦП n

25.16.6.112-/8-битный режим

25.16.6.212-битный режим с левым выравниванием

25.17Обзор регистров АЦП

25.18Обзор регистров канала АЦП

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

26Цифро-аналоговый преобразователь DAC

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

26.2Обзор

26.3Запуск преобразования

26.4Выходные каналы

26.5Синхронизация модуля DAC

26.6Ограничения к временным характеристикам

26.7Экономичный режим работы

26.8Калибровка

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

26.9.1CTRLA - регистр А управления модулем DAC

26.9.2CTRLB - регистр В управления модулем DAC

26.9.3CTRLC - регистр С управления ЦАП

26.9.4EVCTRL - регистр управления событиями

26.9.5TIMCTRL - регистр задания временных характеристик ЦАП

26.9.6STATUS - регистр статуса ЦАП

26.9.7CH0DATAH - старший регистр данных канала ЦАП 0

26.9.7.1Правое выравнивание

26.9.7.2Левое выравнивание

26.9.8CH0DATAL - младший регистр данных канала ЦАП 0

26.9.8.1Правое выравнивание

26.9.8.2Левое выравнивание

26.9.9CH1DATAH - старший регистр данных канала ЦАП 1

26.9.9.1Правое выравнивание

26.9.9.2Левое выравнивание

26.9.10CH1DATAL - младший регистр данных канала ЦАП 1

26.9.10.1Правое выравнивание

26.9.10.2Левое выравнивание

26.9.11GAINCAL - регистр калибровки коэффициента передачи ЦАП

26.9.12OFFSETCAL - регистр калибровки смещения ЦАП

27Аналоговый компаратор AC

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

27.2Обзор

27.3Входные каналы

27.3.1Внешние входы

27.3.2Внутренние входы

27.4Запуск сравнения сигналов

27.5Генерация прерываний и событий

27.6Оконный режим

27.7Входной гистерезис

27.8Зависимость энергопотребления от задержки распространения

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

27.9.1ACnCTRL - регистр управления аналоговым компаратором n

27.9.2ACnMUXCTRL - регистр управления мультиплексором аналогового компаратора n

27.9.3CTRLA - регистр управления А

27.9.4CTRLB - регистр управления В

27.9.5WINCTRL - регистр управления оконным режимом аналоговых компараторов

27.9.6STATUS - общий регистр статуса аналоговых компараторов

27.10Обзор регистров

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

28IEEE 1149.1-совместимый интерфейс JTAG

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

28.2Обзор

28.3TAP-порт

28.4JTAG-инструкции

28.4.1EXTEST; 0x1

28.4.2IDCODE; 0x3

28.4.3SAMPLE/PRELOAD; 0x2

28.4.4BYPASS; 0xf

28.4.5CLAMP; 0x4

28.4.6HIGHZ; 0x5

28.4.7PDICOM; 0x7

28.5Регистры данных

28.5.1Обходной регистр

28.5.2Регистр идентификации МК

28.5.2.1Версия

28.5.2.2Шифр продукции

28.5.2.3Идентификатор производителя

28.5.3Цепь граничного сканирования

28.5.4Регистр данных PDICOM

28.6Цепь граничного сканирования

28.6.1Сканирование линий ввода-вывода

28.6.2Сканирование линий PDI

29Интерфейс программирования и отладки PDI

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

29.2Обзор

29.3Трансивер PDI

29.3.1Разрешение работы

29.3.2Отключение

29.3.3Формат посылки и символы

29.3.3.1Символы

29.3.4Последовательные передача и прием

29.3.5Последовательная передача данных

29.3.5.129.3.5.1. Обнаружение конфликтов управления и коллизий

29.3.6Последовательный прием

29.3.6.1Обнаружение символа BREAK

29.3.7Изменение направления

29.4Трансивер JTAG

29.4.1Разрешение работы

29.4.2Отключение

29.4.3Набор инструкций JTAG

29.4.3.1Инструкция PDICOM

29.4.4Формат посылки и символов

29.4.4.1Специальные символы данных

29.4.5Последовательные передача и прием

29.4.6Последовательная передача

29.4.6.1Сигнализация статуса

29.4.7Последовательный прием

29.4.7.1Проверка паритета

29.4.7.2Обнаружение символа BREAK

29.5Контроллер PDI

29.5.1Переключение между режимами PDI и JTAG

29.5.2Доступ к внутренним интерфейсам

29.5.3Ключ программирования энергонезависимой памяти

29.5.4Обработка исключительных ситуаций

29.5.5Управление сбросом

29.5.6Набор инструкций

29.5.6.1LDS - загрузка данных из пространства данных PDIBUS с использованием прямой адресации

29.5.6.2STS - сохранение данных в пространстве данных PDIBUS с использованием прямой адресации

29.5.6.3LD - загрузка данных из пространства данных PDIBUS с использованием косвенной адресации

29.5.6.4ST - сохранение данных в пространство данных PDIBUS с использованием косвенной адресации

29.5.6.5LDCS - загрузка данных из пространства регистров управления и статуса PDI

29.5.6.6STCS - сохранение данных в пространстве регистров управления и статуса PDI

29.5.6.7KEY - настройка ключа активизации

29.5.6.8REPEAT - настройка счетчика повтора инструкций

29.5.7Обзор набора инструкций

29.6Описание регистров инструкции и адресации интерфейса PDI

29.6.1Регистр инструкции

29.6.2Регистр указателя

29.6.3Регистр счетчика повторов

29.6.4Регистр счетчика операндов

29.7Описание регистров управления и статуса интерфейса PDI

29.7.1STATUS - регистр статуса интерфейса PDI

29.7.2RESET - регистр сброса

29.7.3CTRL - регистр управления интерфейсом PDI

29.8Обзор регистров

30Программирование запоминающих устройств

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

30.2Обзор

30.3NVM-контроллер

30.4NVM-команды

30.4.1Команды с запуском по действию

30.4.2Команды с запуском по чтению NVM

30.4.3Команды с запуском по записи NVM

30.4.4Механизм CCP для защиты записи/исполнения

30.5Особенности работы NVM-контроллера в занятом состоянии

30.6Страничные буферы Flash-памяти и EEPROM

30.6.1Страничный буфер Flash-памяти

30.6.2Страничный буфер EEPROM

30.7Последовательности программирования Flash-памяти и EEPROM

30.7.1Последовательность программирования Flash-памяти

30.7.2Последовательность программирования EEPROM

30.8Защита энергонезависимой памяти

30.9Предотвращение нарушения данных

30.9.1Сбои во время записи

30.9.2Сбои во время чтения

30.10Проверка CRC

30.11Самопрограммирование под управлением программы загрузчика

30.11.1Программирование Flash-памяти

30.11.1.1Сектор прикладной программы и загрузочный сектор

30.11.1.2Адресация Flash-памяти

30.11.2NVM-команды Flash-памяти

30.11.2.1Чтение Flash-памяти

30.11.2.2Стирание страничного буфера Flash-памяти

30.11.2.3Загрузка страничного буфера Flash-памяти

30.11.2.4Стирание страницы Flash-памяти

30.11.2.5Запись страницы Flash-памяти

30.11.2.6Вычисление CRC для диапазона Flash-памяти

30.11.2.7Стирание сектора прикладной программы

30.11.2.8Стирание страницы сектора прикладной программы/загрузочного сектора

30.11.2.9Запись страницы сектора прикладной программы/загрузочного сектора

30.11.2.10Стирание и запись страницы сектора прикладной программы/загрузочного сектора

30.11.2.11Вычисление CRC в секторе прикладной программы/загрузочном секторе

30.11.2.12Стирание сигнатурного кода пользователя

30.11.2.13Запись сигнатурного кода пользователя

30.11.2.14Чтение сигнатурного кода пользователя/калибровочных данных

30.11.3NVM-команды доступа к Fuse- и Lock-битам

30.11.3.1Запись Lock-бит

30.11.3.2Чтение Fuse-бит

30.11.4Программирование EEPROM

30.11.4.1Адресация EEPROM

30.11.5NVM-команды EEPROM

30.11.5.1Загрузка страничного буфера EEPROM

30.11.5.2Стирание страничного буфера EEPROM

30.11.5.3Стирание страницы EPPROM

30.11.5.4Запись страницы EEPROM

30.11.5.5Стирание и запись страницы EEPROM

30.11.5.6Стирание EEPROM

30.11.5.7Чтение EPPROM

30.12Внешнее программирование

30.12.1Разрешение работы интерфейса внешнего программирования

30.12.2Программирование NVM

30.12.2.1Адресация NVM

30.12.2.2Занятость NVM

30.12.3NVM-команды

30.12.3.1Стирание всей памяти

30.12.3.2Чтение NVM

30.12.3.3Стирание страничного буфера Flash-памяти/EEPROM

30.12.3.4Загрузка страничного буфера Flash-памяти/EEPROM

30.12.3.5Стирание страницы Flash-памяти/EEPROM

30.12.3.6Запись страницы Flash-памяти/EEPROM

30.12.3.7Стирание и запись страницы Flash-памяти/EEPROM

30.12.3.8Стирание сектора прикладной программы/загрузочного сектора/EEPROM

30.12.3.9Проверка CRC Flash-памяти

30.12.3.10Запись Fuse-/Lock-бит

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

30.14Обзор регистров

31Карта памяти модулей ввода-вывода

32Краткое описание набора инструкций

33Приложение А. Временные диаграммы модуля EBI

33.13-портовое подключение SRAM с ALE1 и CS

33.23-портовое подключение SRAM с ALE12 и CS

33.34-портовое подключение SRAM с ALE2 и CS

33.44-портовое подключение SRAM с CS и без ALE

33.52-портовое подключение LPC памяти с ALE12 и CS

33.63-портовое подключение LPC памяти с ALE1 и CS

33.72-портвоое подключение LPC памяти с ALE1 и CS

33.83-портовое подключение SRAM с ALE1 и без CS

33.94-портвоое подключение SRAM без ALE и CS

33.102-портовое подключение LPC памяти с ALE12 и без CS

33.11Блок SDRAM

33.128-битная запись SDRAM

33.138-битное чтение SDRAM

33.14Запись 4-битного SDRAM

33.15Чтение 4-битного SDRAM

33.16Регенерация SRAM

34Электрические характеристики

34.1Предельно-допустимые параметры*

34.2Статические характеристики

34.3Быстродействие

34.4Характеристики АЦП

34.5Характеристики ЦАП

34.6Характеристики аналоговых компараторов

35Сведения о выявленных ошибках в работе микроконтроллеров

35.1Микроконтроллер ATxmega256A3

35.1.1Версия A

Если МК работает в экономичном режиме и обнаруживается условие START, синхронизация задерживается на время возобновления активной работы МК. Периодической задержкой синхронизации на побитовой основе подчиненное устройство может добиться снижения быстродействия шины. Потребность в этом может возникнуть при использовании пониженных частот системной синхронизации в подчиненном устройстве. Возможность произвольной задержки синхронизации на побайтной основе получают и ведущее и подчиненное устройства перед передачей и после передачи бита ACK/NACK. В результате такой задержки, появляется время на обработку принятых данных, подготовку передаваемых данных или же на выполнение других критичных ко времени задач.

Когда синхронизацию задерживает подчиненное устройство, ведущее переходит в состояние ожидания и наоборот.

19.3.8Арбитраж

Ведущее устройство имеет право начинать транзакцию только при условии нахождения шины в состоянии IDLE. Поскольку шина TWI является мультимастерной, транзакцию могут инициировать два или более устройств одновременно. В результате, шина становится занятой сразу несколькими ведущими устройствами. Разрешение такой конфликтной ситуации достигается применением механизма арбитража, в соответствии с которым теряет контроль над шиной каждое ведущее устройство, которое не способно передать высокий уровень на линии SDA. Те ведущие устройства, которые в процессе арбитража потеряли контроль над шиной, переходят в состояние ожидания до тех пор, пока шина вновь не перейдет в состояние IDLE (что происходит после передачи условия STOP), а затем вновь пытаются получить контроль над шиной. Подчиненные устройства не принимают никакого участия в арбитраже.


Рисунок 19.9. Арбитраж шины TWI

На рисунке 19.9 показан пример, когда два ведущих устройства пытаются получить контроль над шиной. Оба устройства успешно передают условие START, однако устройство 1 теряет контроль в ходе арбитража, когда пытается передать высокий уровень (бит 5), в то время как устройство 2 передает низкий уровень. Арбитраж недопустим между передачей условия повторного старта и бита данных, между условием STOP и битом данных, а также между условием повторного старта и условием STOP. При необходимости арбитража на этих интервалах, его необходимо реализовать программно.

19.3.9Синхронизация ведущих устройств

В ситуации, когда более одного ведущего устройства пытаются управлять линией SCL, необходимо применить алгоритм, обеспечивающий синхронность работы этих устройств. Этот алгоритм основан на тех же принципах, что описанная ранее задержка синхронизации. На рисунке 9.10 показан пример, в котором два ведущих устройства конкурируют за контроль над синхронизацией шины. Результирующий сигнал на линии SCL является результатом объединения по принципу монтажного И двух сигналов на выходах синхронизации ведущих устройств.



Рисунок 19.10. Синхронизация ведущих устройств

Как только линия SCL перейдет из высокого состояния в низкое, все ведущие устройства переведут свой выход синхронизации в низкое состояние и начнут отчет длительности импульса синхронизации низкого уровня. Длительность этого импульса может отличаться у разных ведущих устройств. Если ведущее устройство (в нашем примере устройство 1) завершит отсчет длительности низкого уровня, оно освободит линию SCL. Однако, линия SCL не перейдет в высокое состояние, пока её не освободят все остальные ведущие устройства. Таким образом, линия SCL будет удерживаться в низком состоянии устройством с самым длительным импульсом низкого уровня (устройство 2).

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

19.4Логика контроля состояния шины TWI

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

Логика контроля состояния шины состоит из схемы обнаружения условий START и STOP, схемы обнаружения коллизий, таймера для измерения интервалов времени бездействия шины и счетчика бит. Все эти узлы используются для определения состояния шины. Программа может оценить состояние шины путем опроса бит статуса шины в регистре статуса ведущего устройства. Как показано на рисунке 19.11, шина может находиться в следующих состояниях: UNKNOWN (неопределенное). IDLE (незанятое), BUSY (занятое внешним устройством) и OWNER (занятое владельцем). На рисунке также представлены соответствующие состояниям шины значения бит статуса шины.


Рисунок 9.11. Диаграмма состояний шины

После системного сброса, состояние шины является неопределенным (UNKNOWN). Из этого состояния автомат состояний может перейти в состояние IDLE с одновременной соответствующей записью в биты состояния шины. Данное состояние также вводится, если иного состояния не было введено программой и обнаружено условие STOP. Дополнительно, переход в состояние IDLE происходит по истечении выдержки времени таймера, контролирующего интервалы бездействия шины (только при условии разрешения его работы). После перехода в любое известное состояние обратный переход в состояние UNKNOWN из любого другого состояния не предусмотрен. Состояние UNKNOWN вводится только системным сбросом или отключением ведущего модуля TWI.


Нахождение шины в состоянии IDLE указывает на её готовность к новой транзакции. При обнаружении внешне сгенерированного условия START, шина переходит в занятое состояние (BUSY) вплоть до появления на шине следующего условия STOP. Условие STOP вновь переведет шину в состояние IDLE. Переход в это состояние также произойдет по истечении выдержки времени таймера контроля интервалов бездействия шины, но только при условии разрешения его работы.

Если же из состояния IDLE условие START вводит модуль TWI, то осуществляется переход в состояние OWNER. В случае нормального выполнения транзакции, т.е. без обнаружения коллизий, ведущее устройство генерирует условие STOP и шина возвращается в состояние IDLE. В случае же обнаружения коллизии и проигрыша арбитража, шина переходит в состояние BUSY вплоть до обнаружения условия STOP. Условие REPEATED START способно изменить состояние шины только при проигрыше арбитража во время генерации этого условия.

19.5Работа ведущего модуля TWI

Ведущий модуль TWI предназначен для побайтной передачи данных и может генерировать прерывание после передачи/приема каждого байта. Предусмотрены отдельные прерывания для транзакций записи ведущим устройством и чтения ведущим устройством. При необходимости управления модулем путем опроса его состояния, могут использоваться флаги прерываний. Для сигнализации о приеме бита ACK/NACK, обнаружении ошибки, проигрыше арбитража, задержки синхронизации и состоянии шины предусмотрены отдельные биты статуса.

После установки флага прерывания, линия SCL удерживается в низком состоянии. Данная задержка необходима ведущему устройству для реагирования на прерывание или обработку данных, что в большинстве случаев требует участия программы. Работу ведущего модуля TWI иллюстрирует рисунок 19.12. Ромбовидный значок с надписью SW указывает на участки, где требуется взаимодействие с программой. Освобождение линии SCL произойдет только после сброса флагов прерываний.


Рисунок 19.12. Работа ведущего модуля TWI

За счет автоматического выполнения многих операций количество генерируемых прерываний поддерживается на минимальном уровне. Для автоматического запуска операций и снижения сложности программы могут быть разрешены команда QUICK и режим SMART.

19.5.1Передача пакета адреса

После ввода условия START, ведущее устройство начнет транзакцию шины сразу после записи в регистр адреса ведущего устройства адреса подчиненного устройства и бита направления. Если шина находится в состоянии BUSY, то ведущий модуль TWI будет ожидать перехода шины в состояние IDLE. При обнаружении этого состояния ведущее устройство генерирует условие START, а затем передает байт адреса.

В зависимости от результата арбитража и состояния бита направления R/W дальнейшая передача (по завершении передачи пакета адреса) может осуществляться по 4 сценариям. Все эти сценарии должны быть реализованы программно.


19.5.1.1Сценарий M1: арбитраж проигран или ошибка во время передачи пакета адреса

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

Ситуация с обнаружением ошибки на шине обрабатывается таким же образом, как и проигрыш арбитража, но затем исключением, что в дополнение к установке флагов прерывания по записи и проигрыша арбитража происходит установка флага ошибки.

19.5.1.2Сценарий M2: Передача пакета адреса завершена, но он не подтвержден подчиненным устройством

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

19.5.1.3Сценарий M3: Завершена передача пакета адреса с равным нулю битом направления

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

19.5.1.4Сценарий M4: Завершена передача пакета адреса с равным единице битом направления

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

19.5.2Передача пакетов данных

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

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


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

19.5.3Прием пакетов данных

Прием данных ведущим устройством возможен по сценарию М4. После приема ведущим устройством первого байта данных, устанавливается флаг прерывания по чтению ведущим устройством и ведущее устройство может приступить к приему новых данных. На каждый принятый байт ведущее устройство должно ответить битом ACK или NACK. Передача бита NACK может оказаться безуспешной, если ведущее устройство проиграет арбитраж во время передачи этого бита. Если в результате обнаружения коллизии, ведущее устройство теряет арбитраж, устанавливается флаг проигрыша арбитража.

19.6Работа подчиненного модуля TWI

Подчиненный модуль TWI предназначен для побайтной передачи данных и поддерживает возможность генерации прерываний после передачи/приема каждого байта. Предусмотрены отдельное прерывание по данным и отдельное прерывание по адресу/условию STOP. Флаги прерывания могут использоваться для опроса состояния модуля. Предусмотрены отдельные флаги статуса для сигнализации приема бита ACK/NACK, задержки синхронизации, коллизии, ошибки шины и направления 'чтение/запись'.

Если флаг прерывания установлен, линия SCL удерживается в низком состоянии. Благодаря этому, подчиненное устройство получает время на реагирование или обработку данных, что в большинстве случаев требует взаимодействия с программой. Работу подчиненного модуля TWI демонстрирует рисунок 19.13. Ромбовидным значком с надписью SW отмечены места, где требуется взаимодействие с программой.


Рисунок 19.13. Работа подчиненного модуля TWI

Количество генерируемых прерываний поддерживается на минимуме за счет автоматической обработки большинства условий. При необходимости автоматического запуска операций и снижения сложности программы может быть разрешена команда QUICK.

Облегчить реализацию подчиненного устройства, которое должно реагировать на любой принятый адрес, поможет режим PROMISCUOUS.

19.6.1Прием пакета адреса

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

Флаг прерывания по адресу/условию STOP устанавливается, когда вслед за условием START был обнаружен действительный пакет адреса. Этот флаг прерывания также устанавливается при обнаружении адреса общего вызова.

Условие START, которое передано сразу за условием STOP, является недопустимым и, в таком случае, устанавливается флаг ошибки шины.


Смотрите также файлы