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.
Inserimento
Il trasmettitore inserisce un bit di valore opposto dopo cinque bit uguali sul bus.
Individuazione del limite
Il ricevitore smette di applicare la regola dello stuffing dinamico dopo la sequenza CRC.
Misura a entrambe le estremità
Confronta la stessa trama di prova sui due segmenti in rame.
Verifica che si tratti di CAN classico e identifica il tipo di trama e la velocità di bit nominale.
Verifica se la serie di bit uguali rientra nella regione soggetta a stuffing.
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.

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.

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.

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


