Не е ништо комплицирано ако го знаеш USB HID интерфејсот кој е доста едноставен
USB архитектурата е четири слојна Client software,USB driver,Host controller driver и host controller
USB комуникацијата има 4 групи на пакети Token,Data,Handshake,Special
Под token спагаат out,in,sof,setup
Под Data cпагаат data0,data1,data2,mdata
Под Handshake спагаат ack,nak,stall,nyet (многу има за пишување за да ги објаснам сите пакети
Под Special спагаат preamble,err,split,ping во друга прилика)
Пред сите овие пакети стои PID вредност Packet identifer која го обележува секој пакет
USB HID интерфејсот е на најниско ниво и се користи за пренос на мали брзини и подржува само Control и Interapt transfer податоци
Control transfer се користи за помош на системскиот софтвер при конфигурација на првото вклучување
Interapt transfer се користи кога се работи со мали податоци и е ограничен на време за чекање одговор.
Во HID интерфејсот најважни се Дескрипторите
Device descriptor
Configuration descriptor
Iterface descriptor
Endpoint descriptor
Во дескрипторите се дефинира VID,PID,Serial number,Deviceclass,Idproduct,TXbuffer,Rxbuffer.........
Дескрипторите кој ке ги дефинираме во микроконтролерот треба исто да ги дефинираме и во клиент софтверот со кој ке комуницира микроконтролерот.
Кога ке го вклучиме микроконтролерот во USB портот он почнува да разменува пакери кога ке се најдат со клиент софтверот спремни се за понатамошна комуникација.
Микроконтролерот чека пакети од клиент софтверот за задачите кој треба да ги изврши дали да активира порта или да искомуницира со некој периферен уред преку SPI или I2C и по секој примен пакет му врака на клиент софтверот дека го примил пакетот
Ова е накратко не е нешто којзнае како објаснето може ме разбра како би се одвивал процесот