Подписаться на получение новых статей на почту:

V-USB. AVR and Windows. Практическая часть. Шаг №74

Всем привет. В этой записи, мы, продолжим рассматривать протокол V-USB а именно необходимое приложение со стороны хоста, DDK для компиляции если необходимо, схему подключения микроконтроллера к ПК и попытка передачи данных. Итак поехали. Рассмотрев в прошлой записи исходники примера в папке firmware для AVR, теперь рассмотрим содержимое папки commandline- для хоста.

Открываем папку. В ней находятся следующие файлы: hiddata.с – происходит конвертация символов и принятия/отправка репортов, открытие устройства и проверка Vendor-ID и Product-ID; hidsdi.h - этот файл заменяет файл hidsdi.h из Windows DDK. Он задает некоторые типы и прототипы функций в этом заголовке для нашего проекта; hidtool.c— основной файл с точкой входа; hidtool.exe -  приложение; Makefile – файл конфигурации;  Makefile.orig – оригинальная версия; Makefile.windows – файл для сборки приложения. Рис. ниже.

 

Application for AVR and WindowsЧтобы собрать приложение (произвести компиляцию) нам необходима на Windows Driver Development Kit (DDK). Для этого мы возьмем систему MinGW, которая поставляет свободную версию DDK. Познакомимся с ней и установим.

 

MinGW

MinGW (Minimalist GNU for Windows), ранее mingw32 — компилятор, родной программный порт GNU Compiler Collection (GCC) под Windows вместе с набором свободно распространяемых библиотек импорта и заголовочных файлов для Windows API. Позволяет разработчикам создавать родные (native) приложения Windows.

В 2000 проект был перемещён на SourceForge.net, чтобы получить большую поддержку общественности и централизовать разработку. Оттуда его и скачиваем и устанавливаем.

SourceForge.netУстановка MinGW

 

 

 

 

 

 

MinGW Manager InstallationВсе друзья MinGW мы установили. На рабочем столе у нас должен появиться ярлык mingw-get — это (рис. слева) менеджер по установке пакетов MinGW and MSYS. Здесь мы выбираем две библиотеки, которые нам надо до установить, куда входит компилятор gcc. В закладке Installation выбираем Apply Changes и в открывшемся окне соглашаемся с до установкой 25-ти пакетов и нажимаем Apply.

Installation gcc MinGW

Ждем закачки и распаковки архивов.

Download gcc MinGW

 

 

Installation gcc MinGW

 

 

 

Следующим этапом необходимо будет прописать путь к gcc.exe, который находится в папке bin, в переменной PATH к поставленной системе mingw: Компьютер — Свойства — Дополнительно — Переменные среды — К переменной Path добавить строку ;C:\mingw\bin;C:\mingw\msys\1.0\bin. Проверим как все работает: запустим командную строку Пуск — В строке поиска cmd.exe — Enter, в командной строке:

Проверка Installation gccввести: g++
вывод: g++: fatal error: no input files
ввeсти: make
вывод: make: *** No targets specified and no makefile found. Stop.

Как использовать. Например пишем программу в любом текстовом редакторе:
#include <stdio.h>
int main (int argc, char **argv) {
     printf («%s\n», «Hello World!!!\n»);
     return 0;
}
Сохраняем файл с именем, к примеру, 1.c. Запускаем cmd. Вводим:
> gcc 1.c -o 1.exe 
cmdИ получаем рабочую утилиту. Вернемся к нашему проекту. Запускаем cmd переходим в папку с нашим проектом, используя cd\ путь к файлам. И для сборки проекта вводим make -f Makefile.windows.  В данном случае мы в исходнике ничего не меняем, поэтому пере собирать приложение hidtool.exe не будем. С лева на рисунке переход и возможные используемые команды usage:hidtool read and hidtool write <listofbytes>.
Теперь откомпилируем прошивку со стороны устройства, ели мы вносили какие то изменения. Я менял конфигурацию под ATmega8. Все что необходимо поменять это в файле Makefile:
DEVICE  = atmega8
F_CPU   = 16000000
FUSE_L  = 9f
FUSE_H  = c9
Фьюз биты под ATmega 8 для USBВ нем прекрасно описаны фьюзы. Также в файле usbconfig необходимо поменять порт и его пины.
#define USB_CFG_IOPORTNAME      D
#define USB_CFG_DMINUS_BIT      4
#define USB_CFG_DPLUS_BIT       2
Далее программируем фьюзы, не забудьте для начала их считать, записать необходимые младший и старший байт убедиться визуально в выставленных фьюзах и программировать. Рис слева.
Компилируем программу с выставленными настройками.

AVR Compile

 

 

И прошиваем. Камушек готов к использованию. И последнее — собираем схему. Немного рассмотрим «железо». В прошлой статье в качестве примера была представлена схема, где для понижения напряжения мы использовали 2 диода подключенных в прямом направлении. Здесь мы рассмотрим схему и соберем по ней преобразователь напряжения для нашего интерфейса USB. Напомню, что данная схема взята из папки circuits по примеру with-zener на ATmega 8.

AVR with zener for USB

Для USB необходим уровень 3.3 V на сигнальных линиях D+ D- . Т.к. сам интерфейс предоставляет питание 5 V, то нам необходим преобразователь уровней напряжения для питания устройства. Снижение уровней сигналов D+ и D- происходит с помощью диодов Зенера (стабилитрон). Мы с Вами с ними уже знакомились в статье №13. То хочу напомнить, что катод помечается черной полоской и подключается к плюсу. При подаче на него обратного напряжения происходит «пробой» и напряжение между его выводами остается неизменным. Последовательно должен быть включен резистор для ограничения проходящего тока через стабилитрон и обеспечения падения лишнего напряжения от выпрямителя.

stabistor for AVR and USB

На рис. слева обозначение и схемное подключение стабилитрона. Стабилитроны маломощные, с малым током, чтобы подтягивающие резисторы на D- генерировали напряжение более 2.5 V (но менее 3.6 V). Достоинство этой схемы в простоте и в том, что микроконтроллер может питаться от 5 V (если пренебречь падением напряжения на кабеле). Недостаток в том, что некоторые стабилитроны имеют напряжение меньше, чем 3 V  при запитывании через 1k5 и нужен тщательный подбор компонентов. Дополнительно увеличивается потребление мощности во время передачи данных по USB, так как ток от лог. 1 микроконтроллера ограничивается только резисторами 68 Ohm. Стабилитроны могут искажать форму сигнала из за своей емкости. Для D+ используется аппаратное прерывание INT0, так так оно имеет наивысший приоритет для микроконтроллеров AVR. Но можно использовать и другие.

Так же в схеме присутствует снижающий (pull-down) резистор 1M на D+. Что обеспечивает отсутствие генерации прерывания, когда USB не подсоединен и устройство питается от отдельного источника. Можно убрать этот резистор в случае питания от шины USB. Этот метод дает для firmware простую проверку easily check активности на D- (импульсы USB frame) путем проверки (через регулярные интервалы времени) величины, записанной в счетчике. Если не обнаружено активности, firmware должно в соответствии со спецификацией USB перевести систему в режим low power suspend. Выше описанная схема считается более рекомендуемой, также возможен вариант исключения из нее стабилитронов. Но мы их оставим. Ниже эскиз моей схемы, а также собранная по ней монтажная плата.

ATmega8 and V-USBМонтажная плата ATmega8 and V-USB

 

 

 

 

 

Все подключаем. Хост подхватил устройство стандартными драйверами. Смотрим PID/VID. Они соответствуют записям в файле usbconfig:
#define  USB_CFG_VENDOR_ID       0xc0, 0×16
#define  USB_CFG_DEVICE_ID       0xdf, 0×05

HID - драйвераЗаписываем данные в микроконтроллер командой hidtool write 0×0а, 0×34, 0×45, 0хе4.

И считываем данные с памяти командой hidtool read. Как видите на рис. ниже данные у нас возвращаются в

hidtool for avrсоответствии с дескриптором, в котором возврат описан в количестве 128 элементов: 0×0а, 0×34, 0×45, 0хе4, 0×00, 0×00, 0×00, 0×00... 0×00.

Подведем итог. В последних двух записях мы с Вами рассмотрели протокол V-USB for AVR. Разобрали код и повторили приведенный пример в библиотеке V-USB , который записывает и считывает данные из памяти EEPROM микроконтроллера AVR. В качестве хоста была использована ОС Windows. Следующим шагом будет подключение МК ATmega8 к ОС Android,(статья №76) для этого нам понадобится код для микроконтроллера. Приложение и исходники из папки commandline нам не понадобятся. Следующую запись мы начнем со знакомства с ОС Android. На этом сегодня и остановимся. Всем пока.

Просмотрено 11838 раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting