Поиск по сайту: |
|
По базе: |
|
Главная страница > Применение > Микроконтроллеров > AVR |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
AVR280Демонстрация USB CDC хоста1.ВведениеИнтерфейс RS232 исчезает из ПК нового поколения, его заменяет интерфейс USB. Для соответствия этому изменению приложения на базе интерфейса UART должны переходить на USB. Переход на USB может привести к сложным разработкам как на стороне устройства, так и на стороне ПК. Для того, чтобы избежать этих сложностей, Atmel предлагает Вам решение на базе класса CDC (Communication Device Class):
Цель этого документа — описание начала реализации и разработки CDC хост-приложения с использованием отладочного набора STK525 или USBKEY, и в конце демонстрируется простой пример двойного моста USB-UART между двумя ПК. Предполагается, что разработчик знаком с программным шаблоном AVR USB (http://www.atmel.com) и спецификацией CDC (http://www.usb.org).
2. Принцип работы2.1 Конфигурирование CDC 2.1.0.1 USB Конфигурирование CDC класса заключается в конфигурировании двух интерфейсов:
В итоге, CDC приложение должно иметь два канала в добавок к управляющей конечной точке. Но заметьте, что CDC устройство распознается стандартным ПК, (с помощью драйвера по умолчанию) только если оно содержит опциональный элемент регистрации. 2.1.0.2 Модели Спецификация CDC класса представляет различные модели связи. Каждая модель характеризуется типом реализованного интерфейса и поддерживаемыми командами или протоколом. Это особенно используеется при связи с USB модемами, которые могут использовать специфический уровень протокола (например V42bis), и даже с USB телефонами и т.д. Но для пользователей, которые не принимают во внимание эти модели, а только хотят реализовать обмен данными между двумя приложениями, эти модели не имеют значения. Эти «рекомендации» коротко представляют читателю эти модели и соответствующие команды и /или запросы. Как бы то ни было, основная цель этого документа — объяснить архитектуру низкого уровня CDC хост приложения и продемонстрировать простейшую конфигурацию на демонстрационном примере. 2.2 Передачи 2.2.1. Передачи данных 2.2.1.1 Исходные данные После того, как хост провел энумерацию устройства, можно легко пересылать данные между приложениями.
Это простейший способ для реализации обмена данными между двумя базовыми приложениями с использованием USB, но с простотой UART:
Это самый простой случай использования моста UART-USB. В такой конфигурации когда устройство прошло энумерацию и было сконфигурировано, интерфейс управления может не использоваться, а весь обмен данными осуществояться через интерфейс данных. 2.2.1.2 Инкапсулированные данные Для приложений более высокого уровня CDC класс определяет формат инкапсуляции данных для обработки пакета упаковщиком данных протокола. Этот режим здесь обсуждаться не будет, т.к. Он выходит за рамки простой демонстрации. Для получения более подробной информации см. Таблицу 1 на стр 1 Спецификации CDC ("CDC Class Specification v1.1"). 2.2.2 Управление связью Эта часть класса не является обязательной для приложений осуществляющих простой обмен данными. 2.2.2.1 Управляющий элемент Хост может посылать двунаправленные запросы устройству через управляющую конечную точку. Формат этих запросов соответствует Спецификации USB 2.0: Таблица 2-1. Формат пакета управляющего запроса
Можно рассматривать два типа запросов:
2.2.2.2 Регистрирующий элемент Через этот опциональный канал (IN передача по прерываниям ) устройство может передавать хосту специальные сообщения о событиях. Таблица 2-2. Формат сообщения о событии
Несколько примеров:
Для получения более подробной информации о реализации связи, пожалуйста, прочитайте главу 6 спецификации CDC класса. 3. Архитектура программного обеспечения AtmelНиже приведен обзор архитектуры программного обеспечения CDC хоста, где представлены все необходимые для работы файлы.
Управление CDC осуществляется с помощью файла "host_cdc_task.c". Главная функция, которая периодически вызывается планировщиком — host_cdc_task(void) — которая выполняет три основные операции:
3.1 Энумерация Когда устройство подключается к хосту, начинается процесс энумерации. Если задача нижнего уровеня программного обеспечения хоста, которая сравнивает дескрипторы устройства со списком поддерживаемых интерфейсов, «принимает» интерфейс устройства, то host_cdc_task() «видит» сообщение о подключении (Is_new_device_connection_event() возвращает TRUE). Текущее количество «принятых» интерфейсов возвращается функцией Get_nb_supported_interface(). Для каждого номера интерфейса программа имеет доступ к кодам класса, подкласса и протокола благодаря макросам Get_class(i), Get_subclass(i) и Get_protocol(i). Во-первых, программа проверяет есть ли у подключенного устройства CDC интерфейс данных. Если интерфейс устройства принят, функция соединения обнаруживает, какой канал IN, какой OUT для связи их с более общими именами: pipe_cdc_data_bulkin и pipe_cdc_data_bulkout. После этого IN канал может принимать данные в канал. Затем программа проверяет, есть ли у устройства CDC интерфейс связи (регистрирующий элемент). Если есть, адрес канала также сохраняется под более общим именем pipe_cdc_comm_int. Пользователь разрешает определение управляющего интерфейса с помощью определения CDC_USE_MANAGEMENT_INTERFACE. Номер интерфейса сохраняется в переменной cdc_interface_comm, потому что он будет нужен, если используются управляющие запросы.Когда соединение принято, флаг cdc_connected устанавливается в 1 и каналы могут быть использованы приложением пользователя. Ниже приведен соответствующий код функции: Код 3-1. Определение подключения CDC устройства
3.2 Передача данных Передачу данных очень легко реализовать. 3.2.1 Получение данных Если подключено CDC устройство, программа проверяет так часто, как это возможно (каждый раз при входе в в функцию), приняты ли каналом новые данные. Рассматриваемое программное обеспечение позволяет выполнять две операции с данными каналов:
Код 3-2. Чтение данных из устройства
Эти операции реализованы с целью оценки. Пользователь может использовать эту функцию «как есть», но также может реализовать свой собственный обработчик данных (или упаковщик данных, например), имеющий доступ непосредственно к каналу. 3.2.2 Посылка данных Принцип работы очень похож на прием данных. Данные, которые нужно отправить, сначала сохраняются в массиве cdc_stream_out_array[CDC_STREAM_OUT_SIZE]. Глобальная переменная tx_counter содержит текущее количество сохраненных байт, и таким образом, указывает на положение следующего сохраняемого байта. Существует два возможных источника данных для массива:
Более того, существует два возможных условия передачи данных массива в OUT канал:
Передача по каналам USB обеспечивается функцией cdc_pipe_out_usb_flush(). Код 3-3. Посылка данных устройству
Код 3-4. Дополнительные функции
3.3 Управление связью 3.3.1 Управляющий элемент Через нулевую конечную точку пересылаются специфические запросы CDC? Определенные в спецификации CDC класса. Эти запросы могут быть определены в следующей форме: Код 3-5. Схема управляющего запроса
Где параметры, написанные полужирным курсивом, должны быть заменены параметрами, соответствующими специфическому запросу. Поле W_INDEX обычно равно "cdc_interface_comm", что соответствует интерфейсу управления (если он разрешен) устройства. Поле W_LENGTH содержит число байт, передающихся в запросе. Данные (для передачи или полученные) храняться в соответствующем массиве. Пользователь может легко добавить другой запрос путем изменения файла "host_cdc_task.h". Как бы то ни было некоторые из них уже интегрированы в програамное обеспечение CDC хоста от Atmel. 3.3.1.1 Инкапсулированные запросы Эти запросы используются для передачи специфических запросов, которые инкапсулированы в соответствии со специфическим протоколом. Таблица 3-1. Запрос SEND_ENCAPSULATED_COMMAND
Таблица 3-2. Запрос GET_ENCAPSULATED_RESPONSE
3.3.1.2 Запросы параметров связи Эти запросы могут использоваться для посылки (получения) конфигурации CDC устройства, для связи по UART. Таблица 3-3. Запрос SET_LINE_CODING
Таблица 3-4. Запрос GET_LINE_CODING
Таблица 3-5. Структура кодирования строки
3.3.2 Регистрирующий элемент Регистрирующий элемент, который состоит из дополнительной IN конечной точки, получает сообщения о событиях от устройства. Рассматриваемое программное обеспечение Atmel для CDC хоста не включает в себя упаковщика пакетов для этого канала. Но отведено место для пользовательского обработчика сообщений. Пожалуйста, для получения более подробной информации о возможностях, предоставляемых этим интерфейсом, прочитайте спецификацию CDC класса. Код 3-5. Шаблон обработчика сообщений канала
4. Пример4.1 Обзор Вся эта теория может показаться сложной, поэтому здесь с целью ознакомления приведен простой пример — двойной мост UART-USB, — который позволяет осуществить быструю оценку и является введением в разработку устройства CDC класса. В этой конфигурации, CDC хост приложение соединено через UART с последовательным портом ПК-1. У CDC устройства также есть UART, который подключен или к другому последовательному порту этого же ПК-1 или к последовательному порту другого ПК-2. Оба CDC приложения соединены вмести через USB. Это приложение, бесполезное в промышленном или потребительском использовании, просто показывает механизм обмена данными в устройствах CDC.
Замечание: Могут использоваться дополнительные CDC платы для реализации портов RS232 на ПК, если на них доступны только USB порты. CDC устройство может быть реализовано на любом AVR USB с использованием программного обеспечения, доступного на сайте Atmel. CDC хост использует соответствующее программное обеспечение, которое также доступно в интернет. 4.2 Аппаратное обеспечение Оба программных обеспечения могут быть запущены на доступных стартовых наборах. На время написания программное обеспечение для CDC хоста может быть запущено на STK525 или USBKEY (для AT90USB647/1287 ), а програамное обеспечение для CDC устройства может быть запущено на STK525, USBKEY (AT90USB64x/128x) или STK526 (AT90USB82/162). Плата с USB устройством должна быть сконфигурирована в режиме питания от шины для простейшей работы. Плата с USB хостом должна иметь собственный источник питания (внешний источник питания) и сконфигурирована так, чтобы обеспечивать питание платы с USB устройством. 4.3 Программное обеспечение 4.3.1 Микроконтроллер 4.3.1.1 Описание работы Этот пример не осуществляет обмен данными через управляющий интерфейс. Как бы то ни было, этот интерфейс может быть реализован для обеспечения совместимости с другими CDC приложениями. После энумерации каждый байт, полученный от ПК-1 будет отправлен из UART в OUT канал CDC хоста, получен в OUT конечную точку CDC устройства и в конце концов передан в ПК-2 через UART. Байты, посылаемые из ПК-2, идут в обратном направлении и «прибывают» в последовательный буфер ПК-1. 4.3.1.2 Конфигурирование Некоторые параметры должны быть определены на каждом микроконтроллере для обеспечения правильной работы. Программное обеспечение требует модификации, и оно работает «как есть» и сконфигурировано значениями, приведенными ниже.
4.3.2 Последовательный порт ПК Для простого использования последовательного порта ПК вы можете использовать терминал. Под Windows вы можете запустить Hyper Terminal (Accessories => Communications). Сначала вы должны выбрать COM порт, к которому подключено приложение (хост или устройство). Затем должна быть правильно проведена конфигурация порта. Используя программное обеспечение без изменений, вы должны установить следующую конфигурацию:
Затем появляется диалоговое окно терминала, в которое вы можете вводить символы для посылки в открытый порт или видеть принятые символы. Каждый символ, который вы введете на экране ПК-1 появится на ПК-2 и наоборот. 5. ВыводВ заключение следует отметить, что CDC класс — это широкая спецификация, которая охватывает много различных конфигураций, и соответствует нескольким стандартам связи для поддержки таких устройств, как: модем, мобильные телефоны, интерфейсы LAN... Хотя работа по реализации таких устройств может быть очень значительной, базовая реализация обмена данными вполне доступна. Эти «рекомендации» были созданы, чтобы помочь людям, которые хотят использовать хост совместимость продуктов Atmel AVR USB для реализации мощной системы связи, легкой в использовании и надежной, с использованием современнфх технологий. Приложения, такие как мост USB-UART (или похожие) могут быть легко созданы. 6. Связанные документыAVR USB products Datasheet USB Sotware Framework Документация
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|