V-USB
V-USB — название программной библиотеки, позволяющей получить поддержку протокола USB на микроконтроллерах AVR (семейств Classic, Tiny и Mega компании Atmel), которые не имеют аппаратной поддержки USB. Авторство библиотеки принадлежит компании Objective Development, которая распространяет и продвигает V-USB по лицензии GNU GPL и коммерческой лицензии (исходные коды библиотеки свободно доступны, см. ссылки).
Старое название библиотеки было AVR-USB, но после того как библиотека обрела популярность, название пришлось сменить, чтобы не вступать в конфликт с существующими именами Atmel. Протокол USB реализован программно, и быстродействия ядра AVR хватает только на реализацию стандарта USB 1.1 на низкой скорости (low-speed). По этой причине библиотека V-USB хорошо подходит только для низкоскоростных устройств ввода-вывода (например USB HID). Поскольку требования к быстродействию при обработке сигналов USB (D+ и D-), очень жесткие, то низкоуровневый код написан на ассемблере, и поддерживается только определенный ряд тактовых частот ядра. Сначала тактовая частота была только 12 МГц, но потом стало возможно использовать кварцевые резонаторы на 12, 15, 16, 16.5 и 20 МГц. Микроконтроллеры, которые имеют PLL (ФАПЧ, фазовую автоподстройку частоты) для генерации тактовой частоты, могут использовать внутренний RC-генератор (то есть работать без кварца), при условии калибровки частоты RC-генератора по сигналу SOF (Start Of Frame) протокола USB. Высокоуровневые процедуры и функции библиотеки написаны на языке C. Требования к микроконтроллеру AVR невысоки — необходимо как минимум 2 кбайта памяти программ (flash) и 128 байт ОЗУ (RAM). Из аппаратных ресурсов используется только прерывание по изменению сигнала на выводе (обычно INT0, подсоединенный к сигналу D+ шины USB). Таким системным требованиям удовлетворяют большинство микроконтроллеров семейства AVR.
Благодаря тому, что вместе с библиотекой поставляются хорошие примеры firmware для USB-устройств (пользовательский класс USB, класс USB HID, мышь USB, управление портами микроконтроллера, чтение и запись его EEPROM), появилось много полезных разработок, использующих библиотеку V-USB — USB-программаторы, устройства ввода и вывода, макетные платы, преобразователи интерфейсов (например, USB-RS232) и многое другое (см. ссылки). Вместе с библиотекой поставляются также примеры программ для компьютера (ПО хоста), которые работают с устройствами на библиотеке V-USB. Примеры ПО хоста используют другую свободную библиотеку — libusb.
Таким образом, библиотека V-USB позволяет непрофессионалам в программировании интерфейса USB быстро начать создавать USB-устройства и писать для них компьютерные программы. Кроме того, отсутствуют затраты на используемое в разработке программное обеспечение — оно доступно по лицензии GNU. Код комментариев библиотеки и примеров firmware и ПО хоста переведены на русский язык (см. ссылки).
Ссылки
- Страничка сайта компании Objective Development, посвященная библиотеке V-USB.
- Проекты, основанные на V-USB.
- Переведенная на русский язык библиотека V-USB.
- Разработка устройства USB — как начать работу с библиотекой V-USB. Пошаговое руководство, как быстро начать создавать свои собственные устройства USB.
- Макетные платы с интерфейсом USB.
- USBtiny. Другая программная реализация протокола USB.
- SIAM32 USB. Реализованная на микроконтроллере ATmega32 программная поддержка хоста USB.
- [1]. Программная реализация протокола USB в среде BASCOM AVR (бейсик).