Antonello91 Inserito: 9 ottobre 2017 Segnala Inserito: 9 ottobre 2017 Buon giorno. Sto provando a instaurare una connessione tramite I2C tra un micocontrollore che opera 3.3V verso il dispositivo PCF8576 (che nel collegamento rappresenta lo slave). Ho provato ad alimentare il PCF8576 a 3.3V in modo da avere segnali I2C a quel livello di tensione, apparentemente il dispositivo sembra funzionare, infatti le sue linee di uscita sono tutte a livello logico alto (come dovrebbe comportarsi in modo normale), emette il segnale di sincronismo ed il clock. Il dispositivo però da datasheet richiede una alimentazione tra 2 e 9V. Nella comunicazione I2C sembra che il microcontrollore (master) non riceve l'ack dopo aver inviato l'indirizzo. Vorrei chiedervi quindi, il PCF8576 non sta lavorando con quella alimentazione o la causa va ricercata nella programmazione del microcontrollore?
Livio Orsini Inserita: 9 ottobre 2017 Segnala Inserita: 9 ottobre 2017 Cito a memoria, ma credo che il PCF8576 lavori solo a 5V. Inoltre ne esistono di 2 tipi (credo sia PCF8576 N) ed hanno indirizzi differenti: uno ha il bit più significativo a "0", l'altro a "1". Ti consiglio di leggerti bene il dadasheet del PCF8576 che stai usando. Quasi certamnte dovrai fare dei traslatori di livello in prossimità del PCF8576 sul bus I2C
Antonello91 Inserita: 9 ottobre 2017 Autore Segnala Inserita: 9 ottobre 2017 Grazie! E' un PCF8576T. Avevo gia provato velocemente l'IC con Arduino che permette di fare prove veloci, ho così potuto vederne per bene il protocollo. Ora sto cercando di trasportare il tutto sul mio microcontrollore che devo integrare nella fase finale. Proverò con un traslatore di livello; pensavo di ricorrere al ST2378E che ha 8 linee ingresso / uscita. Non è specifico per l'I2C ma può andare bene lo stesso? Ero stato tratto in inganno, dal fatto che a 3.3V il PCF8576T sembrava essere acceso. Come avevo scritto il Sync e il CLK sono comunque emessi regolarmente, ma evidentemente l'interfaccia I2C non sta lavorando.
Antonello91 Inserita: 12 ottobre 2017 Autore Segnala Inserita: 12 ottobre 2017 Ho dovuto cambiare IC purtroppo il PCF8576T è definitivamente andato e non riesco a sostituirlo, pare sia andato fuori produzione. L'ho cambiato con un LC75821 (della Sanyo), ha linea CLK, DATA e CE, ma difatto è una I2C? Ne datasheet non è espressamente indicata e non vedo nei diagrammi temporali la presenza dell'indirizzo ne' alcuna indicazione sul valore dell'indirizzo del dispositivo.
ilguargua Inserita: 12 ottobre 2017 Segnala Inserita: 12 ottobre 2017 56 minuti fa, Antonello91 scrisse: L'ho cambiato con un LC75821 (della Sanyo), ha linea CLK, DATA e CE, ma difatto è una I2C? No, l'I2C non ha bisogno del CE (chip enable) perchè si basa su un indirizzo presente nel messaggio. A me sembra più una sorta di SPI a 3 fili anzichè 4, plausibile perchè devi solo comandare il chip e non leggere da esso dei dati. Con Arduino puoi usare ad esempio la funzione ShiftOut() per comandarlo. Ciao, Ale.
Livio Orsini Inserita: 12 ottobre 2017 Segnala Inserita: 12 ottobre 2017 3 ore fa, Antonello91 scrisse: Ho dovuto cambiare IC purtroppo il PCF8576T è definitivamente andato e non riesco a sostituirlo, pare sia andato fuori produzione Ma no. Strano è talmente diffuso che sembra improbabile sia andato fuori produzione. RS ce lo ha disponibile a catalogo.
Antonello91 Inserita: 14 ottobre 2017 Autore Segnala Inserita: 14 ottobre 2017 Ho notato che i segnali che emetto verso l'LC75821 non hanno una buona integrità dal punto di vista digitiale, presentano delle smussature troppo evidenti (tempi di salita lenti). Purtroppo visto che sto adattando una scheda gia realizzata, non posso intervenire per miglirare dal punto di vista circuitale. Posso però ridurre l'effetto configurando le uscite, nel microcontrollore che genera i segnali digitali, con pull down? O inserire condensatori da 100n vrso massa per eliminare eventuali disturbi? I segnali digitali nello stato di riposo sono a 0V per questo pensavo al pull down sul micro.
Livio Orsini Inserita: 14 ottobre 2017 Segnala Inserita: 14 ottobre 2017 41 minuti fa, Antonello91 scrisse: presentano delle smussature troppo evidenti (tempi di salita lenti). Se sono lenti i tempi di salita significa che non c'è pullup. I fronti "sdraiati" dipendono dalle capacità parassite del sistema. Se è lento il fronte di salita significa che c'è una capacità verso lo zero caricata con una corrente insufficiente. Quindi bisogna mettere un PULL-UP per aumentare la corrente di carica. Il modo migliore per pilotare questo tipo di segnali è un front end line driver, che tira corrente sia verso lo zero, sia verso il positivo. Potresti mettere un dispositivo tipo DS8923 in uscita alla schda micro. Oppure verifica nella configurazione del micro se è possibile avere il pull- up interno, come per arduino e pic.
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora