- •Отличительные особенности микроконтроллеров 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. Функциональное описание
35.5.1 Общие сведения о стандарте полноскоростной USB-связи версии 2.0
Полноскоростная USB-связь версии 2.0 позволяет установить соединение между хостом и присоединенным USB-устройством. Каждое устройство предлагает совокупность коммуникационных потоков (конвейеров), связанных с каждой конечной точкой. Программное обеспечение хоста связывается с USB-устройством через набор коммуникационных потоков.
Рисунок
35.3. Пример управления полноскоросостной
USB-связью версии 2.0
35.5.1.1 Тип полноскоростной USB-связи версии 2.0
Коммуникационный поток переносится с помощью одного из четырех типов передач, определяемых USB-устройством.
Таблица 35.2. Коммуникационный поток USB
35.5.1.2 Транзакции шины USB
|
Передача |
Направление |
Пропускная способность |
Размер конечной точки |
Детекция ошибок |
Повторение |
|
Управление |
Двунаправленное |
Не гарантирована |
8, 16, 32, 64 |
Есть |
Автоматич. |
|
Изохронная |
Однонаправленное |
Гарантирована |
1-1023 |
Есть |
Нет |
|
Прерывание |
Однонаправленное |
Не гарантирована |
меньше или равно 64 |
Есть |
Есть |
|
Поток |
Однонаправленное |
Не гарантирована |
8, 16, 32, 64 |
Есть |
Есть |
Результатом каждой передачи является одна или более транзакций на шине USB. Существует 5 разновидностей транзакций, передаваемых по шине в пакетах:
Транзакция "Установка".
Транзакция "Ввод данных".
Транзакция "Вывод данных".
Транзакция "Ввод статуса".
Транзакция "Вывод данных".
35.5.1.3 Определения событий USB-передачи
Как будет показано ниже, передачи - последовательность событий, происходящие на шине USB.
Таблица 35.3. События USB-передачи
|
Передачи "Управление" (прим. 1, 3) Транзакция "Установка" > транзакция "Ввод данных" > транзакция "Вывод статуса". |
Транзакция "Установка" > транзакция "Вывод данных" > транзакция "Ввод статуса". Транзакция "Установка" > транзакция "Ввод статуса". |
|
Передача "Ввод прерывания" (в направлении устройство-хост) |
Транзакция "Ввод данных" > транзакция "Ввод данных" |
|
Передача "Вывод прерывания" (в направлении хост-устройство) |
Транзакция "Вывод данных" > транзакция "Вывод данных" |
|
Передача "Изохронный ввод" (прим. 2) (в направление устройство-хост) |
Транзакция "Ввод данных" > транзакция "Ввод данных" |
|
Передача "Изохронный вывод" (прим. 2) (в направлении хост-устройство) |
Транзакция "Вывод данных" > транзакция "Вывод данных" |
|
Передача "Ввод потока" (в направлении устройство-хост) |
Транзакция "Ввод данных" > транзакция "Ввод данных" |
|
Передача "Вывод потока" (в направлении хост-устройство) |
Транзакция "Вывод данных" > транзакция "Вывод данных" |
Прим.:
Передача "Управления" должна использовать конечные точки без переключающихся банков памяти.
Изохронные передачи должны использовать конечные точки с переключающимися банками памяти.
Передачи "Управление" могут быть отменены с помощью процедуры квитирования останова.
35.5.2 Управление транзакциями периферийного модуля USB-устройства версии 2.0
35.5.2.1 Транзакция "Установка"
Установка - специальный тип транзакции в направлении хост-устройство, используемый в ходе передач "Управление". Передачи "Управление" должны выполняться с помощью конечных точек, которые не используют переключающихся банков памяти. Обработка транзакции "Установка" выполняется программно, как можно быстрее. Она используется для передачи запросов от хосту к устройству. После передачи, запросы обрабатываются USB-устройством и могут потребовать большего числа аргументов. Аргументы передаются в устройство с помощью транзакции "Вывод данных", которая следует за транзакцией "Установка". Данные запросы могут также возвращать данные. Данные передаются хосту транзакцией "Ввод данных", которая следует за транзакцией "Установка". Транзакция "Статус" завершает передачу управления.
После приема конечной точкой передачи "Установка":
USB-устройство автоматически подтверждает пакет "Установка"
устанавливается бит RXSETUP в регистре UDP_ CSRx
генерируется прерывание конечной точки до тех пор, пока не сбросится бит RXSETUP. Если для данной конечной точки активировано прерывание, то оно поступает в микроконтроллер.
Таким образом, программа должна следить за состоянием бита RXSETUP путем опроса регистра UDP_ CSRx или ожидать прерывание, а затем считать пакет "Установка" из буфера FIFO и сбросить бит RXSETUP. RXSETUP не возможно сбросить до тех пор, пока пакет "Установка" не будет считан из буфера FIFO. В противном случае, USB-устройство должно принять следующую передачу "Вывод данных" и перезаписать его в буфер FIFO поверх пакета "Установка".
Рисунок
35.4. Транзакция "Установка", следующая
за транзакцией "Вывод данных"
35.5.2.2 Транзакция "Ввод данных"
Транзакции "Ввод данных" используются в передачах "Управление", "Изохронная", "Поток" и "Прерывание" и выполняют передачу данных в направлении от устройства к хосту. В изохронных передачах транзакции "Ввод данных" должны выполняться с помощью конечных точек, которые поддерживают переключающиеся банки памяти.
35.5.2.3 Использование конечных точек без переключающихся банков памяти
Для выполнения транзакции "Ввод данных" с использованием конечной точки без переключающихся банков памяти необходимо выполнить следующую последовательность:
Микроконтроллер проверяет возможность записи в FIFO путем опроса TXPKTRDY в регистре конечной точки UDP_ CSRx (TXPKTRDY должен быть равен нулю).
Микроконтроллер записывает передаваемые данные в FIFO конечной точки (регистр UDP_ FDRx).
Микроконтроллер уведомляет периферийный модуль USB о завершении записи данных путем установки TXPK-TRDY в регистре конечной точки UDP_ CSRx.
USB-устройство уведомляет микроконтроллер об освобождении FIFO конечной точки после установки TXCOMP в регистре UDP_ CSRx конечной точки. После этого генерируется прерывание соответствующей конечной точки до тех пор, пока будет установлен бит TXCOMP.
TXCOMP устанавливается USB-устройством после приема сигнала подтверждения пакета ввода данных "ACK PID". Прерывание будет генерироваться до тех пор, пока будет установлен бит TXCOMP.
Прим: более детальную информацию по протокольному слою "Ввод данных" см. в разделе 8 "Universal Serial Bus Specification, Rev 2.0".
Рисунок
35.5. Передача "Ввод данных" для
конечной точки без переключающихся
банков памяти
35.5.2.4 Использование конечных точек с переключающимися банками памяти
Использование конечной точки с переключающимися банками памяти необходимо в ходе изохронной передачи. Для гарантирования постоянства пропускной способности шины микроконтроллер должен подготовить следующие данные во время передачи текущих данных USB-устройством. Таким образом, необходимо использовать два банка памяти. Когда один из банков памяти назначен микроконтроллеру, другой используется USB-устройством.
Рисунок
35.6. Переключение банков памяти в ходе
передачи "Ввод данных"
При выполнении транзакций "Ввод данных" при использовании конечной точки с переключающимися банками памяти необходимо придерживаться следующей последовательности действий:
Микроконтроллер оценивает возможность записи в FIFO путем опроса бита TXPKTRDY регистра UDP_ CSRx, который должен быть равен нулю.
Микроконтроллер записывает первые передаваемые данные в FIFO (банк 0), помещая их в регистр конечной точки FDRx.
Микроконтроллер уведомляет модуль USB о завершении записи данных в банк 0 FIFO путем установки бита TXPKTRDY в регистре конечной точки UDP_ CSRx.
Микроконтроллер записывает вторую часть передаваемых данных FIFO (банк 1), не ожидая сброса TXPKTRDY, помещая их в регистр конечной точки UDP_ FDRx.
Микроконтроллер уведомляется со стороны USB-устройства об освобождении первого банка после установки TXCOMP в регистре конечной точки UDP_ CSRx. До тех пор, пока установлен бит TXCOMP, будет генерироваться прерывание.
Сразу после получения этого уведомления микроконтроллер сообщает USB-устройству, что подготовлена вторая часть данных для передачи, для чего устанавливает бит TXPKTRDY в регистре конечной точки UDP_ CSRx.
На данном этапе банк 0 свободен и микроконтроллер может подготавливать третью часть данных для оправки.
Рисунок
35.7. Передача "Ввод данных" для
конечной точки с переключающимися
банками памяти
Предупреждение: существует одна программная критическая ситуация, вызывная тем фактом, что сразу после заполнения второго банка памяти драйвер должен ожидать TX_COMP для установки TX_PKTRDY. Если задержка между установлением TX_COMP и установлением TX_PKTRDY будет достаточно долгой, то некоторые пакеты "Ввод данных" могут оказаться без подтверждения, что снизит пропускную способность шины.
35.5.2.5 Транзакция "Вывод данных"
Транзакции "Вывод данных" используются в передачах "Управление", "Изохронная", "Поток" и "Прерывание" и выполняют передачу данных в направлении хост-устройство. Транзакции "Вывод данных" в изохронных передачах должны выполняться с помощью конечных точек, поддерживающих переключение банков памяти.
35.5.2.6 Транзакция "Вывод данных" без переключающихся банков памяти
Для выполнения транзакции "Вывод данных", использующей конечную точку без переключающихся банков, необходимо придерживаться следующей последовательности:
Хост генерирует пакет "Вывод данных".
Данный пакет принимается конечной точкой USB-устройства. До тех пор, пока микроконтроллер используется FIFO, связанный с данной конечной точкой, хосту возвращается идентификатор пакета "Нет подтв.". Как только FIFO станет доступным, данные в него будут записаны USB-устройством и подтверждение "Подтв." будет автоматически передано хосту.
USB-устройство уведомляет микроконтроллер о завершении приема данных через бит RX_DATA_BK0 в регистре UDP_ CSRx. До тех пор, пока установлен бит RX_DATA_BK0, будет генерироваться прерывание.
Количество записанных байт в FIFO можно определить по значению поля RXBYTECNT в регистре конечной точки UDP_ CSRx.
Микроконтроллер копирует данные из памяти конечной точки в собственную память. Считывание данных из FIFO выполняется путем чтения регистра конечной точки UDP_ FDRx.
Микроконтроллер уведомляет USB-устройство о завершении копирования путем сброса бита RX_DATA_BK0 в регистре конечной точки UDP_ CSRx.
Новый пакет "Вывод данных" может приниматься USB-устройством.
Рисунок
35.8. Передача "Вывод данных" для
конечных точек без переключающихся
банков памяти
П
рерывание генерируется до тех пор, пока установлен бит RX_DATA_BK0. После сброса RX_DATA_BK0 нельзя выполнять обмен содержимым памяти между USB-устройством, FIFO и памятью микроконтроллера. В противном случае, USB-устройство вынуждено будет принимать очередную передачу "Вывод данных" и перезаписывать текущий пакет "Вывод данных" в FIFO.
35.5.2.7 Использование конечных точек с переключающимися банками памяти
В ходе изохронной передачи использование конечной точки с переключающимися банками памяти является обязательным. Для гарантирования постоянства пропускной способности шины необходимо, чтобы во время приема USB-устройством текущих данных микроконтроллер мог считывать ранее переданные хостом данные. Для этого необходимо использование двух банков памяти. Когда один банк назначен микроконтроллеру, другой может использоваться USB-устройством.
Рисунок
35.9. Передача "Вывод данных" с
использованием конечных точек с
переключающимися банками памяти
Для выполнения транзакции "Вывод данных" при использовании конечной точки с переключающимися банками памяти необходимо придерживаться следующей процедуры:
Хост генерирует пакет "Вывод данных".
Данный пакет принимается конечной точкой USB-устройства. Он помещается в банк 0 FIFO конечной точки.
USB-устройство отправляет хосту идентификатор пакета "Подтв.". Хост может незамедлительно отправить второй пакет "Вывод данных" Он принимается устройством и копируется в банк 1 FIFO.
USB-устройство уведомляет микроконтроллер о завершении приема данных через бит RX_DATA_BK0 в регистре конечной точки UDP_ CSRx. Прерывание генерируется до тех пор, пока установлен бит RX_DATA_BK0.
Количество принятых байт в буфер FIFO можно определить путем чтения RXBYTECNT в регистре конечной точки UDP_CSRx.
Микроконтроллер копирует принятые конечной точкой данные в собственную память. Принятые данные становятся доступными путем чтения регистра конечной точки UDP_ FDRx.
Микроконтроллер уведомляет USB-устройство о завершении копирования путем сброса бита RX_DATA_BK0 в регистре конечной точки UDP_ CSRx.
Третий пакет "Вывод данных" может быть принят USB-устройством и скопирован в банк 0 FIFO.
После приема второго пакета "Вывод данных" устанавливается флаг RX_DATA_BK1 в регистре конечной точки UDP_ CSRx для уведомления микроконтроллера о завершении приема. До тех пор пока установлен флаг RX_DATA_BK1, будет генерироваться прерывание.
Микроконтроллер копирует принятые данные из памяти конечной точки в собственную память. Считывание принятых данных выполняется путем чтения регистра конечной точки UDP_FDRx.
Микроконтроллер уведомляет USB-устройство о завершении копирования путем сброса RX_DATA_BK1 в регистре конечной точки UDP_ CSRx.
Четвертый пакет "Вывод данных" может быть принят USB-устройством и скопирован в банк 0 FIFO.
Рисунок
35.10. Передача "Вывод данных" для
конечной точки с переключающимися
банками памяти
Прим.: прерывание генерируется до тех пор, пока установлен флаг RX_DATA_BK0 или RX_DATA_BK1.
Предупреждение:в случае, если окажутся установленными оба бита RX_DATA_BK0 и RX_DATA_BK1, то определить, какой из них был установлен первым, будет невозможно. Такая ситуация может возникнуть в случае, если во время выполнения микроконтроллером других задач USB-хост заполнил оба банка памяти USB-устройства. После возврата программы микроконтроллера к драйверу USB-связи оба флага будут установлены.
