Avr287 демонстрация домакин USB скри и USB масово съхранение, AVR-трудоспособна с-USB, програмиране

Превод лист AVR287 [1] на Atmel, описва пример на устройството гостоприемник за USB HID (клавиатура, мишка и други входно / изходни устройства) и USB устройства запаметяващото устройство (флаш памети, външни твърди дискове). Други примери на гостоприемник на USB чип AVR могат да бъдат намерени в библиотеката LUFA [2].

• Примерът се базира на библиотека AVR® USB OTG Намалена домакин
• Работи на чипове AT90USB647 / AT90USB1287
• Поддържа сваляне и не се свали стандартен USB мишка
• Поддържа USB хъб функция (само за USB Mass Storage устройства за съхранение)
• Mass Storage:
- преработени съкратени блок команди (команди намалени блок, RBC)
- SFF-8020i обработват блок команда или ММС-2 (ATAPI)
- обикновено предназначени да UFI, външен дискета устройство (флопи диск, FDD)
- процесор команди SFF-8070i
- Прозрачен SCSI команда набор

Avr287 демонстрация домакин USB скри и USB масово съхранение, AVR-трудоспособна с-USB, програмиране

Фиг. 1-1. домакин на заявление HID и Mass Storage

Сега все повече и повече периферни устройства се използват за свързване на USB интерфейс. Наличие на приемните функции за вградени приложения им дава възможност да подкрепят взаимодействие със стандартен USB устройство и такова заявление получава големите предимства на пазара. Целта на този документ - да се опише как да започнете изпълнението на хост приложения USB базирани на USB HID (USB мишка) и клас USB Mass Storage (устройство за съхранение на данни, флаш памет, външен диск). В края е просто пример за едновременно управление на микроконтролер AT90USB (чипа от серията Atmel Серия-7 с поддръжка на USB) класове устройства USB HID и USB Mass Storage, с подкрепата на файловата система (FAT12 / FAT16 / FAT32). Разбираемо е, че потребителят е запознат с рамката за AVR USB фърмуера на Atmel, както и HID и MassStotage стандарти, които могат да бъдат намерени на usb.org на сайта.

Пример За да започне препоръчва USBKEY заряд, но може да се прилага за всяка друга дъска, на която е монтирана микроконтролер или AT90USB647 AT90USB1287 (например userial [3]).

[2.1 Малко теория: как клас USB HID]

2.1.1. Конфигурацията на HID. Клас USB HID устройство изисква контрол крайна точка (Ctrl крайна точка, ep0. Строго погледнато, наличието на такава крайна точка е необходимо във всеки USB устройство), една крайна точка Прекъсване ПО (за предаване на данните за USB устройства към хост) и един по избор крайна точка Прекъсване OUT (трансфер на данни от хоста към USB устройството). Ep0 обикновено в него участват само USB процес изброяване устройство. Endpoint Прекъсване ПО ПО е предназначена за предаване на доклад от USB устройството към хост (основна трафик мишката, описващ курсора и натискане на бутона) на. Крайна точка Прекъсване OUT се използва за предаване докладва OUT (например, за екипи на светлина желания LED NumLock, CAPSLOCK, ScrollLock на клавиатурата) от приемащата към USB устройство. Според стандартната USB мишка необходимо да има един контролен крайна точка Ctrl крайна точка, ep0 и една крайна точка Прекъсване ПО.

2.1.2. Преносът на данни. Приложение USB HID (USB мишка) използва прост обмен на данни между страната домакин и на мишката. Хост анкети мишката на редовни интервали P (избирателните интервал от време, интервалът избирателната) за наличие на нови данни и мишки в отговор изпраща данните, ако има такива, в противен случай изпраща NAK маркер (Без Запознат) да каже на хоста, които все още данните. Данните изпратен на хост, наречен доклад. В действителност това е само един блок от байтове на определен формат. Структурата на този отчет е показан по-долу:

[2.2. Малко теория: как USB Mass Storage Class]

2.2.1. Конфигурация Mass Storage. Приложението използва външна памет 2 крайни точки тип насипно а (един в друг OUT) за прилагане на предаване на данни и състояние. Крайна точка 0 (Ctrl крайна точка, ep0) се използва само за изброяване, обработка на грешки, и за да се определи стойността на LUN (Logic звено номер).

2.2.2. Преносът на данни. Комуникацията чрез USB за прилагане Mass Storage се основава на командите SCSI. С други думи, заявление Mass Storage се контролира от набор от SCSI команди, изпратени от хоста да контролира прехвърлянето на файлове. Поради клас LUN Mass Storage позволява на едно устройство за подпомагане на мотрисите за съхранение.

Avr287 демонстрация домакин USB скри и USB масово съхранение, AVR-трудоспособна с-USB, програмиране

Фиг. 2-2. Преглед на USB Mass Storage приложение. Като домакин обикновено включваше компютъра, но в същото този пример, домакин ще работи демонстрация дъска с микроконтролер AVR.

За съжаление SCSI протокол е твърде сложно, така че това може да се разглежда в съответствие с този член. За повече информация се обърнете към стандартната "USB Mass Storage Class само за големи спецификация Транспорт" на usb.org сайт.

[3. Софтуер Архитектура Atmel]

Фигурата по-долу показва архитектурата на HID домакин на фърмуера и Mass Storage, където показаните кодови файлове, използвани в даден проект.

Avr287 демонстрация домакин USB скри и USB масово съхранение, AVR-трудоспособна с-USB, програмиране

Фиг. 3-1. Архитектура домакин HID и Mass Storage.

клас за управление на HID (мишка) се осъществява в host_mouse_task.c модул, а класът на подкрепа Mass Storage реализира host_ms_task.c модул. Scheduler (процедура, наречена непрекъснато в безкраен цикъл главната) периодично предизвиква usb_task подпрограма (свободен), host_mouse_task (свободен) и host_ms_task (свободен). Действието на тези три функции, описани по-долу.

• usb_task (свободен)
- откриване режим USB.
- Преброяване USB / USB хост устройство.
• host_mouse_task (свободен)
- Той проверява дали мишката е свързан.
- Тя получава данни от мишката и изпълнява заявката на потребителя.
- Проверява спирането на мишката домакин.
• host_ms_task (свободен)
- Проверява дали устройство за съхранение на Mass Storage е свързан.
- Изпълнява потребителското приложение.
- Проверки деактивирането устройство Mass Storage от хоста.

Когато USB устройството е свързано към хоста процедура изброяване започва. Кратко изброяване може да се опише като процес на идентифициране на хост USB устройства. Ако фърмуера ще бъде домакин USB интерфейс за свързване на устройството на ниско ниво, ще бъдат проверени за съответствие с устройството дръжки списъка на поддържаните интерфейси (списък е определено в conf_usb.h файл), а след това host_mouse_task на процедура () и host_ms_task () ще видите връзка за уведомяване (Is_new_device_connection_event () макро върне TRUE).

Сегашният брой на приетите устройства ще бъдат върнати Get_nb_device (), ако е позволено USB_HUB_SUPPORT опция conf_usb.h във файла, а броят на интерфейсите ще се приемат върнати Get_nb_supported_interface () функция. За всеки интерфейс на всяко устройство възможно програмна достъп до кодовете на клас, и подклас протокол чрез макро get_class (I), Get_subclass (I) и Get_protocol (I).

Проверките програмата - дали свързаното устройство се поддържа от интерфейса на класа, и ако бъде приет устройство интерфейс, програмата конфигурира канал функция или функция host_auto_configure_endpoint User_configure_endpoint (), в зависимост от това дали, HOST_AUTO_CFG_ENDPOINT conf_usb.h опция във файла дали е разрешено или не.

Когато конфигурация е пълен, хостът изпраща Set_configuration () искане до USB устройството и отива в държавната DEVICE_READY (USB устройство е готов да работи).

Mouse домакин задача, когато получи уведомление за връзката, класа и протокола ще бъдат проверени, за да се уверете, че мишката е свързан. Ако е така, проблемът размрази ПО канал и да го подготви за прехвърляне на данни. По-долу е на съответния код откриване на мишката домакин HID:

Когато задачата е масово събитие съхранение ще видите връзката на новото устройство, в подкрепа на способността на поддръжка на множество устройства за съхранение на маса изглежда за всеки интерфейс за всяко устройство. Ако текущата интерфейс принадлежи към масовата памет, а след това токът се съхранява в устройствата масив на индекс на устройства за съхранение на масови DMS [N] и максималния брой устройства са написани в променливата dms_connected. След това задачата конфигурира канал и канал IN OUT и инициализира всички USB устройства (Mass устройство за съхранение). По-долу е код за откриване на хост устройство Mass Storage.

3.2.1. Задачата на приемащата HID, работа с мишката. Ако мишката е свързан, тогава проблемът е, всеки път, когато първо се проверява дали е валиден ПО пакет получили. Когато има налични данни, програмата чете функцията Host_read_byte данни () и изпълнява алгоритъм за обработка потребителски действия (какво да се прави, за да се справят с новите данни на курсора на мишката и натискания на клавиши). След това, приемащата изпраща функция команда ПО-Host_read_byte (), а след това задачата е готов да получи следващия пакет данни. По-долу е кода за обработка на данни домакини от мишката. Което показва, светодиоди Led3..Led0 показват състоянието на данните на мишката (емулира прилагане на потребителя).

мишка данни на операции по усъвършенстване се прилагат само за демонстрационни цели - в зависимост от посоката на курсора ще се включва и изключва различни индикатори за светодиоди на USBKEY борда. Потребителят може да използвате тази функция, "както е", но всъщност в този момент трябва да е водачът на данни от (прилагане потребител) на мишката.

3.2.2. домакин за обработка на задачи Mass Storage. Както вече споменахме, заявление Mass Storage използва набор от SCSI команди, изпратени от домакина в подкрепа на четене и писане на файлове на диск MSD. Основна предаване на данни се извършва host_get_data () и host_send_data (). Прилагането на потребителя трябва да приложи енкодер SCSI протокол, файлова система декодер (вж. Apnout AVR114 [5]).

Всичко това теория може да изглежда обезсърчително, така че тук е един прост пример, можете бързо да се опитаме изпълнение USB хост за USB HID клас, както и USB Mass Storage.

В тази конфигурация, на борда оценка първото свързване към компютър чрез USB компютър интерфейс, работи като устройство за съхранение на USB устройство за масово съхранение, създаване извадковите данни. Тогава на борда оценка е изключен от компютъра, и е свързан с устройство за съхранение на устройството Mass Storage (USB флаш устройство), за да покаже на прехвърлянето на данни Mass Storage. Можем също така да се свърже стандартен USB мишка с демо борда,
за да покаже работата на приложението за домакин, който обработва протокол USB HID мишката.

Приложение домакин USB HID и Mass Storage може да бъде реализирано и от на AVR, които имат хардуерен интерфейс, с функцията за домакин с помощта на софтуерния пакет на разположение на интернет страницата на Atmel.

Прибл. Превод: в действителност, "на който и да е AVR" твърде силно. В действителност, броят на AVR чипове, които поддържат функцията на домакин, е много ограничен - това е просто едно семейство на AVR USB Series7, която включва 2 чип: AT90USB647 и AT90USB1287. Причината е ясна - да подкрепя множество качествени характеристики изисква много повече памет и производителност, отколкото е на разположение от класическия AVR.

И двата софтуерни пакети могат да се движат по-добрите стартови китове. По време на това писание пакети за подпомагане HID домакин и домакин Mass Storage могат да се движат по STK525 дъски и USBKEY (където чипс или AT90USB647 AT90USB1287 инсталирани). Устройство USB външна памет, която е свързана с приемащата масово съхранение, може да бъде всяка конвенционална пръчка USB памет или стартер-кит, действащи като USB устройство за масово съхранение (вж. [5, 6]).

домакин на борда трябва да работи в режим на хост (свързан съединител Minia). За картата в режим домакин изисква конфигуриране и свързване на външен източник на захранване. Причината е очевидна - домакин съвет се нуждае от храна, както и USB устройство (мишка HID или устройство Mass Storage) изисква енергия за доставка чрез USB.

[4.3. Софтуер]

4.3.1. Описание на длъжността. За проблема с преработка домакин протокол USB HID мишката, ако свържете стандартен USB мишка с демо борда, а след това преместете мишката, за да се покаже запалване LED демо борда LED3..LED0. След като премина изброяването, събитието получаване в пакета да се задейства, когато мишката се премества, дали, когато тя ще бъде натиснат. Водещ чете данни мишка чрез USB интерфейс. Придвижване X оста се контролира и горене LED0 LED1 (ако X> 0 превръща LED0, когато X <0 включится LED1), а по оси Y перемещение будет отображаться горением LED2 и LED3 (при Y> 0 завоите на LED2, когато Y <0 включится LED3).

За проблема с USB Host Mass Storage домакин веднъж преминал изброяване MSD устройство може да бъде за обмен на файлове между данните, записани на картата домакин на флаш-диск (чип памет е монтиран на борда) и USB MSD устройството. Дясната позиция на джойстика ви позволява да четете съдържанието на папка "OUT" на минималния набор от данни на USB устройство и да го запишете на приемащата карта с флаш-диск в папка "В". От друга страна, от лявата позиция на джойстика ви позволява да замените данните в обратна посока, с dataflash чип диск на USB устройство MSD.

4.3.2. Конфигурация. Някои параметри трябва да бъдат конфигурирани индивидуално за всеки тип микроконтролер да се гарантира правилното функциониране на кода за USB хост. не е необходимо да се модифицира основния код на софтуера, той ще бъде конфигуриран да стойностите, определени по-долу.

• Конфигурация USB, в conf_usb.h файл:
- трябва да се допуска USB_HOST_FEATURE опция за USB хост функция.
- USB_DEVICE_FEATURE трябва да се допуска възможността за свързване към компютър PC.
- в масива трябва да съдържа VID_PID_TABLE VID и PID стойности на поддържаните устройства, ако това е позволено опция HOST_STRICT_VID_PID_TABLE.
- CLASS_SUBCLASS_PROTOCOL масив трябва да включва клас HID клас Mouse протокол. В подкрепа на стандартните USB мишки, за да бъдат включени за сваляне (стартиращ) и сваляне (не-стартиращ) подкласове, както и за подкрепа на USB MSD устройства трябва да бъдат свързани интерфейс Mass Storage (клас Mass Storage, SCSI подклас, само насипно Protocol). Всички тези елементи са клас / подклас / протокол трябва да се добави от потребителя, ако искате да използвате хъб.
- Тя трябва да бъде позволено USB_HUB_SUPPORT опция, ако искате да използвате няколко устройства USB MSD.
- HOST_STRICT_VID_PID_TABLE опция може да бъде разрешена или забранена. В подкрепа на различни продукти от различни производители се препоръчва да се забрани този макрос.
• Конфигуриране на USB Mass Storage:
- Тя трябва да се допуска възможност HOST_SYNC_MODE във файла config.h да стартирате програмата, например USB Mass Storage хост.

• AVR USB продукти лист (atmel.com)
• спецификация USB HID клас (usb.org)
• USB Mass Storage Class спецификация (usb.org)

Ето препис от някои неясни термини и съкращения. Определения на други условия, свързани с USB стандарта (доклад крайна точка, изброяване, и така описания. Г.), виж. Член USB накратко [4].

ATAPI Advanced Technology Attachment Packet Interface, автобус стандарт за оперативна памет. За подробности вижте. Wikipedia.

DMS Device Mass Storage устройство USB памет.

MMC-2 MultiMedia Card версия 2, типа на интерфейс за свързване с памет флаш-карти.

MSD устройство за съхранение, устройство USB памет, същата като на DMS.

OTG в движение, буквален превод на "в движение". Означава USB интерфейс, който може да работи в режим USB хост и в режим на USB устройство.

RBC намалени Блок команди, подмножество на стандартните SCSI команди.

SCSI Small Computer System Interface, стандартен тип интерфейс за свързване на външни устройства за съхранение, както и запис на едноименния.

SFF-8020i стандарт за свързване на CD-ROM / DVD устройства на базата на / ATAPI интерфейс АТА.

SFF-8070i стандарт за свързване на четене / запис на устройства дискети.

UFI Universal File интерфейс, стандарт за свързване на четене / запис устройства дискети.