Vai al contenuto
PLC Forum


SSI - interfaccia seriale sincrona su coassial


rob10kg

Messaggi consigliati

Nel laboratorio dove sto lavorando si usa per il trasferimento dati la SSI che da specifiche viene definita una interfaccia seriale sincrona.

Questa seriale è asincrona secondo me poi se il software gestisce qualche bit per la sincronizzazione va bene ma se non c'è il filo del clock vale il principio di funzionamento :

un ricevitore e un trasmettitore rimangono sincronizzati grazie ad una breve sequenza di bit che abbiano lo stesso clock di riferimento.

Link al commento
Condividi su altri siti

  • 2 weeks later...

Mi rispondo da solo.

Le interfacce asincrone utilizzano il bit di start e di stop per ricreare il clock nell'UART tenendo presente i limiti di questa tecnologia ossia :

- è necessario il bit di stuffing per non perdere la rigenerazione del clock all'interno del ricevitore

- il TX e l'Rx rimangono "sincronizzati" solo per un breve periodo di tempo

L'SSI è una interfaccia sincrona che utilizza un PLL interno al ricevitore che si aggancia ad uno o più bytes utilizzati nel pacchetto proprio per questo scopo.

I bit nel bytes possono essere addirittura temporizzati con clock diversi.Si dovrà utilizzare un PLL con un counter che esegua una divisione nota per i bit che sono stati generati nel tx con frequenza superiore.

Link al commento
Condividi su altri siti

L'interfaccia SSI è una interfaccia sincrona con trasmissione e ricezione di tipo differenziale.

- n° 2 linee di clock pilotate dal sistema master (CLOCK+, CLOCK-)

- n° 2 linee di dato su cui lo slave mette le risposte (DATA+, DATA-)

L'interfaccia SSI non richiede l'uso di PLL o altri sistemi di sicronizzazione/estrazione del clock.

Per illustrare nel dettaglio il funzionamento possiamo fare riferimento solo alla linea CLOCK+ e DATA+ senza ledere in generalità, le altre due linee infatti CLOCK- e DATA- sono semplicemente i complementati delle precedenti.

Nello stato inattivo sia la linea di clock (CLOCK+) che di dato (DATA+) assumono il livello logico alto che corrisponde ad una tensione di +5V.

Nel momento in cui il master vuole richiedere l'informazione allo slave (ad esempio un encoder assoluto), il master pilota al livello logico basso la linea CLOCK+, questo fronte di discesa segnala allo slave che deve congelare il valore dell'informazione al suo interno dato che negli istanti successivi sarà richiesta dal master.

A questo punto il master riporta al livello logico alto la linea CLOCK+ e lo slave m ette sulla linea DATA+ un bit (tipicamente l'MSB) del pacchetto dati da trasferire al master, il master poi porta nuovamente al livello logico basso la linea di clock, in corrispondenza di questo evento il master può campionare la linea di dato con la sicurezza che il bit è oramai stabile dato che era stato aggiornato in corripondenza del fronte si salita del CLOCK (la frequenza del clock tipicamente è compresa fra 125 kHz e 2MHz).

A questo punto il ciclo ricomincia ed il master riporta a zero la linea di clock (CLOCK+), lo slave mette sulla linea di dato il bit successivo e cosi via fino alla trasmissione di tutti i bit.

Arrivati all'ultimo fronte di salita la linea di clock rimane al livello logico alto mentre lo slave forza la linea di dato a zero per un tempo definito Tempo di Monoflop il quale tipicamente è compreso fra 12 us e 19 us, trascorso questo intervallo di tempo la linea di dato ritorna al livello logico alto.

Da questa breve spiegazione è chiaro come l'interfaccia sia sincrona dato che lo slave emette i bit del pacchetto dati in corrispondenza dei fronti di discesa del segnale della linea di clock la quale è pilotata dal master.

Implementare un interfaccia SSI su un microcontrollore (ad esempio un PIC oppure un LPC della NXP o qualsiasi altro microcontrollore) richiede come risorse di I/O due linee da configurare una in uscita ed una in ingresso, queste andranno poi collegate ad un transceiver differenziale come ad esempio il DS8921AMX prodotto dalla National Semiconductor (http://www.national.com/ds.cgi/DS/DS8921.pdf).

Fatto questo, a livello software, con un semplice ciclo for si implementa tutta la logica di funzionamento dell'interfaccia.

Spero di essere stato chiaro, se ti servono maggiori informazioni o delucidazioni in merito sono qua wink.gif

Ciao

Pow

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...