- •Отличительные особенности микроконтроллеров at91 на базе ядра arm® Thumb®
- •. Описание
- •2. Краткий обзор конфигурации семейства at91sam7s
- •3. Структурная схема
- •4. Назначение выводов
- •5. Назначение внешних выводов для различных корпусов
- •6. Питание
- •7. Порты ввода-вывода
- •8. Архитектура ядра процессора
- •9. Память
- •10. Системный контроллер
- •10.1 Организация памяти системного контроллера
- •10.2 Контроллер сброса
- •10.3 Тактовый генератор
- •10.4 Контроллер управления потребляемой мощностью
- •Расширенный контроллер прерываний и модуль внутрисхемной отладки
- •Таймеры, контроллер портов ввода-вывода и контроллер режимов стабилизатора напряжения питания
- •11. Периферийные модули
- •11.1 Организация памяти периферийных модулей
- •11.2 Дополнительные функции портов ввода-вывода
- •11.3 Функции портов pa0…pa31
- •11.4 Идентификаторы периферийных модулей
- •11.5 Последовательный периферийный интерфейс
- •Двухпроводной интерфейс, usart, spi
- •11.9 Таймер-счетчик (tc)
- •Шим контроллер, usb, ацп
- •12. Обзор процессора arm7tdmi
- •13. Отличительные способности средств отладки и тестирования Описание и структурная схема
- •13.3 Примеры применения
- •13.4 Описание выводов для отладки и тестирования
- •13.5 Функциональное описание
- •14. Контроллер сброса (rstc) Обзор и структурная схема
- •14.3 Функциональное описание
- •14.4 Пользовательский интерфейс контроллера сброса
- •15. Таймер реального времени (rtt)
- •15.3 Функциональное описание
- •15.4 Пользовательский интерфейс таймера реально времени
- •16. Интервальный таймер (pit)
- •16.3 Функциональное описание
- •16.4 Пользовательский интерфейс интервального таймера
- •17. Сторожевой таймер (wdt)
- •17.3 Функциональное описание
- •17.4 Пользовательский интерфейс сторожевого таймера
- •18. Контроллер режимов стабилизатора напряжения (vreg)
- •19. Контроллер памяти (mc)
- •19.3 Функциональное описание
- •19.4 Пользовательский интерфейс контроллера памяти
- •20. Контроллер встроенной флэш-памяти (efc)
- •20.3 Пользовательский интерфейс контроллера встроенной флэш-памяти
- •21. Интерфейс программирования флэш-памяти (ffpi)
- •21.3. Последовательный интерфейс программирования флэш-памяти
- •22. Стартовый загрузчик at91sam7 (бут загрузчик)
- •23. Контроллер пдп (dma) периферийных модулей
- •23.3 Функционирование контроллера dma
- •23.4 Контроллер пдп (pdc). Интерфейс работы
- •24. Расширенный Контроллер Прерываний (aic)
- •24.6 Особенности контроллеров at91 серии
- •24.7 Функциональное описание
- •24.8 Контроллер прерываний aic. Интерфейс пользователя
- •25. Тактовый генератор
- •26. Контроллер управления потребляемой мощности (pmc)
- •26.5 Контроллер тактовых сигналов периферийных модулей (Peripheral Clock Controller)
- •26.6 Контроллер программно управляемых внешних тактовых сигнала
- •6.7 Последовательность программирования
- •26.8 Переключение тактовых сигналов
- •26.9 Регистры контроллера управления потребляемой мощности
- •27. Модуль внутрисхемной отладки (dbgu)
- •27.4. Работа уапп (uart)
- •27.5 Пользовательский интерфейс модуля внутрисхемной отладки
- •28. Контроллер параллельного ввода-вывода
- •8.5 Функциональное описание
- •28.7. Пользовательский интерфейс контроллера параллельного ввода - вывода
- •9. Последовательный периферийный интерфейс (spi)
- •29.6 Функциональное описание
- •29.7 Пользовательский интерфейс последовательно - параллельного интерфейса (spi)
- •30. Двухпроводной интерфейс
- •30.5 Функциональное описание
- •30.6. Пользовательский интерфейс двухпроводного интерфейса
- •33. Таймер-счетчик (тс)
- •33.5 Функциональное описание
- •33.6 Пользовательский интерфейс таймера-счетчика (тс)
- •34. Контроллер широтно-импульсной модуляции (шим)
- •34.5 Функциональное описание
- •34.6 Пользовательский интерфейс шим-контроллера (pwm)
- •35. Порт usb-устройства (udp)
- •35.5. Функциональное описание
- •35.5.2.8 Транзакция "Статус"
- •35.6. Пользовательский интерфейс usb порта (udp)
- •36. Аналогово-цифровой преобразователь (ацп)
- •36.5 Функциональное описание
- •36.6 Пользовательский интерфейс ацп
35.5.2.8 Транзакция "Статус"
Транзакция "Статус" - специальный тип транзакции между хостом и устройством, используемый только в передаче "Управление". Передача "Управление" должна выполняться только с помощью конечных точек с переключающимися банками памяти. В соответствии с последовательностью "Управление" (чтение или запись) USB-устройство отправляет или принимает транзакцию "Статус".
Рисунок
35.11. Последовательности "Чтение данных
управления" и "Запись данных
управления"
Прим.:
На этапе "Ввод статуса" хост ожидает от устройства получение пакета нулевой длины (транзакция "Ввод данных" без данных), используя идентификатор пакета "Ввод данных". Более детальная информация по протокольному слою приведена в разделе 8 "Universal Serial Bus Specification, Rev. 2.0".
На этапе "Вывод статуса" хост передает устройству пакет нулевой длины (транзакция "Вывод данных" без данных).
35.5.2.9 Передача "Ввод статуса"
Сразу после обработки запроса "Управление" устройство возвращает статус хосту с помощью транзакции "Ввод данных" нулевой длины.
Микроконтроллер ожидает сброс TXPKTRDY в регистре конечной точки UDP_ CSRx. (по окончании данного шага бит должен быть сброшен TXPKTRDY, т.к. предыдущей транзакцией была "Установка" или "Вывод данных").
Микроконтроллер устанавливает TXPKTRDY, не выполняя записи каких-либо данных в регистр конечной точки UDP_ FDRx. USB-устройство генерирует пакет "Ввод данных", используя идентификатор пакета "Ввод данных".
Данный пакет подтверждается хостом, после чего устанавливается бит TXPKTRDY в регистре конечной точки UDP_ CSRx.
Рисунок
35.12. Передача "Ввод статуса",
следующая за передачей "Вывод данных"
35.5.2.10 Передача "Вывод статуса"
Сразу после обработки запроса "Управление" и возврата запрашиваемых данных хост передает подтверждение путем передачи пакета нулевой длины, который представляет собой транзакцию "Вывод данных" нулевой длины.
USB-устройство принимает пакет нулевой длины и устанавливает флаг RX_DATA_BK0 в регистре UDP_CSRx, а затем подтверждает получение пакета нулевой длины.
USB-устройство уведомляет микроконтроллер о получении пакета нулевой длины через бит RX_DATA_BK0 в регистре UDP_ CSRx. До тех пор, пока установлен бит RX_DATA_BK0, будет генерироваться прерывание. Количество принятых байт в регистре конечной точки UDP_ BCR в этом случае будет равно нулю.
Микроконтроллер должен сбросить RX_DATA_BK0.
Рисунок
35.13. Передача "Вывод статуса",
следующая за передачей "Ввод данных"
35.5.2.11 Квитирование останова
Квитирование останова может использоваться в одной из двух различных ситуаций (более детальная информация по квитированию останова см. в разделе 8 "Universal Serial Bus Specification, Rev 2.0").
Функциональный останов используется, когда активна функция остановки конечной точки (более детальная информация по функции остановки приведена в разделе 9 "Universal Serial Bus Specification, Rev 2.0").
Для прекращения текущего запроса используется протокольный останов, но только с передачей "Управление". Для генерации пакета останова необходимо придерживаться следующей последовательности:
Микроконтроллер устанавливает флаг FORCESTALL в регистре конечной точки UDP_ CSRx.
Хост принимает пакет останова.
USB-устройство уведомляет микроконтроллер об отправке останова путем установки бита STALLSENT. Прерывание конечной точки генерируется до тех пор, пока установлен бит STALLSENT. Для отмены прерывания микроконтроллер должен сбросить STALLSENT.
Если после квитирования останова принимается транзакция "Установка", то во избежание генерации прерываний по причине установленности флага STALLSENT его необходимо сбросить.
Рисунок
35.14. Квитирование останова (передача
"Ввод данных")
Рисунок
35.15. Квитирование останова (передача
"Вывод данных")
35.5.3 Управление состояниями устройства
USB-устройство поддерживает несколько состояний. См. раздел 9 "Universal Serial Bus Speci-fication, Rev 2.0".
Рисунок
35.16. Диаграмма состояний USB-устройства
Переход от одного состояния к другому зависит от состояния шины USB или стандартных запросов, отправленных посредством транзакций управления через конечную точку по умолчанию (конечная точка 0).
По окончании периода неактивности шины USB-устройство вводит режим приостановки. Получение запросов приостановки/возобновления от USB-хоста является обязательным. В режиме приостановки предъявляется жесткое требование для приложений с питанием от шины: потребление не более 500 мкА.
Находясь в режиме приостановки, хост может активизировать работу устройства путем отправки ему сигнала возобновления (активность шины). Возможно и обратное направление возобновления работы, когда USB-устройство отправляет запрос на возобновление хосту. Это, например, необходимо для возобновления работы ПК при перемещении USB-мыши.
Функция активизации должна поддерживаться хостом и не является обязательной для всех устройств.
35.5.3.1 Переход из запитанного состояния в исходное состояние
После подключения к USB-хосту USB-устройство ожидает сброс шины. USB-хост прекращает состояние сброса сразу после определения подтягивающего резистора на линии DP. После этого устанавливается немаскируемый флаг ENDBURSES в регистре UDP_ISR и запускается прерывание. Программа, управляющая UDP, разрешает конечную точку по умолчанию, устанавливая флаг EPEDS в регистре UDP_CSR[0] и, при необходимости, разрешает прерывание для конечной точки 0 путем записи 1 в регистр UDP_IER. После этого перечисление начнется с передачи "Управление".
35.5.3.2 Переход из состояния по умолчанию в адресное состояние
После поступления стандартного запроса установки адреса устройства USB-хост вводит адресное состояние. Перед этим он достигает транзакции "Ввод статуса" передачи "Управление", т.о. UDP-устройство устанавливает новый адрес сразу после приема и сброса флага TXCOMP в регистре UDP_CSR[0]. Для перехода в адресное состояние программа USB-драйвера устанавливает флаг FADDEN в регистре UDP_GLB_STATE, устанавливает новый адрес и устанавливает бит FEN в регистре UDP_FADDR.
35.5.3.3 Переход из адресного состояния в сконфигурированное состояние
Сразу после приема и подтверждения стандартного запроса установки конфигурации устройство разрешает конечные точки, соответствующие текущей конфигурации. Это выполняется путем установки полей EPEDS и EPTYPE в регистрах UDP_CSRx и, при необходимости, разрешаются соответствующие прерывания в регистре UDP_IER.
35.5.3.4 Разрешение приостановки
После выявления приостановки (отсутствие активности на шине USB) устанавливается сигнал RXSUSP в регистре UDP_ISR. Это приведет к генерации прерывания при условии, что установлен соответствующий бит в регистре UDP_IMR. Данный флаг сбрасывается путем записи в регистр UDP_ICR. После этого устройство вводит режим приостановки. В этом режиме микроконтроллер может, например, переключиться на низкочастотную синхронизацию, отключить ФАПЧ и основной генератор, а затем перейти в режим "Idle". Он также может выключить другие устройства на плате. Синхронизация USB-устройства также может быть отключена, а вот трансивер и периферийный модуль USB отключать нельзя, т.к. в противном случае невозможно будет выявить возобновление.
35.5.3.5 Прием возобновления от хоста
В режиме приостановки, USB-трансивер и модуль USB должны быть запитаны для детекции возобновления (RESUME). Однако модуль USB-устройства не может синхронизироваться, т.к. сигнал WAKEUP является асинхронным. Сразу после выявления на шине возобновления устанавливается сигнал WAKEUP в UDP_ISR. Он может генерировать прерывание, если установлен соответствующий бит в регистре UDP_IMR. Данное прерывание может использоваться для возобновления работы ядра, разрешения работы ФАПЧ и основного генератора, а также для конфигурации синхронизации. Бит WAKEUP должен быть сброшен при первой возможности путем установки WAKEUP в регистре UDP_ICR.
35.5.3.6 Отправка внешнего возобновления
Внешнее возобновление используется совместно с хостом и разрешается путем установки бита ESR в регистре UDP_ GLB_STATE. Асинхронное событие на входе ext_resume_pin периферийного устройства генерирует прерывание WAKEUP. В более ранних реализациях модуля UDP в этом случае незамедлительно генерируется К-состояние на линии USB. Это означает, что USB-устройство должно быть способным очень быстро ответить хосту. В последних версиях, сразу после готовности связи с хостом необходимо программно установить бит RMWUPE в регистре UDP_GLB_STATE, а затем уже генерируется К-состояние.
Бит WAKEUP должен быть сброшен при первой возможности путем установки WAKEUP в регистре UDP_ICR.
