- •Конспект лекций оглавление
- •Общие с ведения о микроконтроллерах
- •Обобщенная структурная схема микроконтроллера
- •Система прерываний
- •Работа системы прерываний
- •Стек данных
- •Микроконтроллеры Intel, Motorola и Microchip
- •Краткое описание особенностей микроконтроллеров
- •Работа сср в режиме шим
- •Примеры контроллеров 18еххх, 16еххх. Характеристики 16 и 18 серии.
- •Периферийные модули
- •Основные характеристики микроконтроллеров
- •Рекомендации по схематическому решению для портов (16 серия)
- •Структура памяти
- •Банк памяти быстрого доступа
- •Регистр выбора банка памяти данных bsr (18 серия)
- •Косвенная адресация, регистра indf и fsr
- •Операция косвенной адресации
- •Механизм косвенной адресации
- •Работа с памятью рiс16fххх
- •Чтение из еерrом-памяти
- •Запись еерrом данных
- •Управление прерываниями Серия рiс16ххх
- •Система прерывании рiс18fхх2
- •Обработка прерываний
- •Контроллеры pic16f87x
- •Карта памяти микроконтроллеров:
- •Структурная схема микроконтроллеров pic16f87x:
- •Служебные регистр:
- •Контроллеры 18 серии
- •Карта памяти микроконтроллеров рiс18f242/442:
- •Регистры конфигурации контроллера:
- •Аппаратный умножитель 8х8
- •Модуль ацп
- •Конфигурация выводов модуля ацп (рiс16f873/76)
- •Источник опорного напряжения
- •Параллельные порты ввода/вывода
- •Последовательный синхронный порт (мssр)
- •Временные диаграммы работы mssp
- •Пример соединения двух мк через spi
- •Режим i2c последовательного порта mssp.
- •Асинхронно-синхронный последовательный порт (usart)
- •Временные диаграммы работы usart в асинхронном режиме
- •Ведомый параллельный порт (psp)
- •Временные диаграммы порта psp
- •Способы кодирования данных
- •Универсальная последовательная шина (usb) Краткий обзор шины
- •Протоколы передачи
- •Питание
- •Оконечные точки
- •Нумерация устройств
- •Описатели
- •Классы устройств / Драйверы класса
- •Микроконтроллеры с модулем usb
- •Приемопередатчик
- •Регистры управления и состояния модуля usb
- •Регистр флагов прерываний модуля usb (uir)
- •Регистр разрешения прерываний модуля usb (uie)
- •Регистр флагов ошибок модуля usb (ueir)
- •Регистр разрешения прерывания по ошибкам модуля usb (ueie)
- •Регистр состояния модуля usb (ustat)
- •Регистр управления модулем usb (uctrl)
- •Регистр адреса usb (uaddr)
- •Регистр состояния программного обеспечения usb
- •Регистры управления оконечными точками (uepn)
- •Буферы оконечных точек
- •Программирование модуля usb
- •Программное обеспечение usb
- •Основные функции и подпрограммы
- •Ресурсы процессора
- •Уровни стека
- •Память программ
- •Память данных
- •Буферные регистры
- •Выбор страниц/Выбор банков
- •Интегрирование подпрограмм usb в программу
Регистр состояния программного обеспечения usb
Этот регистр используется библиотечными подпрограммами обслуживания модуля USB для хранения состояния.
R/W - 0 |
R/W - 0 |
R/W - 0 |
R/W - 0 |
R/W - 0 |
R/W - 0 |
R/W - 0 |
R/W - 0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
7 |
|
|
|
|
|
|
0 |
Регистр состояния программного обеспечения: «USWSTAT» (адрес 197h)
R = читаемый разряд,
W - записываемый разряд,
U = зарезервированный разряд,
-n = значение после сброса.
Разряды 7-2: Функциональные идентификаторы.
Разряды 1-0: Состояние конфигурации.
Регистры управления оконечными точками (uepn)
Три регистра управления оконечными точками содержат биты управления для 6 оконечных точек в соответствии с адресом в регистре USTAT, где оконечная точка - симплексное соединение номера оконечной точки и направления. Оконечная точка 0 (ЕР0) связана с конвейером управления, который требуется USB для всех функций (ввода, вывода и установки). Следовательно, после того, как получено прерывание USB_RST, микропроцессор должен записать в UEP0 код 06h. Неиспользуемые оконечные точки и направления должны быть отключены.
U-0 |
U-0 |
U-0 |
U-0 |
R/W - 0 |
R/W - 0 |
R/W - 0 |
R/W - 0 |
- |
- |
- |
- |
EP_CTL_DIS |
EP_OUT_EN |
EP_IN_EN |
EP_STALL |
7 |
|
|
|
|
|
|
0 |
Регистры управления оконечными точками: 'UEPn' (адрес 198h-19Ah)
R = читаемый разряд,
W - записываемый разряд,
U = зарезервированный разряд,
-n = значение после сброса:
Разряды 7-4: Зарезервированы, читаются как «0».
Разряды 3-1: EP_CTL_DIS, EP_OUT_EN, EP_IN_EN: Определяют состояние и направление оконечной точки:
EP_CTL_DIS |
EP_OUT_EN |
EP_IN_EN |
Состояние и направление оконечной точки |
X |
0 |
0 |
Отключена |
X |
0 |
1 |
Включена только для маркеров ввода |
X |
1 |
0 |
Включена только для маркеров вывода |
1 |
1 |
1 |
Включена для маркеров ввода и вывода |
0 |
1 |
1 |
Включена для маркеров ввода, вывода и установки |
Разряды 0: EP_STALL: Указывает, что оконечная точка остановлена. Этот бит имеет приоритет над всеми другими битами регистра и устанавливается только если EP_IN_EN = 1 или EP_OUT_EN = 1. Обращение к данной оконечной точке по шине будет возвращать взаимодействие ОСТАНОВА. Бит EP_STALL может устанавливается и сбрасывается модулем.
Таблица дескрипторов буферов (BDT)
Дескрипторы буферов и буферы размещены в банке 3 памяти данных микроконтроллера. РIС16С745/765 поддерживает дескрипторы буферов (BD) для следующих оконечных точек:
-EP0 OUT USTAT<00h> UEP0
-EP0 INU STAT<01h> UEP0
-EP1 OUT USTAT<02h> UEP1
-EP1 IN USTAT<03h> UEP1
-EP2 OUT USTAT<04h> UEP2
-EP2 IN USTAT<05h> UEP2
Для эффективного управления связью с оконечной точкой модуль USB имеет в пространстве регистров таблицу дескрипторов буферов (BDT). Дескриптор буфера (BD) для каждой оконечной точки указывает на буфер данных в двухпортовой памяти и состоит из 4 регистров:
- регистр состояния буфера доступный ядру процессора только для записи (BDndST),
- регистр состояния буфера доступный ядру процессора только для чтения (BDndST),
- счетчик байтов буфера (BDndBC),
- начальный адрес буфера (BDndAL).
Где n — симплексное соединение номера оконечной точки и направления в регистре USTAT.
Поскольку буферы доступны и ядру процессора и модулю USB, то для того чтобы различить, кто может модифицировать BD и буфер в памяти системы, используется простой механизм семафора бит UOWN в регистре BDndST.
Если бит UOWN = «0», то доступ к BD и буферу в памяти имеет ядро процессора. Если бит UOWN = «1», то доступ к BD и буферу в памяти принадлежит модулю USB, при этом ядро процессора не должно изменять BD или соответствующий буфер данных.
Дескриптор буфера содержит информацию управления буфером оконечной точки для модуля USB и ядра процессора. Дескриптор буфера, в зависимости от состояния бита UOWN, содержит различные значения.
W - X |
W - X |
U-X |
U-X |
W - X |
W - X |
U-X |
U-X |
UOWN |
DATA 0/1 |
- |
- |
DTS |
BSTALL |
- |
- |
7 |
|
|
|
|
|
|
0 |
Дескриптор буфера, регистр состояния, для записи MCU: «BDndST» (адреса 1A0h, 1A4h, 1A8h, 1ACh, 1BOh, 1B4h)
R = читаемый разряд,
W - записываемый разряд,
U = зарезервированный разряд,
С - сбрасываемый разряд,
- n = значение после сброса,
X - не определено
Разряд 7: UOWN: Этот бит определяет, кто в настоящее время владеет буфером. После завершения обработки маркера модуль записывает в этот бит 0. MCU при инициализации BD всегда должен устанавливать этот бит последним.
1 = монопольный доступ к BD модуля USB.
0 = монопольный доступ к BD MCU.
Разряд 6: DATA 0/1: Этот бит переключатель пакетов переданных или полученных данных.
1 = пакет данных 1
0 = пакет данных 0
Разряды 5-4: Зарезервированы, читаются как «X».
Разряд 3: DTS: Установка этого бита разрешает модулю USB выполнить синхронизацию переключателя данных. Если пакет получен с неправильным переключателем, то он будет игнорироваться и буфер останется неизмененным.
1 = выполнять синхронизацию переключателя данных
0 = синхронизации переключателя данных не делать
Разряд 2: BSTALL: Останов буфера. Установка этого бита вызовет передачу взаимодействия ОСТАНОВ. Если установлен бит BSTALL, то USB не использует BD и соответствующий буфер.
Разряды 1-0: Зарезервированы, читаются как «X».
Примечание. Для модификации разрядов не рекомендуется использовать команды BSF, BCF, так как регистр доступен только по записи.
R/W - X |
R/W - X |
R/W - X |
R/W - X |
R/W - X |
R/W - X |
U-X |
U-X |
UOWN |
DATA 0/1 |
PID3 |
PID2 |
PID1 |
PID0 |
- |
- |
7 |
|
|
|
|
|
|
0 |
Дескриптор буфера, регистр состояния, для чтения MCU: «BDndST» (адреса 1AOh, 1A4h, 1A8h, 1ACh, 1BOh, 1B4h)
R = читаемый разряд,
W - записываемый разряд,
U = зарезервированный разряд,
С - сбрасываемый разряд
- n = значение после сброса:
X - не определено
Разряд 7: UOWN: Этот бит определяет, кто в настоящее время владеет буфером. После завершения обработки маркера модуль записывает в этот бит 0. MCU при инициализации BD всегда должен модифицировать этот бит последним.
1 = монопольный доступ к BD модуля USB.
0 = монопольный доступ к BD MCU.
Разряд 6: DATA 0/1:Этот бит переключатель пакетов переданных или полученных данных.
1 = пакет данных 1
0 = пакет данных 0
Разряды 5-2: PID <3:0>: Идентификатор пакета. Значение полученное в маркере PID.
Разряды 1-0: Зарезервированы, читаются как «X».
U-X |
U-X |
U-X |
U-X |
R/W - X |
R/W - X |
R/W - X |
R/W - X |
- |
- |
- |
- |
BC3 |
BC2 |
BC1 |
BC0 |
7 |
|
|
|
|
|
|
0 |
Дескриптор буфера счетчик байтов: «BDndBC» (адреса 1A1h, 1A5h, 1A9h, 1ADh, 1B1h, 1B51,)
R = читаемый разряд,
W - записываемый разряд,
U = зарезервированный разряд,
С - сбрасываемый разряд,
- n = значение после сброса,
X - не определено
Разряды 7-4: Зарезервированы, читаются как «X».
Разряды 3-0: ВС <3:0>: Счетчик байтов, которые будут переданы по маркеру ввод или получены по маркеру вывод. Диапазон счета от 0 до 8. После завершения обработки маркера вывод или маркера установки модуль USB заполняет это поле фактическим числом полученных байт данных.
Модуль USB использует данные в BD, когда UOWN = 1, которые содержат:
- значение PID Data0 или Datal,
- разрешение синхронизации переключателя данных,
- число байт для передачи или приема,
- начальный адрес буфера.
Ядро процессора использует данные в BD, когда UOWN = 0, которые содержат:
- значение PID Data0 или Data 1,
- полученный маркер PID,
- число переданных или принятых байт.
R/W - X |
R/W - X |
R/W - X |
R/W - X |
R/W - X |
R/W - X |
R/W - X |
R/W - X |
BA7 |
BA6 |
BA5 |
BA4 |
BA3 |
BA2 |
BA1 |
BA0 |
7 |
|
|
|
|
|
|
0 |
Дескриптор буфера, начальный адрес буфера: (адреса 1A2h, 1A6h, 1AAh, 1AEh, 1B2h, 1B6h)
R - читаемый разряд,
W - записываемый разряд,
U = зарезервированный разряд,
С - сбрасываемый разряд
- n = значение после сброса: X - не определено
Разряды 7-0: ВА <7:0>: Начальный адрес буфера для данной оконечной точки. Старший разряд 9-разрядного адреса (ВА8) всегда равен 1, что указывает на банк 3, где расположена двухпортовая память модуля USB (1B8h- 1DFh).
Примечание. Этот регистр должен всегда содержать значение в диапазоне B8h-DFh.