html Bit stuffing e decodifica in ricezione nel CAN classico - FCTELE
                                   +8618758069661 [email protected]
Ricerca prodotti Guida: spazio = AND, | = OR, ! = NOT

Perché il CAN classico inserisce bit di stuffing e come li rimuovono i ricevitori

Hai domande? Chiamaci oggi!

+8618758069661

Oppure lasciaci un messaggio

Messaggio online

Perché il CAN classico inserisce bit di stuffing e come li rimuovono i ricevitori

Visualizzazioni: 32 +32Articolo originale di FCTELEAutore: team tecnico FCTELE

BIT STUFFING NEL CAN CLASSICO

Come il ricevitore separa i dati utili dai bit di stuffing

Nella regione soggetta a stuffing, il trasmettitore inserisce un bit di valore opposto dopo cinque bit uguali sul bus. Il ricevitore verifica e rimuove quel bit prima di interpretare i campi. Individua innanzitutto il limite della trama, poi confronta la traccia sul bus con la trama decodificata.

01

Inserimento

The transmitter inserts an opposite bit after five equal wire bits.0 0 0 0 0Stuff 1

Il trasmettitore inserisce un bit di valore opposto dopo cinque bit uguali sul bus.

02

Individuazione del limite

The receiver stops applying dynamic stuffing after the CRC sequence.SOF → CRC bitsFixed form

Il ricevitore smette di applicare la regola dello stuffing dinamico dopo la sequenza CRC.

03

Misura a entrambe le estremità

Compare the same test frame on the two copper segments.ABCAN fiber link

Confronta la stessa trama di prova sui due segmenti in rame.

01 Conferma il formato

Verifica che si tratti di CAN classico e identifica il tipo di trama e la velocità di bit nominale.

02 Individua il campo

Verifica se la serie di bit uguali rientra nella regione soggetta a stuffing.

03 Allinea le osservazioni

Metti in corrispondenza le transizioni del segnale grezzo con la trama visualizzata dall’analizzatore e con gli errori segnalati dal controller.

Lista di controllo per la verifica della traccia — espandi
Controllo Cosa confermare Come verificare
Bit sul bus Serie di stati uguali Conta a partire dall’inizio della regione pertinente
Limite del campo Fine della sequenza CRC Individua il delimitatore, l’ACK e l’EOF
Estensione su fibra Punto di osservazione Allinea le acquisizioni sui due segmenti in rame

Dopo aver scritto i dati CAN nel controller, potresti osservare sull’oscilloscopio più bit di quanti ne risultino dalla somma delle lunghezze dei campi logici della trama. Questi bit aggiuntivi sono dovuti al bit stuffing. Nella regione pertinente di una trama CAN classica, il trasmettitore inserisce un bit di valore opposto dopo cinque bit consecutivi dello stesso valore. Il ricevitore individua e rimuove quel bit applicando la stessa regola, poi interpreta i campi originali. Questo processo aiuta i ricevitori a correggere la temporizzazione dei bit e spiega perché messaggi della stessa lunghezza possono occupare il bus per tempi diversi.

Anche un segnale costante trasporta bit

Su un bus CAN ad alta velocità in rame, il ricetrasmettitore converte i bit del controller in stati differenziali tra CAN_H e CAN_L. Un bit dominante rappresenta il valore logico 0 e un bit recessivo rappresenta il valore logico 1. Quando un nodo impone lo stato dominante, questo può prevalere sugli stati recessivi trasmessi dagli altri nodi. Anche se lo stato elettrico rimane costante, il controller in ricezione determina comunque il valore del bit al punto di campionamento di ciascun intervallo di bit. Un tratto a livello dominante può contenere più zeri, ciascuno della durata di un intervallo di bit.

Ogni nodo ha il proprio oscillatore. La durata nominale del bit può essere impostata allo stesso valore su tutti i nodi, ma nella pratica rimangono piccoli scostamenti. Il ricevitore allinea la propria temporizzazione all’inizio della trama e usa i fronti idonei per correggere la fase all’interno della trama. Se per un lungo periodo manca un fronte idoneo, aumenta lo scostamento tra gli istanti di campionamento del ricevitore e i limiti dei bit del trasmettitore. Lo stuffing crea transizioni all’interno di lunghe serie di bit uguali, offrendo occasioni di sincronizzazione. Il corretto campionamento dipende anche dal ritardo di propagazione, dalle impostazioni del punto di campionamento e dalla qualità del segnale.

CAN_H e CAN_L divergono durante i cinque bit a 0 dominanti e convergono in corrispondenza del bit a 1 recessivo inserito
Figura 1. La colonna arancione rappresenta il bit a 1 recessivo inserito. Le linee rimangono in quello stato logico anche per il bit a 1 originale che segue. Forma d’onda schematica originale, non ricavata da una misurazione. L’illustrazione dello strumento è stata realizzata con l’ausilio dell’IA.

Il trasmettitore conta i bit già inviati sul bus

Considera una sequenza semplificata all’interno della regione soggetta a stuffing dinamico, partendo da un conteggio dei bit uguali pari a zero. La sequenza logica prevede cinque zeri seguiti da un uno. Dopo aver inviato il quinto zero, il trasmettitore inserisce un uno e poi invia l’uno originale. Sul bus compaiono cinque zeri, un bit di stuffing a uno e l’uno originale. L’inserimento può avvenire all’interno di un byte o subito dopo la fine di un campo. Il controller segue un flusso continuo di bit e mantiene il conteggio da un byte all’altro.

Il bit inserito fa a sua volta parte della sequenza trasmessa e avvia una nuova serie. Supponiamo che la sequenza originale preveda quattro uno dopo i cinque zeri. Questi quattro bit, insieme al bit a uno inserito, formano una serie di cinque uno consecutivi; il trasmettitore inserisce quindi uno zero. La regola non si riduce a un inserimento ogni cinque bit originali. I campi adiacenti e i bit inseriti in precedenza influiscono sul momento in cui avviene l’inserimento successivo.

Dopo cinque bit identici, il ricevitore si aspetta che il bit successivo abbia lo stato opposto. Quando campiona il valore atteso, riconosce il bit di stuffing e aggiorna lo stato del conteggio della serie ricevuta, senza includere quel bit nell’interpretazione dei campi. Il successivo bit a uno originale viene conservato. I due bit a uno possono apparire sul bus come un unico tratto a livello costante. Il ricevitore ne distingue la funzione in base alla posizione e alla sequenza dei bit precedenti.

Frame dati CAN classico: bit stuffing dinamico da SOF fino alla sequenza CRC inclusa, seguito da campi a formato fisso
Figura 2. I campi sono mostrati nell’ordine di trasmissione. Il bit stuffing dinamico include la sequenza CRC. Il delimitatore CRC, ACK ed EOF hanno un formato fisso. In EOF sono validi sette bit recessivi. Le larghezze dei campi non sono in scala.

Dove si interrompe il conteggio dei bit uguali

Lo stuffing dinamico si applica anche ai campi pertinenti di una trama remota CAN classica. Il suo DLC può indicare la lunghezza dei dati richiesti, ma la trama non contiene un campo dati. Quando verifichi manualmente una traccia, identifica il tipo di trama prima di individuare la sequenza CRC. Interpretare il DLC della trama remota come il numero di byte di dati che seguono sposterebbe tutti i limiti successivi.

In una trama dati CAN classica, lo stuffing dinamico inizia all’inizio della trama e si applica ai campi di arbitraggio, controllo e dati, fino alla fine della sequenza CRC. Il ricevitore tiene conto delle lunghezze dei campi mentre elabora questa regione. I bit di stuffing aumentano il tempo di occupazione del bus. Il codice di lunghezza dei dati, o DLC, conserva il suo significato originale. La disposizione logica dei campi può differire dalla suddivisione temporale del segnale osservata sull’oscilloscopio.

Il delimitatore CRC, il campo ACK e la fine della trama seguono regole proprie dopo la sequenza CRC. Il conteggio precedente dello stuffing dinamico non si applica più. Ad esempio, la fine di una trama CAN classica contiene sette bit recessivi consecutivi. Questa serie, da sola, non indica un errore di stuffing. Individua il limite della trama e gli eventuali flag di errore prima di stabilire in quale regione si trovi un tratto a livello costante.

Il trasmettitore calcola la sequenza CRC del CAN classico a partire dai bit logici senza stuffing, dall’inizio della trama alla fine del campo dati. Durante la trasmissione include poi la sequenza CRC nella regione soggetta a stuffing. Il ricevitore rimuove i bit di stuffing dinamico ed esegue il corrispondente controllo CRC. I bit aggiunti dalla codifica e il controllo di integrità del campo svolgono quindi funzioni distinte. CAN FD applica regole diverse nel proprio campo CRC. Verifica il formato della trama e la configurazione del controller rispetto alla specifica applicabile.

A parità di lunghezza dei dati, i tempi di occupazione possono variare

Distingui il tempo di trasmissione della trama dal tempo di attesa del messaggio prima della trasmissione. Lo stuffing incide sul tempo di occupazione del bus da parte della trama stessa. Il ritardo di arbitraggio dipende da ciò che gli altri nodi stanno trasmettendo in quel momento. Per un messaggio periodico, registra separatamente l’intervallo tra due bit consecutivi di inizio trama e la durata tra l’inizio e la fine di una singola trama. Le variazioni nelle due misure indicano cause diverse.

Considera due trame dati CAN classiche trasmesse correttamente con lo stesso numero di byte di dati. Gli identificatori o le sequenze di bit dei dati possono essere diversi. Una trama può contenere ripetute serie lunghe di bit uguali, mentre nell’altra zeri e uno possono alternarsi spesso. La prima può richiedere più bit di stuffing; anche i valori specifici della sequenza CRC influiscono sul conteggio. Alla stessa velocità di bit nominale, ogni bit di stuffing aggiunge un intervallo di bit. Per stimare il carico, usa la lunghezza misurata sul bus o una stima prudenziale di tale lunghezza.

Un analizzatore di protocollo mostra di solito l’identificatore, il DLC e i dati recuperati nella vista decodificata. Per verificare l’occupazione del bus, stabilisci dove inizia e dove finisce la misurazione. Il tempo di trasmissione di una trama, l’attesa dall’inserimento in coda al superamento dell’arbitraggio e il tempo impiegato per ritrasmettere dopo un errore sono grandezze distinte. Documentare i limiti di misurazione permette di distinguere l’aumento della lunghezza della trama dal ritardo dovuto alla contesa per il bus.

Individua la regione in cui compare un errore di stuffing

In un campo soggetto a stuffing dinamico, il ricevitore segnala un errore di stuffing se campiona un sesto bit dello stesso valore nel punto in cui dovrebbe comparire un bit di valore opposto. Un lungo tratto a livello costante può dipendere da un comportamento anomalo sul lato trasmittente, dalle impostazioni locali del punto di campionamento o della velocità di bit, oppure dalla distorsione del segnale. Se un nodo in stato di errore attivo invia un flag di errore attivo, gli altri nodi possono osservare in seguito una lunga serie di bit dominanti che viola la regola. Un errore di stuffing registrato in un log può quindi essere la conseguenza di un errore precedente.

Registra i tipi di errore, il primo evento e qualsiasi forma d’onda disponibile. Un errore CRC indica una mancata corrispondenza tra il calcolo del ricevitore e la sequenza CRC ricevuta. Un errore di forma riguarda un campo con un formato prescritto. Un errore ACK significa che il trasmettitore non ha rilevato la conferma dominante attesa nello slot ACK. Questi errori possono susseguirsi durante lo stesso evento. Ordinare gli eventi cronologicamente e verificare il campo interessato aiuta a circoscrivere l’indagine.

Due unità CAN per fibra ottica collegate otticamente, con i punti di prova A e B sui due segmenti in rame
Figura 3. Acquisire lo stesso frame di prova nei punti A e B, quindi allineare temporalmente i frame e le marche temporali degli errori. I collegamenti sono rappresentati schematicamente. Consultare la documentazione del modello per le porte ottiche e il cablaggio. L’illustrazione del dispositivo è stata realizzata con l’ausilio dell’IA.

Verifica ogni segmento in rame e il ruolo di ciascun dispositivo quando estendi il CAN su fibra

La documentazione di FCTELE relativa al modem CAN in fibra a otto canali per guida DIN riporta le funzioni di ripetizione da CAN a fibra e di funzionamento punto-punto. In una prova tecnica, considera i segmenti CAN in rame, la fibra e i dispositivi terminali come punti di osservazione distinti. Verifica il formato della trama, la velocità di bit, la terminazione e il cablaggio consultando la documentazione dei dispositivi effettivamente utilizzati. Usa quindi un messaggio noto in una configurazione di prova isolata per verificare la ricezione a ciascuna estremità. Le figure indicano i punti di osservazione. Consulta la documentazione del modello pertinente per stabilire come trasferisce i segnali sulla fibra.

Se il segnale e le trame decodificate rimangono stabili sul segmento in rame lato trasmettitore, ma vicino al ricevitore compaiono errori intermittenti, confronta lo stato e le marcature temporali all’altra estremità. Verifica se il guasto segue un cavo, un dispositivo terminale o un carico specifico. Mantieni tracciabili il periodo del messaggio e le altre condizioni di prova e modifica una sola variabile alla volta. Il resoconto finale dovrebbe indicare se i campi sono stati recuperati correttamente, se gli errori si sono ripresentati e se, dopo aver modificato il percorso, il traffico effettivo dell’applicazione è tornato alla normalità. Questo permette di distinguere il normale overhead dello stuffing dai guasti di trasmissione effettivi.

Fonti e ambito di applicazione

Bosch: rilevamento degli errori in CAN e CAN FD · Microchip: bit stuffing e formato delle trame CAN · Unità CAN in fibra a otto canali per guida DIN di FCTEL (in cinese)

Tradotto dall'articolo tecnico in cinese: Leggi l'articolo originale in cinese.

Domande frequenti

Perché inserire un bit dopo cinque bit uguali?

Il bit di valore opposto crea una transizione sul bus. I fronti che soddisfano le condizioni di sincronizzazione possono essere usati per correggere la temporizzazione dei bit, limitando la durata di una sequenza senza transizioni.

I sette bit recessivi dell’EOF causano un errore di stuffing?

L’EOF del CAN classico ha un formato fisso. I suoi sette bit recessivi sono al di fuori della regione soggetta a bit stuffing dinamico.

Come si può seguire un errore di stuffing lungo un collegamento in fibra?

Acquisisci la stessa trama di prova su entrambi i segmenti in rame, verifica la velocità di bit, il campionamento e la terminazione, allinea le marcature temporali degli errori del controller e verifica come le unità in fibra inoltrano il traffico.

Approfondimenti

Estensione di un bus CAN su fibra · Interfacce elettriche e arbitraggio CAN

Condividi questo articolo