USB-gränssnitt med PIC-mikrokontroller med kod
USB-gränssnitt med PIC-mikrokontroller: syftet med denna artikel är att bygga koncept om USB-gränssnitt till PIC-mikrokontroller. Programmerare används bara första gången för att ladda koden i microcontroller och efter det kan vi direkt ladda koden i microcontroller genom denna enklare krets. PIC18F2550 och PIC18F4550 är kända för sin USB-modul.
Innehållsförteckning
USB (Universal Serial Bus)
det är den vanligaste anslutningen som används för att ansluta en dator till olika enheter som digitalkameror, skrivare, skannrar och externa hårddiskar etc.
USB-överföringshastigheter
USB 1.0 stöder dataöverföringshastigheter för:
- 5 Mega bitar per sekund Mbps (låg hastighet), som används för mänskliga inmatningsenheter t.ex.tangentbord, mus, joysticks etc
- 2 Mbps (hög hastighet) som används för skrivare, skannrar etc
USB 2.0 känd som hi-speed USB och kan stödja en överföringshastighet på upp till 480 Mbps.
USB 3.0 även känd som super-speed USB och stöder överföringshastigheter upp till 5,0 gigabit per sekund (Gbps).
USB 3.1 även känd som super speed+ och kan stödja överföringshastigheter upp till 10 Gbps.
USB Type-C dess kontakt ansluts till både”värdar och enheter”.
USB PIN OUT:
de viktigaste stegen i detta projekt är:
Steg#1 Klockgenerering
steg#2 kretskonstruktioner
steg#3 Programmering av mikrokontroller
steg#4 bränna koden i mikrokontroller
Steg#5 enhetsdrivrutiner
steg#6 Kretsarbete
klockgenerering för USB-gränssnitt med pic-mikrokontroller
P18f2550/4550 stöder låg hastighet (1, 5 MB/s) och full hastighet (12 MB/s) så för USB måste vi välja en specifik klocka. En intern klocka på antingen 6 MHz eller 48 MHz krävs på grund av tidsbehovet från USB.Men det finns ett problem med att använda kristallen på 48MHz. Denna kristall är av hög kostnad och det skapar också ljud. Eftersom högre kristallen, desto större blir buller.Det finns många val för att uppnå USB-modulens klockkrav som fortfarande ger flexibilitet för att klocka resten av enheten från den primära oscillatorkällan.Här är kristalloscillatorn som används med PIC18F4550 för USB-gränssnitt 20MHz kristalloscillator. Den används för inre svängning av mikrokontroller och den är ansluten på 13 och 14 stift MCU.
KONFIGURATIONSBITAR inställningar för USB-gränssnitt med pic mikrokontroller
i fallet med 20MHz kristall:
- Ställ in ”Oscillator Selection” på HSPLL. Det kommer att ge 20 MHz vid ingången till ”primär oscillator”
- Ställ in ” PLL prescaler selection ”för att dela med 5, Så vi får 4 MHz som multipliceras med 24 för att få 96 MHz för USB
- Ställ in” USB clock selection ”till 96 MHz dividerat med 2
- Ställ in” System clock postscaler selection ” till 96 dividerat med två.
slutligen är Oscillatorfrekvensen inställd på 48 MHz. (96 MHz/2=48mhz
USB-gränssnittskrets med pic-mikrokontroller
gör kretsschemat som visas i schemat:
- ingångsspänningen till en PIC18F4550 mikrokontroller bör aldrig överstiga 5 V.
- den använda kristalloscillatorn är 20MHz kristalloscillator som är ansluten på 13 och 14 stift.
- kort 11: e och 32: e stift tillsammans till 5v, på samma sätt 12: e och 31: e stift till GND. Men här har MCU byggt in anslutningar.
- de två led-lamporna är på RD0 och RD1 och 1 k bisexuell motstånd läggs till varje LED. De används endast för kommunikationsändamål för att se att USB-kommunikationen existerar.
- med denna USB-Gränssnittskrets kommer vi att styra 2 stift, RD2 och RD3.
- en omkopplare är för återställningsknappen och är ansluten till stift 1.
- annan omkopplare är för Bootloading ansluten med stift 37.
lysdioder på (RD2, RD3) används som styrstift, men dessa styrstift kan användas för att styra andra saker också. Det kan enkelt kopplas till L293D motordrivare, likströmsmotor, stegmotor , reläomkopplare, servo etc.
schematiskt på Proteus
programmering av PIC-mikrokontroller
kod för USB-gränssnitt med mikrokontroller ges nedan. Men för att använda den här koden måste du också lägga till enhetsdrivrutin. Innan du använder den här koden ska användaren skapa USB-enhetsdrivrutin genom att gå till verktyg för Mikro C för pic och klicka på HID terminal och generera deskriptor.C fil och klistra in den här filen i din huvudkodmapp.
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)) ; }}
koden för mikrostyrenheten är skriven med någon speciell programvara som har ett eget programmeringsspråk som liknar C t.ex.: MPLAB, microC software. Koden sammanställs sedan till en respektive utgång. I denna process ”.hex ” – filen genereras som ska brännas / säkras i mikrokontroller.
bränna koden i mikrokontroller
utgången som laddas in i EPROM för mikrokontroller kallas firmware. Vi behöver en speciell hårdvara för att smälta denna utgångskod (hex-fil) till MCU. JDM programmerare är ett exempel på en sådan anordning som används för att ladda hex-filen till MCU. Det är lätt att göra och billigt.Efter laddning, chip av PIC18F4550 från programmeraren (1: a gången laddning av hex-kod) och sätt tillbaka den i USB-gränssnittskretsen.Efter detta måste vi ge föraren.
vi behöver inte följa detta steg (användning av programmerare) varje gång för att ladda firmware (hex-fil). När bas firmware laddas in i chipet kan vi uppdatera utgång hexfile direkt med gränssnittsutvecklingskretsen med smallbootloading programvara.
enhetsdrivrutiner för USB-gränssnitt med pic-mikrokontroller
Anslut USB-kabeln från datorn till USB-gränssnittet. Även efter att ha slutfört kretsen och även programmeringen i mikrokontroller börjar den inte fungera korrekt. Som vi vet att ny Maskinvaruinstallation kräver drivrutin för att windows ska upptäckas av systemet.
för drivrutinsinstallation och Startladdning måste vi ladda ner och installera USB MICROCHIP FRAMEWORK från microchip-webbplatsen.
krets som arbetar med USB-gränssnitt
för att starta kretsen måste vi initiera den i BOOTLOAD-läge. I USB-gränssnittskretsen, som redan förklarats, finns det två knappar, en är theRESETbutton och en annan är BOOTLOAD-knappen.
- håll knappen Set
- Håll återställningen intryckt och tryck sedan på knappen bootload en gång
- släpp sedan båda knapparna.
- fönstret kommer då att upptäcka PICI8F4550 USB-hårdvaran och be om drivrutiner för dettapic18f4550 krets/kort.
- om fönstret inte frågar efter drivrutiner kan det finnas några problem med kretsen.
- Antag att drivrutinerna för den här USB-enheten finns i
C:\MCUSB\MCUSB Driver \ Debug
när windows kommer att be om drivrutiner,gå till manuell drivrutinsökning och bläddra till ovan nämnda platsmapp för drivrutiner.När drivrutinerna är installerade kommer Led1 och Led 2 (ansluten på RD0 och RD1) att börja blinka alternativt vilket innebär att vår USB-krets kommunicerar perfekt med vår dator.När drivrutinerna är installerade, när som helst för att ansluta den här kretsen med vår dator, behöver vi inte trycka på Återställ ellerbootload-knapparoch lysdioderna börjar blinka alternativt.Nu är USB-Gränssnittskretskortet klart, och vi kan ladda vår egen hex-fil i chipet direkt från USB-kortet (utan JDM-programmerare).
det är inte nödvändigt att använda en programmerare (brännarkrets) för att bränna firmware (hex-fil) i PIC18F4550. JDM-programmeraren används endast för första gången programmering av koden och för andra steg kan vi använda en Bootloading-programvara för att bränna ny kod direkt från USB-gränssnittskretsen till MCU. Den MCU kan användas för annan specifik krets som arbetar för vilken utgångskoden var avsedd för.