Vai Indietro   PcTuner Forum > Sezione Hardware > Progetti Elettronici
Arcade Registrazione Blogs Regolamento Feedback FAQ Lista Utenti Calendario Segna come Letti

Ultimi 5 blog pubblicati su PcTuner Blog
Data Titolo

Chiudi Discussione
 
Strumenti Discussione Modalità Visualizzazione
Vecchio 21-03-2007, 23.35.17   #1
Registered User
 

Iscritto da: 21-03-2007
Messaggi: 9
Feedback: (0)
[USB-->Seriale]Raccolta informazioni!(lungo da leggere)

Salve Gente di pctuner!

E' il mio primo messaggio...spero di una lunga serie

Prima di tutto un congratulazioni alla community perchè molte delle migliori teste per quanto riguarda modding/W Cooling/Elettronica è radunata su questa board!

Buona lettura!

21-Marzo-07

Passiamo a noi!E' da un pò che ho realizzato(una cavolata)un interfaccia che mi permette di gestire il display del 3310/3330/simili tramite interfaccia parallela e usando uno dei tanti software come lcdinfo, lcdhype(che ritengo il + valido).

Adesso mi stava venendo il pallino di fare questa interfaccia USB!

Mi sono messo a cercare un pò in rete, e ho trovato tante informazioni ma la maggiorparte un pò troppo tecniche e approfondite per le mie conoscenze e i miei interessi...

Allora prima di tutto ho scoperto che per collegare un display, un microcontrollore o qualsiasi altra cosa all'USB è molto + comodo abbandonare la parallela e passare alla seriale....Probabilmente voi state pensando che sono matto a dire di volerla fare USB e poi parlare di Parallela/Seriale...Invece è proprio così...Almeno non sono riuscito a trovare informazioni che permettessero di creare un'interfaccia direttamente USB ai vari dispositivi di mio(spero nostro)interesse.

Torniamo al discorso della comodita della Seriale...mi spiego meglio...

Esiste una famiglia di integrati che si chiamano FT232.Questi non sono altro che convertitori da Seriale/Parallela...Sono abbastanza, quindi studiarne approfonditamente il datasheet è una bella mattonata...

Però il vantaggio di questi integrati è che integrano al loro interno molte cose...Per esempio il IC(Integrate Circuit) FT232R/FT232RQ possiede al suo interno un generatore di clock, che associato al quarzo adatto, riesce a tirare fuori 6/12/24/48Mhz inoltre possiede una eprom interna(non ne conosco però la natura e le caratteristiche costruttive) e ha gia all'interno tutto il necessario per la gestione dell'handshake dell'usb e della seriale(sia in un verso che nell'altro).In poche parole fa tutto lui.
Altri modelli sono più semplici.Per esempio il IC FT232BM non possiede ne la Eprom e ha un generatore di clock a 6Mhz(sempre da collegare i pin al quarzo).



Per ora mi sto informando su questo genere di Integrato che sembra risolvere il problema in oggetto al topic!

Ho notato che il package di questo integrato si presenta in diverse forme..su un "famoso" sito di asteonline si trova sia la versione cavo(che integra sul pcb dello spinotto dell'usb tutto il necessario):


sia la versione senza cavo(ma penso sia praticamente uguale):


Qui si può trovare un mini-datasheet del nostro convertitore bello e pronto: datasheet


Come vedete sull'uscita del circuito ci sono 6 contatti:
1)GND: Massa
2)/CTS: Clear to send control input(Input)<--non mi è ancora molto chiaro cosa fa...se qualcuno saprebbe spiegarmelo(è collegato a reset solitamente nei display lcd ma non capisco, visto che sia /CTS sia /reset sono pin input)
3)VCC: Tensione di alimentazione
4)TXD: Dati trasmessi(Output)
5)RXD: Dati Ricevuti(Input)
6)/RTS: Richiesta di invio dati(Output)

Questo tipo di cavo(come vedete dallo schema del datasheet)si basa su un FT232RQ.

Nello specifico, questo integrato si basa sull'UART(Universal Asynchronous Reciver/Trasmitter che è praticamente un itegrato per la ricezione e trasmissione di dati con la porta seriale(per intenderci è di solito gia integrato nei pic16fXX, colui che si occupa degli handshake e le altre cose con la rs-232(porta seriale)).

Purtroppo non vi so dire perche questo cavo possiede l' FT232RQ e non l' FT232BM(ce ne sono anche altri).

Queste per ora sono tutte le info che ho raccolto...Spero di poter allungare un pò il brodo domani!Se voi sapete altre info vi prego di farmi sapere!

A presto!




22-marzo-07

Introduzione
Come da oggetto, propongo oggi il progetto(ancora in fase di studio, e spero presto in fase di realizzazione), del circuito completo per collegare il Display del 3310/3330/simili alla porta USB.

Quello che sto proponendo è una realizzazione partendo dalle basi, ovvero acquistando tutti i componenti separati e costruirsi con le "proprie mani" un convertitore USB<-->rs232 e non di comprarne uno gia fatto, non tanto per la spesa in se per se(che poi alla fine si risparmia comprandone uno gia prodotto su larga scala)ma principalmente per espandere le proprie conoscenze(mio padre dice sempre, e io ne sono orgoglioso:"impara l'arte e mettila da parte")e per sentirsi realizzato alla fine di un progetto realizzato con le proprie capacità!



1.Cosa serve

Software:
LCDHype
Driver per diversi display

Virtual COM Port:dovrebbe essere il driver che permette al nostro IC di essere riconosciuto come una porta seriale anche se collegata all'usb(nel sito ci sono sia i link al download sia una breve descrizione)
D2XXarebbero dei drivers che permettono l'accesso diretto all'usb tramite chiamate di funzioni presenti in alcune DLL(in parole molto molto povere potete agire direttamente dall'usb sui pin del nostro IC FT232)



Hardware:
  • Utensili
Succhia stagno
Saldatore
Stagno
Una basetta 1000Fori:



  • Componenti:
FT232BM:


Resistenze:
2X27 Ohm
1X470 Ohm
1X1.5 KOhm
3X2.2 KOhm

Condensatori:
1X10 nF(nano)
3x100 nF
1X33 nF
1X1 uF(micro)
1x10 uF
N.B.:l'ultimo condensatore deve essere elettrolitico, gli altri meglio non elettrolitici!

Connettore usb Femmina Type B MINI:

Ferrite Bead:

3310/3330 series display LCD:

Cavo flat


2.Progettazione

Prima di tutto tengo ad evidenziare che è molto utile avere conoscenze basilari sul materiale che stiamo utilizzando. Quindi mi ritengo il dovere di inserire in questa spece di guida un pò di mie conoscenze in modo che anche chi è alle prime armi può raccapezzarsi in queste righe!


Universal Serial Bus
Partiamo dalla cosa più scontata..ovvero l'USB
Queto acronimo sta per Universal Serial Bus, e i plug di connessione si possono trovare in 3 aspetti:
1.USB type A
2.USB type B
3.USB type Mini
La foto descrive meglio:

I plug USB Mini ci sono di 3 generi, ma sono pressocchè identici a livello di Pin-out(impossibile spiegare perchè fare 3 tipi di plug diversi se poi fanno la stessa identica cosa...vallo a chiedere a Canon, Hp e Mitsubishi...)

Io ho scelto di usareil plug USB type Mini, visto che è il più piccolo e quindi quello che più facilmente può essere integrato in un basetta senza che sia troppo ingombrante.
E' utile avere una tabella con il Pin-out delle varie porte USB e potete visionarlo qui.

Come vedete il Pin-out è abbastanza semplice. Troviamo la Vcc(tensione di alimentazione che nel caso dell'usb è pari a 5V e eroga una corrente di 500mA), i pin Data+(invio dati) e Data-(ricezione dati) e il pind GND(massa).

Penso che questa infarinatura sull'usb a livello hardware possa bastare per ora!


Il Display
Voi vi chiederete perchè ho scelto proprio il display del 3310/3330. Bhe la risposta è facile. Prima di tutto perchè è abbastanza facile reperirlo, visto che chi non ha avuto un 3310 in famiglia apparte me? E visto che ormai è passato abbastanza tempo dall'uscita di questo cellulare è facile reperirne qualcuno a pochi € o addirittura gratis.
Inoltre prima di cimentarmi in questo progetto avevo già interfaccito questo display tramite porta parallela, con un circuito pressocchè banale e di facilissima realizzazione.
Un altro motivo è che non sono il pioniere di questo progetto, ma già più di qualcuno ne ha realizzato uno, quindi ho la certezza che può funzionare e in giro c'è abbastanza materiale per riuscire a ricavare le informazioni necessarie alla realizzazione.

Detto questo passiamo ai fatti. L'lcd si basa sul controller Philips PCD8544, qui potete trovare il datasheet.

Adesso devo farvi un chiarimento.Il datasheet è del Controller Philips, non del display, quindi alcune delle informazioni presenti sul datasheet non saranno necessarie per la realizzazione del progetto(ad esempio se guardate il Pin-out del controller, a pagina 5, noterete che esistono alcuni pin, per esempio T1,T2,T3 e T4 che sul display non sono utilizzati).Questo controller non gestisce solo questo genere di Display, ma anche altri, quindi questo datasheet è stato ideato per soddisfare tutte le esigenze.

Adesso parliamo un pò di questo semplice display.



Il display si basa su un DDRAM(Display Data RAM) suddivisa in 6 blocchi da 84Byte(6 X 8bit x 84). C'è una corrispondenza diretta tra il bit presente nel DDRAM e il dot da accendere nella matrice dell'lcd!

I formati delle istruzioni inviate al display sono suddivise in 2 modi a seconda del pin D/C(ricordo che D sta per dati ed è attivo alto, mentre C sta per comandi ed è attivo basso).Inoltre se il segnale è alto(quindi si parla di dati), il byte che segue viene direttamente messo nella DDRAM, se invece è basso, allora i bit successivi vengono interpretati come comandi.Sempre a pagina 14, guardando la tabella 1, troviamo una descrizione dei vari comandi.

Ci sono 2 bit chiave chiamati D ed E che gestiscono il display.A pagina 14 del datasheet del controller, tabella 2, troviamo la loro tabella delle verità.

Troviamo il vettore di 3 bit Y che ha la funzione di accedere al blocco che interessa(000-->Blocco 0....101-->Blocco 5)

C'è un bit H che indica quale set di istruzioni usare(se quello base o quello avanzato)

Quindi, ora conosciamo nello specifico l'aspetto che devono avere i bit che arrivano serialmente sul pin SDIN del display.Questi bit vengono registrati ad ogni fronte di salita del clock (pin SCLK)

Adesso schematizziamo la cosa per renderla più comprensibile:
  1. Si attiva il display mettendo a Vcc il pin CS(chip selected), altrimenti il clock è spento e il display è praticamente in stato OFF
  2. A seconda del valore che arriva sul pin D/C indirizziamo i bit che arriveranno su SDIN nella DDRAM(D/C=1) oppure il display le identificherà come comandi(D/C=0)
  3. Il primo bit che invio corrisponderà ad H.Se il suo valore è alto allora i bit che seguiranno dovranno essere settati per i comandi di gestione interna, mentre se settato basso i bit che seguiranno corrisponderanno al pixel da accendere
  4. Quando H sarà 0 e prima di iniziare a scrivere dati nella DDRAM, invieremo un set di bit con D/C basso(quindi comandi) e indicheremo lo stato dei bit D ed E(se vogliamo tutti i pixles di sfondo spenti col pixel interessato acceso(D=1 E=1)o viceversa(D=0 E=0).In questultimo caso non è necessario settare l'lcd visto che di default D=E=0)
  5. Abbiamo ora a disposizione gli 8 bit per accendere uno dei pixel della nostra colonna(ricordo che abbiamo 48 righe, suddivise in blocchi da 6 appunto per far tornare 6blocchiX8bit ognuno, così abbiamo una corrispondenza diretta tra il bit e il pixel).
  6. Una volta terminata la nostra sequenza di 8 bit, passiamo alla successiva, e il controllore automaticamente passa alla colonna successiva di quel blocco(incremento automatico)
  7. Finita la riga passiamo alla successiva inviando nuovamente una serie di bit con quello che va su D/C basso in modo da poter indicare di passare alla riga successiva.Il vettore di bit deve essere il seguente[0,0,1,0,0,0,Y2,Y1,Y0], con Y3,Y2,Y1 elementi del vettore Y spiegato qualche riga sopra.


Il Pin-out specifico del display è il seguente(quando c'è lo slash davanti significa che sono attivi bassi):

1)Vcc (Corrente di alimentazione che deve essere compresa tra 2.7 e 3.3V)
2)SCLK (Segnale per il clock)
3)SDIN (Segnale per i dati/indirizzi)
4)D/C (Switch per dati o comandi/indirizzi, se alto allora il controller intende che i bit ricevuti sono dati, altrimenti sono indirizzi/comandi)
5)/CS (Chip Selected, ovvero indica al chip che deve funzionare. Lo attaccheremo a massa in modo da dirgli di essere sempre acceso, considerate questo pin come un interruttore)
6)GND (Massa)
7)VOUT (Tensione in uscita dal Display. Anche questo metteremo a massa aprendo il circuito sfruttando le caratteristiche di funzionamento di un condensatore in Corrente Continua)
8)/RST (Reset,immagino sappiate a cosa serve, che collegheremo alla VCC in modo da tenerlo sempre disattivato)

Ultima Modifica di FluidGuitar : 28-03-2007 05.59.16.
turborocket Non in Linea  
Vecchio 24-03-2007, 08.41.21   #2
Registered User
 

Iscritto da: 21-03-2007
Messaggi: 9
Feedback: (0)
23-marzo-07

Adesso che conosciamo il funzionamento e le caratteristiche strutturali del display possiamo inplementarlo nel giusto modo all'interno del nostro circuito!



Il circuito integrato FT232BM

Molte informazioni riguardo questo tipo di integrato le trovate nelle righe a inizio pagina.Bisogna però capire quali sono i pin che a noi possono tornare utili!
Qui trovate il datasheet. Vi consiglio di tenerlo alla mano durante la letture perchè faro spesso riferimenti ad esso.

A pagina 7 trovate il Pin-out del nostro IC.
Vediamo nello specifico i pin che ci servono
  • I pin N°1,2,32 hanno come nome EEXXX. Questi pin sono dedicati per interfacciare il nostro IC con una EEPROM(vedremo dopo l'implementazione di questa)la cui implementazione è facoltativa.
  • I pin N°9,17,29 sono pin pin di massa, il pin 29(AGND)è la massa per il moltiplicatore di clock interno(anche di questo ne parleremo dopo più approfonditamente)
  • Il pin N°31 è il pin di Test che secondo la tabella a pagina 9 deve essere messo a massa per il normale funzionamento
  • I pin N°3,26,30 sono i pin di alimentazione, che collegheremo alla Vcc della porta USBm il pin 30(AVcc)è l'alimentazione per il moltiplicatore di clock interno
  • Il pin N°14 è denominato PWRDTL è semplicemente un pin che indica al dispositivo se è alimentato dal Bus USB o da un device esterno(visto che noi lo alimentiamo dalla USB lo metteremo a massa)
  • Il pin N°13 è denominato IOVcc Questo pin sarebbe l'alimentazione per le interfacce UART che dovremo collegare, sul Datasheet è indicato che se siamo in situazione di Bus-Power bisogna collegare collegare questo pin alla Vcc della porta usb(nel nostro caso), quando invece vogliamo collegare l'IC ad un'interfaccia autoalimentata, dovremo collegare questo pin alla Vcc del periferica(stiamo parlando di 3.3 V)
  • Il pin N°6 ha il nome di 3V3OUT e leggendo quanto dice il datasheet va collegato a massa disaccoppiandolo con un condensatore da 33nF
  • I pin N°7,8 è costituiscono i pin con i quali il nostro IC comunica con la porta USB, quindi collegheremo il pin 7(USBDP) con il D+ dell'usb e l'8(USBDM= con il D- dell'usb
  • Il pin N°5, /RSTOUT, come leggiamo nella descizione del pin N°7, va collegato al pin N°7 tramite una resistenza da 1.5 KOhm.Questo pin è il generatore di reset
  • Il pin N°4, /RST, è il pin di Reset, che collegheremo alla Vcc.
  • I pin N°27,28 sono, analogamente XTin e XTout, e sarebbero i pin ai quali dobbiamo collegare il quarzo per avere il clock da associare al moltiplicatore di clock.Attenzione:quando l'USB è spenta/sospesa, XTout(che va collegato all'uscita del quarzo)viene stoppato, quindi bisogna fare attenzione se usiamo questi pin per mandare una frequenza a componenti esterni.
  • Il pin 22 è il /CTS è un segnale per l'handshake, viene collegato al pin /RST del nostro display, quindi questo pin si occuperò di inviare il segnale per avviare la funzione di reset nel display
  • Il pin 23 è il /RTS che si occuperà di gestire il pin D/C del display, quindi il pin che baderà ad avvertire il controller che si sta inviando dati o comandi al display
  • Il pin 24 è il pin che si occuperà di inviare i dati o comandi al display, infatti sarà collegato al pin SDIN.
  • Il pin 25 si occuperà di inviare il segnale di sincronizzazione del controller, infatti come abbiamo detto prima, i bit vengono campionati ad ogni pos-edge del clock e eseguiti se sono comandi o inseriti nel DDRAM se sono dati.
  • Il pin 21 è un pin che potremmo sfruttare per la retroilluminazione, infatti lo collegheremo tramite una resistenza ad un BJT(transistor a giunzione).Questo pin è anchesso un pin di handshake, quindi(probabilmente)sarà sincronizzato con il pin 22 e lo useremo per omandare(tramite una resistenza)al nostro BJT, il BC56A, cosi se il segnale di handshake è alto, allora il il bjt chiudera il circuito per l'accensione dei led(collegati tra vcc e il bjt)oppure aprirà il circuito(quando il Chip selected e disattivato)in modo da spegnere i led quando il display sara in stato off.
  • I pin 11 e 12 sono i pin che comandano i 2 led, rispettivamente uno quando si inviano dati l'altro quando si ricevono dati dal bus usb.Penseremo dopo ad un'implementazione di questi led non vitali per la realizzazione del circuito
  • Il pin 16 è un pin particolare...Questo integrato, oltre a gestire le interfacce sullo standard rs232 è compatibile anche con la rs485, che è un'evoluzione del 232 e permette una velocita superiore.Questo pin serve a dire all'integrato con quale standard vogliamo farlo andare(di default è rs232, se lo collegheremo a Vcc allora il IC funzionerà secondo lo standard rs485). Quindi non lo collegheremo visto che il rs232 è lo standard che ci interessa.
  • I pin 10,15 sono due pin che, come il pin 16 non li collegheremo.Lascio a voi il piacere di informarvi autonomamente sfogliando il data sheet!


i pin 18,19,20 sono dei pin particolari, rispettivamente sono /RI, /DCD, /DSR (quindi tutti e 3 attivi bassi). Il pin /RI è un Request Input, ovvero un pin che manda un segnale all'host USB e lo avverte, se si trova per esempio in stato di sospensione, di attivarsi. Il pin /DCD è denominato sul datasheet come Data Carrier Detect Control Input, ed un pin di controllo è il rilevamento della portante dei dati. Il pin /DSR

Ora conosciamo le varie funzioni che svolge il nostro IC e possiamo proseguire con la progettazione del circuito.



28-marzo-07

Lo schema elettrico.

Per lo schema elettrico potremmo, impegnandoci un pò, a costruirlo anche noi, però per comodità io ho preso uno schema già fatto e l'ho studiato minuziosamente in modo da capirlo come se l'avessi progettato io.

Vediamo lo schema: (Click per ingrandire)



Allora studiamo adesso il circuito partendo dall'angolo in alto a sinistra.
Come vediamo c'è un piccolo circuito, formato da un semplice parallelo tra 4 condensatori. Questo circuito serve per una cosa specifica, il parallelo serve per evitare che ci siano sbalzi di tensione, quindi è una protezione del circuito. Spieghiamo meglio perchè. come sappiamo in corrente continua i condensatori si comportano come circuiti aperti, ma in alternata si comportano come cortocircuiti(detto in parole molto infomali). Bisogna però dire che nel nostro caso, la corrente è sempre in continua e non in alternata, che provocherebbe guasti irreversibili ai nostri componenti.
Gli unici casi in cui possiamo capitare, per qualche istante, in corrente continua è al momento del collegamento/scollegamento dell'alimentazione(quindi dell'usb) al circuito. Infatti in questo caso è possibile che si generino transitori, ovvero che nella rete ci sia una tensione non voluta, e proprio in questo caso(ovvero quando la tensione diventa negativa)il condensatore si occupa di rendere quel parallelo come un cortocircuito e quindi scaricare direttamente a massa il transitorio senza incombere in rotture dei componenti.
I valori di tali condensatori prendiamoli per buoni.

Adesso spostiamoci a destra, e notiamo il plug USB, nello schema del link è un connettore Type-A, ma grazie alla tabella con i vari standard dei connettori USB possiamo collegare il Type-Mini.
Notiamo subito una spece di induttore sulla line Vcc, esso è ferrite, ovvero un materiale ferroso che ha il compito di filtrare la Vcc da distrurbi e rumore (come per esempio il cavo VGA del monitor ha quel bozzo vicino al connettore).

Dopo la speigazione pin per pin dell'IC FT232BM è facile capire com'è collegato.
R14 ed R15, sono valori standard presi dal Datasheet e come essi anche R13, C11, R12 e C8.
Possiamo ignorare i 3 tasti Blu presenti nel circuito perchè il loro scopo è superfluo.
Importante è invece la gestione della retroilluminazione. Infatti come detto nella descrizione del pinout, e come si nota dal circuito, il pin dell'IC numero 21 è collegato, tramite una resistenza di valore appropriato ad un transistore BJT BC546A. Ora spieghiamo il suo funzionamento in parole povere. Se arriva un segnale alto, la corrente guida la base e il transistore npn conduce e porta a massa il collettore, chiudendo il circuito e facendo accendere i led. Se invece alla base nn arriva corrente, il circuito resta aperto e quindi i led nn conducono. Anche in questo caso, come per il circuito di protezione per i transitori, formato dai condensatori in prallelo, abbiamo spiegato con concetti poco formali, e sarebbe necessario di un approfondito studio per capire il funzionamento del transistore.

In basso a destra troviamo la presenza di un quarzo e di una EEPROM, ma ne descriveremo l'utilità e parleremo delle EEPROM in un secondo momento.

Adesso diamo uno sguardo al Display LCD. A prima vista questo display è diverso dal nostro che abbiamo ricavato smembrando il 3310, infatti esso ha 9 pin invece di 8.
Bhe non vi preoccupate perchè questo circuito è fatto con un display di un 3210 che possiede 9 pin, ma il controller è il solito e anche i set di istruzioni. L'unico pin di cui differisco è il pin OSC che in questo caso è collegato a Vcc e invece nei display dei 3310 non è presente perche collegato internamente a Vcc.
Dal Datasheet del controller del display possiamo capire xche il pin 8(il Vout) sia collegato a massa con il condensatore.
Per i collegamenti, lo schema parla da solo, e non c'è nulla di complicato.

Penso che a livello di progettazione base e conoscenza dei componenti siamo abbastanza preparati. Possiamo passare quindi ad una realizzazione del circuito. Prima però devo procurarmi un display funzionante.

Spero che in un paio di giorni mi arrivi il display che ho ordinato e potremmo andare avanti con una descrizione passo passo del montaggio dei vari componenti.

Ultima Modifica di FluidGuitar : 29-03-2007 08.07.58.
turborocket Non in Linea  
Chiudi Discussione Per le vostre immagini su questo forum potete usare PcTunerUp!
Iscriviti gratuitamente alla nostra newsletter.


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori)
 
Strumenti Discussione
Modalità Visualizzazione

Regole di scrittura
non Puoi inserire messaggi
non Puoi rispondere ai messaggi
non Puoi inviare allegati
non Puoi modificare i tuoi messaggi

codice vB è Attivo
Smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Disattivato
Pingbacks are Disattivato
Refbacks are Disattivato
Vai al Forum


Tutti gli Orari sono GMT +1. Attualmente sono le 08.51.31.


Powered by vBulletin Versione 3.6.12
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0