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 и ПО хоста переведены на русский язык (см. ссылки).

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.