Interfață USB cu microcontroler PIC cu cod
interfață USB cu microcontroler PIC: scopul acestui articol este de a construi conceptul despre interfața USB la microcontroler PIC. Programatorul este folosit doar prima dată pentru încărcarea codului în microcontroler și după aceea putem încărca direct codul în microcontroler prin acest circuit mai simplu. PIC18F2550 și PIC18F4550 sunt renumite pentru modulul USB.
cuprins
USB (Universal Serial Bus)
este cea mai comună conexiune utilizată pentru a conecta un computer la diferite dispozitive, cum ar fi camere digitale, imprimante, scanere și hard disk-uri externe etc.
viteze de TRANSFER USB
USB 1.0 suportă rate de transfer de date de:
- 5 Mega biți pe secundă Mbps (viteză redusă), utilizate pentru Dispozitive de intrare umane de exemplu tastatură, mouse, joystick-uri etc
- 2 Mbps (viteză mare) utilizate pentru imprimante, scanere etc
USB 2.0 cunoscut sub numele de USB de înaltă viteză și capabil să suporte o rată de transfer de până la 480Mbps.
USB 3.0, de asemenea, cunoscut sub numele de super-viteză USB și suportă rate de transfer de până la 5,0 gigabiți pe secundă (Gbps).
USB 3.1 cunoscut și sub numele de super speed+ și capabil să suporte rate de transfer de până la 10 Gbps.
USB Type-C mufa sa se conectează atât la „gazde, cât și la dispozitive”.
USB PIN OUT:
principalele etape implicate în acest proiect sunt:
Pasul#1 generație de ceas
Pasul#2 construcții de circuite
Pasul#3 programarea microcontrolerului
Pasul#4 arderea codului în microcontroler
Pasul#5 drivere de dispozitiv
Pasul#6 Circuit de lucru
generarea ceasului pentru interfața USB cu microcontrolerul pic
P18f2550/4550 acceptă viteză redusă (1,5 MB/s) și viteză maximă (12 MB/s), astfel încât pentru USB trebuie să selectăm un anumit ceas. Un ceas intern de 6 MHz sau 48 MHz este necesar din cauza cerințelor de sincronizare impuse de USB.Dar există o problemă în utilizarea cristalului de 48mhz. Acest cristal are un cost ridicat și creează, de asemenea, zgomot. Deoarece este mai mare cristalul, cu atât mai mare va fi zgomotul.Există numeroase opțiuni pentru a atinge cerința de ceas modul USB, care oferă încă flexibilitate pentru pontaj restul dispozitivului de la sursa oscilator primar.Aici, oscilatorul de cristal utilizat cu PIC18F4550 pentru interfața USB este oscilatorul de cristal de 20 MHz. Este utilizat pentru oscilația internă a microcontrolerului și este conectat la 13 și 14 pini de MCU.
biți de configurare setări pentru interfața USB cu microcontroler pic
în cazul cristalului de 20 MHz:
- setați „selecția oscilatorului” la HSPLL. Acesta va da 20 MHz la intrarea ” oscilatorului primar „
- setați” selecția prescaler PLL „pentru a împărți la 5, așa că obținem 4 MHz care sunt înmulțite cu 24 pentru a obține 96 MHz pentru USB
- setați” selecția ceasului USB „la 96 MHz împărțit la 2
- setați” selecția postscaler a ceasului de sistem ” la 96 împărțit la două.
în cele din urmă, frecvența oscilatorului este setată la 48 MHz. (96 MHz/2=48 MHz
circuit de interfață USB cu microcontroler pic
realizați diagrama circuitului așa cum se arată în schema:
- tensiunea de intrare la un microcontroler PIC18F4550 nu trebuie să depășească niciodată 5 V.
- oscilatorul de cristal utilizat este oscilatorul de cristal de 20 MHz care este conectat la 13 și 14 pini.
- scurt 11 și 32 pini împreună la 5V, în mod similar 12 și 31 pini la GND. Dar aici MCU a construit conexiuni.
- cele două led-uri sunt pe RD0 și RD1 și se adaugă rezistență 1 K la fiecare led. Acestea sunt utilizate în scopul comunicării doar pentru a vedea că există comunicarea USB.
- prin acest circuit de interfață USB vom controla 2 pini, RD2 și RD3.
- un comutator este pentru butonul de resetare și este conectat cu pinul 1.
- alt comutator este pentru încărcare conectat cu pinul 37.
LED-uri pe (RD2, RD3) sunt folosite ca ACE de control, dar aceste ace de control pot fi folosite pentru a controla alte lucruri prea. Poate fi ușor interfațat cu șoferul motorului L293D, motorul DC, motorul pas cu pas , comutatoarele releului, servo etc.
schema pe Proteus
programarea microcontrolerului PIC
codul pentru interfața USB cu microcontrolerul este prezentat mai jos. Dar pentru a utiliza acest cod trebuie să adăugați și driver de dispozitiv. Înainte de a utiliza acest cod, utilizatorul ar trebui să creeze driver de dispozitiv USB accesând instrumente de Mikro C pentru pic și faceți clic pe terminalul HID și generați descriptor.c fișier și lipiți acest fișier în folderul principal de cod.
unsigned char readbuff absolute 0x500; // Buffers should be in USB RAM, please consult datasheetunsigned char writebuff absolute 0x540;char cnt;char kk;void interrupt(){ USB_Interrupt_Proc(); // USB servicing is done inside the interrupt}void main(void){ ADCON1 |= 0x0F; // Configure all ports with analog function as digital CMCON |= 7; // Disable comparators HID_Enable(&readbuff,&writebuff); // Enable HID communication while(1){ while(!HID_Read()) ; for(cnt=0;cnt<64;cnt++) writebuff=readbuff; while(!HID_Write(&writebuff,64)) ; }}
codul pentru micro-controler este scris cu unele software-ul special, care au propriul limbaj de programare similar cu C de exemplu: mplab, microC software. Codul este apoi compilat la o ieșire respectivă. În acest proces”.hex ” fișier este generat care urmează să fie arde/siguranță în microcontroler.
scrierea codului în microcontroler
ieșirea încărcată în EPROM-ul microcontrolerului se numește firmware. Avem nevoie de un hardware special pentru a fuziona acest cod de ieșire (fișier hex) în MCU. Programatorul JDM este un exemplu de astfel de dispozitiv care este utilizat pentru a încărca fișierul hex în MCU. Este ușor de făcut și ieftin.După încărcare, scoateți PIC18F4550 de la programator (încărcarea 1 a codului hexagonal) și introduceți-l înapoi în circuitul interfeței USB.După aceasta, trebuie să oferim șoferului.
nu trebuie să urmăm acest pas (utilizarea programatorului) de fiecare dată pentru încărcarea firmware-ului (fișier hex). Odată ce firmware-ul de bază este încărcat în cip, putem actualiza hexfile de ieșire direct cu circuitul de dezvoltare a interfeței cu software-ul smallbootloading.
drivere de dispozitiv pentru interfața USB cu microcontrolerul pic
conectați cablul USB de la computer la interfața USB. Chiar și după finalizarea circuitului și, de asemenea, programarea în microcontroler, acesta nu va începe să funcționeze corect. După cum știm că noua instalare hardware necesită driver Pentru windows pentru a fi detectat de sistem.
pentru instalarea driverului și operația de încărcare trebuie să descărcăm și să instalăm USB MICROCHIP FRAMEWORK de pe site-ul microchip.
circuitul de lucru al interfeței USB
pentru pornirea circuitului, trebuie să îl inițializăm în modul de încărcare. În circuitul de interfață USB, așa cum sa explicat deja,există două butoane, unul este acolosetbutton și altul este butonul de încărcare.
- țineți apăsat butonul Set
- mențineți resetarea apăsată și apoi apăsați butonul bootload o dată
- apoi eliberați ambele butoane.
- fereastra va detecta apoi hardware-ul USB PICI8F4550 și va cere drivere pentru acest circuit/placă pic18f4550.
- dacă fereastra nu solicită drivere, atunci ar putea exista unele probleme cu circuitul.
- să presupunem că driverele pentru acest dispozitiv USB se află în
C:\MCUSB\MCUSB driver \ Debug
când windows va cere drivere,mergeți la căutarea manuală a driverului și navigați la folderul de locație menționat mai sus pentru drivere.După instalarea driverelor, Led1 și Led 2 (conectate pe RD0 și RD1) vor începe să clipească alternativ, ceea ce înseamnă că circuitul nostru USB comunică perfect cu computerul nostru.După instalarea driverelor, ori de câte ori pentru a conecta acest circuit la computerul nostru, nu trebuie să apăsăm butonul reset saubutoane de încărcare, iar LED-urile vor începe să clipească alternativ.Acum, placa de circuit de interfață USB este gata, și putem încărca propriul fișier hex în cip direct de la placa USB, (fără programator JDM).
nu este necesar să utilizați un programator (circuit arzător) pentru arderea firmware-ului (fișier hex) în PIC18F4550. Programatorul JDM este folosit doar pentru prima dată de programare a codului și pentru alte etape putem folosi un software de Bootloading pentru a arde cod nou direct de la circuitul de interfață USB la MCU. Acest MCU poate fi utilizat pentru alte circuite specifice de lucru pentru care codul de ieșire a fost proiectat pentru.