Комбинированное звуковое USB-устройство с функциями автономного MP3-плеера и поддержкой Bluetooth

5.2 Разработка блок-схемы алгоритма управляющей программы

Управляющий микроконтроллер AT91SAM7SE имеет встроенную программу-загрузчик, которая определяет дальнейший характер его работы. Во-первых, инициализируются DBGU-порт и USB-порт микроконтроллера, затем управление передается программе-загрузчику SAM-BA.

Загрузочная последовательность представлена на рис. 1

3.

Рис. 13. Загрузочная последовательность AT91SAM7SE

Инициализация управляющего микроконтроллера состоит из следующих этапов:

инициализация FIQ (линии быстрого прерывания);

установка стека в режим supervisor;

инициализация встроенного Flash контроллера;

обнаружение внешнего резонатора;

если не обнаружен внешний резонатор, то настройка внутреннего резонатора микроконтроллера;

переключение основной частоты устройства на главный внутренний резонатор;

копирование кода в SRAM-память;

инициализация переменных C;

инициализация PLL;

выключение сторожевого таймера, активация возможности сброса;

инициализация USB-порта;

передача управления загрузчику SAM-BA.

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

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

В режиме звуковой карты управляющий микроконтроллер должен выполнять следующие действия:

получать данные от USB-порта компьютера;

передавать их дальше цифро-аналоговому преобразователю в составе модуля F2M03MLA.

В режиме флеш-памяти AT91SAM7SE должен обеспечить работу со встроенной памятью устройства.

Если нет соединения по USB, то устройство должно выполнять функции MP3-плеера, а именно:

управление при помощи управляющих клавиш;

выдача информации на LCD-дисплей;

считывание информации со встроенной памяти устройства и передача стерео кодеку в составе модуля F2M03MLA;

обеспечение возможности передачи звука на беспроводные наушники.

Таким образом, получили следующую блок-схему алгоритма управляющей программы (рис. 14).

Рис. 14. Блок-схема алгоритма управляющей программы

Работа в качестве звуковой карты, съемного диска или MP3-плеера представляет собой отдельные блоки в прошивке управляющего микроконтроллера.

5.3 Разработка шаблона драйвера устройства

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

Интуитивно ясно, что должна существовать какая-то программная прослойка между аппаратным и программным обеспечением, выполняющая “согласующие” и “унифицирующие” действия. Эта прослойка работает напрямую с аппаратурой, а прикладное и системное программное обеспечение имеет дело только с этой интерфейсной прослойкой. Этой программной прослойкой являются драйвера устройств.

Рассмотрим внутреннюю организацию шины USB.

Система USB подразделяется на три логических уровня с определенными правилами взаимодействия. Устройство содержит интерфейсную, логическую и функциональную части. Все передачи инициируются хостом, а периферийные устройства могут лишь реагировать на его запросы. Хост также делится на три части – интерфейсную, системную и программное обеспечение.

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

Уровень клиентского программного обеспечения в хосте обычно представляется драйвером устройства.

Логическое устройство USB представляет собой набор независимых конечных точек, с которыми клиентское программное обеспечение обменивается информацией. Каждому логическому устройству USB назначается свой адрес, уникальный на данной шине USB. Каждая конечная точка характеризуется своим номером и направлением передачи.

Транзакция на шине USB – это последовательность обмена пакетами между хостом и периферийным устройством, в ходе которой может быть передан или принят один пакет данных. Когда клиентское программное обеспечение передает запрос уровню системного драйвера, USB-драйвер преобразует его в одну или несколько транзакций шины и затем передает получившийся перечень транзакций контроллеру хоста.

Хост контроллер передает данные периферийному устройству в виде кадров. Каждая передача состоит из одной или нескольких транзакций. Каждая транзакция состоит из пакетов. Каждый пакет состоит из идентификатора пакета, данных и контрольной суммы.

Существует четыре различных типа передачи:

управляющие передачи – для конфигурирования устройства во время подключения, для управления устройство и получения статусной информации в процессе работы;

передачи массивов данных – для обеспечения гарантированной доставки данных, однако время доставки неограниченно;

передачи по прерываниям – передача одиночных пакетов данных небольшого размера за ограниченное время;

изохронные передачи – для обмена данными в реальном времени, имеют наивысший приоритет.

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

Запрос к устройству и его параметры передаются в виде конфигурационного пакета. Стандартные запросы к устройству – это:

получение состояния (GET_STATUS) – позволяет определить состояние устройства, интерфейса или конечной точки;

сброс свойства (CLEAR_FEATURE) – для запрета свойства или состояния;

разрешение свойства (SET_FEATURE);

задание адреса на шине (SET_ADDRESS) – для присвоения устройству адреса;

получение дескриптора (GET_DESCRIPTOR) – для получения дескриптора устройства, конфигурации или точки;

передача дескриптора (SET_DESCRIPTOR) – позволяет дополнить существующий дескриптор или добавить новый дескриптор устройства, конфигурации или строки;

получение кода конфигурации (GET_CONFIGURATION) - устройство выдает код своей текущей конфигурации;

задание кода конфигурации (SET_CONFIGURATION) – позволяет задать устройству новую конфигурацию.

Дескриптор устройства – это структура данных или форматированный блок информации, который позволяет хосту получить описание устройства.

Стандартный дескриптор устройства содержит основную информацию об USB-устройстве и его конфигурациях. Устройство должно иметь только один такой дескриптор, однако если устройство может работать в нескольких режимах (на разных скоростях), то оно должно иметь еще и уточняющий дескриптор.

Страница:  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 
 16  17  18  19  20  21  22  23  24  25 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы