- Функции для работы с USB НID-устройствами
Функции для работы с USB НID-устройствами
Универсальная последовательная шина USB (Universal Serial Bus) представляет собой стандарт на последовательный интерфейс обмена для подключения к компьютеру широкого диапазона устройств, таких как сотовые телефоны, игровые приставки, PDA, и т.п. Среда MikroC включает в себя функции для работы с HID (Human Interface Devices) - устройствами интерфейса человека с машиной через USB. IIID-устройства - это разновидность компьютерных устройств, напрямую взаимодействующих с человеком, например, клавиатура, мышь, графический планшет и т.п.
Каждый проект на базе библиотеки USB HID должен включать в себя исходный файл дескриптора, содержащий идентификатор, и название производителя, идентификатор и название продукта, размер посылки и другую важную информацию. Для создания файла дескриптора следует использовать USB HID-терминал, интегрированный в mikroC и вызываемый командой Tools -> USB HID Terminal. Название файла дескриптора по умолчанию USBdsc.c, но его можно изменить.
Код программы, находящийся в каталоге с примерами, работает на частоте 48 МГц. Флаги в этом коде не следует изменять, предварительно не ознакомившись с соответствующей документацией. Для работы с USB используются библиотечные функции HidEnable, Hid Read, Hid Write и Hid Disable. Описание этих функций представлено в таблицах 18-21 соответственно.
Таблица 18. Описание функции Keypad_Released
Прототип | void Hid_Enable(unsigned "readbuff, unsigned *writebuff) |
Возвращаемое значение | Нет |
Описание | Разрешает USB HID-обмен. Аргументы readbuff и writebuff - указатели на буферы чтения и записи соответственно, используемые для обмена |
Требования | Эта функция должна быть вызвана перед использованием любых других из библиотеки USB HID |
Пример | Hid_Enable(&rd, &wr) |
Таблица 19. Описание функции Hid_Read
Прототип | unsigned short Hid_Read(void) |
Возвращаемое значение | Количество символов в буфере чтения, принятое от хоста |
Описание | Принимает сообщение от хоста и сохраняет его 8 буфере чтения. Функция возвращает количество символов в буфере чтения |
Требования | Обмен с USB HID-устройством должен быть предварительно разрешён с помощью функции Hid_Enable |
Пример | get = Hid_Read() |
Таблица 20. Описание функции Hid_Write
Прототип | unsigned short Hid_Write(unsigned "writebuff, unsigned short len) |
Возвращаемое значение | 1, если данные успешно переданы, 0 в противном случае. |
Описание | Функция отправляет данные из буфера записи writebuff хосту. Буфер записи - это тот же аргумент, что использовался при инициализации обмена функцией Hid_Enable. Аргумент len определяет количество байтов для передачи |
Требования | Вызов функции следует повторять до тех пор, пока данные не будут успешно отправлены. Обмен с USB HID-устройством должен быть предварительно разрешён с помощью функции Hid_Enable |
Пример | // повторять, пока данные не отправятся while(!Hid_Write(&my_Usb_Buff, 1)); |
Таблица 21. Описание функции Hid_Write
Прототип | void Hid_Disable(void) |
Возвращаемое значение | Нет |
Описание | Запрещает обмен с USB HID-устройством. |
Требования | Обмен с USB HID-устройством должен быть предварительно разрешён с помощью функции Hid_Enable |
Пример | Hid_Disable() |
Схема подключения USB-интерфейса к микроконтроллеру показана на рисунке 26. Файл usbdsc.c должен быть включен в проект средствами среды mikroC IDE или директивой #include в исходном коде.
Рис. 26. Схема подключения USB-интерфейса к микроконтроллеру