Configurazione e Funzionalità del Modulo USB nei Microcontrollori PIC18F4550
Posted by Javi and classified in Elettronica
Written at on italiano with a size of 34,54 KB.
Caratteristiche:
"Velocità di trasferimento: può essere a bassa velocità (1.5 Mb / s) o ad alta velocità (12MB / s).
- Interruzioni orta Sop. Ogni volta che c'è una trasmissione o la ricezione di dati sul bus, genera un interrupt al PIC alle cure di routine, che deve rispondere con la gestione di tutti gli aspetti di basso livello della specifica USB. In questo modo alla domanda di base che esegue il microcontrollore gestione del protocollo USB è trasparente.
-Permette l'uso di un massimo di 32 punti finali (16 vie), ma di solito usare solo tre (endpoint 0, 1 e 2). Un endpoint è un buffer che memorizza i dati all'interno del dispositivo (tipicamente un record). A sua volta, ogni endpoint è un identificatore univoco che viene assegnato a una fabbrica di particolare e direzione del flusso di dati (IN / OUT). Tutti i dispositivi devono supportare endpoint 0, che viene utilizzato per la configurazione.
1-Kbyte di RAM Dual Access. 4-7 banche-dati della memoria vengono abbinate ad una RAM dual port speciali. Quando il modulo USB è disattivata, il GPRS in queste banche sono utilizzate come dati GPR altro in memoria. Quando il modulo USB è consentito, la memoria in queste banche sono stanziati nel buffer RAM per il funzionamento USB. Quest'area è ripartito tra i core microcontrollore e motore di una porta seriale (SIE) e USB viene utilizzato per trasferire dati direttamente tra i due.
-SIE (Serial Interface Engine) responsabile per la generazione del CRC, i tempi dei segnali D + e D-e corretta comunicazione tra il modulo e il PIC. La SIE può essere interfacciato direttamente alla porta USB, utilizzando il
ricetrasmettitore interno, oppure può essere collegato tramite un ricetrasmettitore esterno.
Configurazione
- USBEN: è un po 'di priorità all'inizio della configurazione, perché abilita o disabilita il modulo USB, ignorando tutti i bit e stato quando questo controllo a zero. Questo bit attiva anche il regolatore di tensione chip e collega l'resistori pull-up, sé consentito, in modo che il software può USBEN collegare o scollegare l'USB. Questo bit può essere trovato sulla registrazione Ucon <3>.
Impostazione della frequenza
Per l'attuazione della comunicazione USB è necessario per configurare correttamente il PIC, in cui uno parte importante è la configurazione della frequenza di clock. A seconda sé vogliamo lavorare con il modulo a bassa velocità o ad alta velocità (USB 2.0), forniamo il modulo di 6 o 48 MHz, rispettivamente. Per questo esempio useremo la configurazione USB 2.0 e un cristallo collegato al PIC di 4 Mhz.
USBDIV = 1, quindi i tempi passa attraverso il Prescaler PLL
PLL1 con quello che, avendo fosc 4 MHz, l'uscita è PLLDIV
mantenere lo stesso 4 MHz
CPUDIV1 con il mantenimento dei 4 Mhz a salire sul treno del sistema.
"Come potete vedere nella nostra cristallo OSC2conectamos OSC1 e 4 MHz, ma avrebbe potuto usare uno degli 8 Mhz, 12 Mhz, 16 Mhz, 20 Mhz, 24 Mhz, 40 Mhz e 48 Mhz, che sono compatibili con Windows valido.Tenete presente che questo cristallo è la stessa per generare la frequenza desiderata di 48 MHz per USB 2.0 e l'orologio del PIC, che può essere la stessa o meno, a seconda della configurazione che in ultima analisi adottare. Questo significa che abbiamo la USB a 48 MHz, e il nostro programma nel PIC funziona a 12 MHz, per esempio.
Dopo le primarie Trigger Oscillator Smicht tre linee parallele che vanno a moduli diversi, con diverse possibilità.
"La prima riga, la maggiore USBDIV va direttamente allo switch sé sei uno zero indica che la frequenza di base originale del cristallo è iniettato direttamente nella porta USB, sé l'interruttore è un 1 FSENtambién. Questo interruttore seleziona tra il Primary clock PLL o la CPU. Questa opzione di iniettare direttamente la frequenza di cristallo è ovviamente possibile solo sé si USA un 48 Mhz di cristallo che è quello che abbiamo bisogno per la USB. Tutti gli altri vetri devono essere trattati per conseguire il 48 megahertz.
"La seconda linea di inserire un Prescaler PLL (divisore di frequenza). In ogni sua uscita avrà fosc diviso per 1, 2, 3, 4, 5, 6, 10 o 12. E per PLLDIV (Multiplexer) ci selezionare quello che vogliamo usare. Quindi, sé il nostro bicchiere è di 4 MHz e 000 PLLDIV abbiamo piantato uno diviso per il valore di ciò che fosc con 4 MHz in uscita di MUX. L'uscita MUX è quello che usiamo per iniettare MHz 96 PLL. Sé lo abbiamo messo in aprile ha generato 96 Mhz Mhz. Ma 96 Mhz è il doppio di quanto abbiamo bisogno per la USB che è di 48 Mhz, per cui subito dopo si USA una divisione per 2, che è il secondo modo in cui noi USBDIV e in questo caso è necessario mettere un 1 per utilizzando il segnale proveniente dal PLL.
"Il resto del circuito è associato con la configurazione e l'assegnazione della velocità di clock per l'ALU.
Trasmettitore interno
"La periferica USB ha una velocità di trasmissione a bassa internamente collegato alla SIE. Questa funzione è utile in applicazioni con un chip più economico. Bit UTRDIS (UCFG <3>) controlla il trasmettitore. Sono ammessi di default (UTRDIS = 0).
Trasmettitore esterno
"Questo modulo fornisce il supporto per l'utilizzo di un trasmettitore al di fuori del chip. Il
trasmettitore esterno è utilizzato nelle applicazioni dove le condizioni fisiche dettare
posizione del trasmettitore lontano dalla SIE. Le operazioni con un trasmettitore esterno ha permesso l'attivazione di UTRDIS bit = 1.
Interno Regolatore
"Il dispositivo è dotato di un regolatore PIC18FX455 3,3 V per alimentare il trasmettitore interno e fornire una fonte per il pull-up interni ed esterni applicazioni 5V. Per il regolatore è stabile richiede un condensatore esterno di 220nF (± 20%). Il regolatore è attivato per impostazione predefinita e può essere disattivata tramite il bit di configurazione (ORSAE = ON, OFF). Quando attivo, la tensione è visibile V sul pin USB. Quando il regolatore è disabilitato, è necessario collegare un 3.3 V al pin V USB per alimentare il trasmettitore interno.
le specifiche USB richiedono 3,3 V senza comunicazione
Ma il resto del chip in grado di operare ad una tensione maggiore. Così la fonte di energia del trasmettitore è fonte separata (V USB).
Velocità di Bus
"Possiamo lavorare con il modulo a bassa velocità o ad alta velocità (USB 2.0), è responsabile della registrazione UCFG e resistori pull-up. Resistori pull-up interni o esterni sono progettati per soddisfare le esigenze del USB "a bassa velocità" e "Full-Speed". Per operare in modalità USB 2.0 è di consentire l'FSEN UCFG po 'di registrazione. Una volta abilitato FSEN una resistenza di Pull-Up è alimentato nel perno + D (In questo modo la periferica che si collega a individuare modalità USB Full-Speed).
"Nella modalità a bassa velocità è quello di disabilitare FSEN e resistenza di pull-up che sarebbe alimentato sarebbe il D-(Questo è auto-bassa velocità mode).
Bit permesso di Full-Speed (FSEN in UCFG <2>):
1 = dispositivo full-speed e di pull-up su D + (richiede 48 MHz).
0 = dispositivo a bassa velocità e pull-up in D-(Richiede 6 MHz)
Bit Trigger resistori pull-up (in UPUEN UCFG <4>):
1 = pull-up attivato chip
0 = pull-up Off-chip
USB-velocità, la trasmissione e pull-up dovrebbe essere impostata solo durante la fase di attivazione del modulo. Si raccomanda di non modificare queste impostazioni mentre il modulo è in funzione.
USB Interrupt
"I dispositivi 18F4550 disporre di fonti multiple di interruzione e di una priorità di interrupt che consente a ogni sorgente di interrupt viene assegnato un livello di priorità o di una bassa priorità. La priorità più alta è il puntatore 000008h puntatore e la bassa priorità di interrupt è 000018h. Ciascuna sorgente di interrupt ha tre bit per controllare il suo funzionamento. Le funzioni di questi bit sono:
Flag per indicare che si è verificato un interrupt.
Il bit che può abilitare l'interrupt.
Il bit di priorità per selezionare o bassa priorità.
- Registrati PIR2
PIR2 contiene la bandiera della interruzione della USB.
Bit 7 bit 6 bit 5 bit 4 bit 2 bit 3 bit 1 bit 0
EEIF USBIF CMIF OSCIF BCLIF HLVIF TMR3IF CCP2IF
USBIF: Bandiera di USB:
1 = chiama USB interrupt (autorizzata dalla software)
0 = interrompere USB non ha bisogno di
- Registrati FT2
permesso di FT2 contiene l'interrupt USB.
Bit 7 bit 6 bit 5 bit 4 bit 2 bit 3 bit 1 bit 0
CMIE OSCI USBI EEIE BCLIE HLVIE TMR3IE CCP2IE
USBI: Permission USB Bit di interrupt:
1 = Interrupt abilitato
0 = Interrupt disabili
- Registrati IPR2
IPR2 contiene i bit di priorità l'interruzione del USB.
Bit 7 bit 6 bit 5 bit 4 bit 2 bit 3 bit 1 bit 0
CMIP OSCIP USBIP EEIP BCLIP HLVIP CCP2IP TMR3IP
USBIP: Bit di priorità di fermarsi USB:
1 = ad alta priorità
0 = bassa priorità
"Una volta che la RAS attivare un kill bit, è necessario cancellare il software
la scrittura di un '0 '.
Controllo endpoint USB
-Tutti i dispositivi USB sono composti da una serie di punti finali e un indirizzo univoco assegnato dal sistema. Un endpoint è un buffer che memorizza i dati all'interno del dispositivo. Ogni endpoint ha un identificativo univoco che viene assegnato a una fabbrica di particolare e la direzione del flusso di dati (In, Out). Tutti i dispositivi devono supportare endpoint 0, che viene utilizzato per la configurazione. Partenariati tra le varie soglie di un dispositivo e l'ospite sono chiamati pipe (pipe). I Tubi consentono di spostare i dati tra il software host e dispositivi endpoint. Ogni tubo è determinato dal tipo di servizio, il numero di endpoint, dimensione del pacchetto, indirizzo, ecc
Ci sono quattro diversi tipi di endpoint (controllo, bulk, interrupt e isocrono)
ciascuno è utilizzato in un tipo di trasferimento.
"Ciascuno dei 16 punti finali bidirezionale possibile nel PIC18F4550 ha un record di monitoraggio indipendente, UEPn (dove 'n' rappresenta il numero di endpoint). Ogni record ha il bit di controllo stesso.
Bit EPHSHK (UEPn <4>) controlla l'endpoint protocollo di scambio e di attivare questo bit permette lo scambio di protocollo USB. In genere, questo bit è di impostare sempre tranne quando si utilizza endpoint sincrono. Bit EPCONDIS (UEPn <3> ) è usato per attivare o disattivare il controllo di operazioni USB (SETUP) con Endpoint. Cancella questo bit permette operazioni SETUP. UEPn bit EPINE <1>) e EPOUTEN (UEPn <2>) deve essere attivato per consentire le operazioni ingresso e uscita. Per Endpoint 0, questo bit deve essere sempre autorizzata dalla specifica USB identifica il Endpoint 0 come il punto finale di controllo di default.