Sommario:

Interfaccia CAN STM32: 7 passaggi
Interfaccia CAN STM32: 7 passaggi

Video: Interfaccia CAN STM32: 7 passaggi

Video: Interfaccia CAN STM32: 7 passaggi
Video: STM32 настройка CAN 2024, Novembre
Anonim
Interfaccia CAN STM32
Interfaccia CAN STM32

Il bus Controller Area Network, o bus CAN, è un protocollo di comunicazione molto efficace grazie alle sue capacità ad alta velocità, affidabilità a lungo raggio e immunità ai disturbi. Per questi motivi, la comunicazione CAN è diventata lo standard nelle tecnologie automobilistiche e negli ambienti ad alto rumore. I dispositivi sul bus CAN sono chiamati nodi. Tutti i nodi del bus CAN sono collegati in parallelo, il che significa che ogni nodo è connesso a tutti gli altri nodi della rete. Un singolo bus CAN può avere fino a 115 nodi contemporaneamente, a seconda della velocità di trasmissione dei messaggi, ma per la maggior parte delle applicazioni si consiglia di avere fino a 32 dispositivi. Si raccomanda inoltre di mantenere la lunghezza tra il primo e l'ultimo nodo a meno di 40 metri di distanza.

Questo tutorial passo passo ti mostrerà come configurare un nodo CAN utilizzando il microcontrollore STM32, incluso il circuito e il semplice codice C per leggere e scrivere sul bus CAN

Forniture

Per ogni nodo CAN:

  • 1x breakout board STM32 (Nucleo, Blue Pill, altri)
  • 1x MCP2551 CAN ricetrasmettitore IC
  • 1x condensatore da 0,1 µF
  • 1x resistenza da 120Ω
  • 1x resistenza da 1kΩ
  • 1+ ingresso leggibile (pulsante, interruttore, potenziometro, ecc.) o uscita (LED, MOSFET, ecc.)
  • 1x connettore Dsub9

Passaggio 1: il circuito del ricetrasmettitore

Il circuito del ricetrasmettitore
Il circuito del ricetrasmettitore

Per comunicare con il bus CAN, utilizzeremo l'IC ricetrasmettitore CAN MCP2551. L'IC funge da coppia trasmettitore/ricevitore intermedio per collegare l'STM32 al bus CAN. Il circuito per configurare questo circuito integrato è abbastanza semplice, ma ci sono alcune cose da notare:

  • CAN_RX (pin 4) e CAN_TX (pin 1) sul chip MCP2551 possono andare solo a determinati pin sull'STM32.

    • Su STM32F1 Nucleo, collegare la linea RX al pin PB8 e la linea TX al pin PB9.
    • Sulla pillola blu STM32F1, collegare RX al pin PA11 e TX al pin PA12.
    • Si noti che queste assegnazioni dei pin hanno alternative. Fare riferimento ai manuali del microcontrollore per determinare quali pin sono in grado di supportare CAN_RD e CAN_TD
    • Se si utilizza un Arduino o una scheda senza un comunicatore CAN integrato, sarà necessario il chip IC MCP2515 per convertire altri protocolli di messaggi in CAN.
  • Il pin CANL deve essere collegato agli altri pin CANL degli altri nodi bus. Lo stesso vale per i pin CANH.
  • La resistenza da 120Ω sui pin CANH e CANL è necessaria solo se il nodo è un nodo terminale. Ciò significa che si trova alla fine del cablaggio di collegamento parallelo. In altre parole, il bus CAN dovrebbe avere solo due resistori da 120Ω e dovrebbero essere il più distanti possibile l'uno dall'altro.
  • Infine, il resistore da 1kΩ su RS (pin 8) può essere sostituito con un resistore da 10kΩ per controllare il tempo di salita/discesa dei bit del messaggio CAN. Fare riferimento alla scheda tecnica del chip MCP2551 per maggiori dettagli.

Passaggio 2: lettura e scrittura sul bus CAN

Lettura e scrittura sul bus CAN
Lettura e scrittura sul bus CAN

Ora che il circuito del ricetrasmettitore è collegato all'STM32, possiamo iniziare a scrivere messaggi sul bus CAN. Questa guida istruttiva non approfondirà il codice STM32. Tuttavia, assicurati di controllare il nostro codice per gli esempi qui. L'utilizzo di STM32 come nodo CAN richiederà un file di intestazione CAN. Abbiamo scritto il nostro, che può essere trovato sul nostro github qui. Qui, daremo una breve panoramica del processo di lettura/scrittura.

Per leggere dal bus CAN, dobbiamo prima conoscere l'ID del messaggio CAN. Ogni messaggio dovrebbe avere un ID univoco, con ID inferiori con priorità più alta. Lo snippet di codice mostrato qui è in attesa di un messaggio CAN con ID 0x622. Nel nostro sistema, se il primo bit del 6° byte è alto, allora vogliamo impostare il pin A10 alto.

Quando scriviamo un messaggio CAN, dobbiamo ricordare che i messaggi CAN sono multi-byte. Ogni messaggio scritto deve avere un ID e una lunghezza. Nel secondo frammento di codice mostrato, scriviamo i dati su ciascun byte, quindi inviamo il messaggio (I parametri ID e lunghezza sono definiti in precedenza nel codice).

Passaggio 3: collegamento dei nodi

Collegamento di nodi
Collegamento di nodi

Quando si collegano più nodi CAN, prestare particolare attenzione alla lunghezza dei cavi. I due nodi più lontani possono trovarsi fino a 40 m di distanza l'uno dall'altro. I nodi intermedi che si collegano al bus dovrebbero trovarsi entro 50 cm dalle linee principali del bus.

Le connessioni CAN seguono uno standard industriale che prevede l'utilizzo di un connettore Dsub9 con la linea CANL sul pin 2 e la linea CANH sul pin7. L'opzione CANGND line può andare sul pin 3.

Passaggio 4: crea il PCB

Crea il PCB
Crea il PCB

Quando si instradano i segnali CAN su un PCB, ricordare che CAN è un segnale differenziale e, pertanto, è necessario seguire attentamente le linee guida di instradamento per CANH e CANL.

Passaggio 5: espansione del tabellone

Ampliare il consiglio
Ampliare il consiglio

Metti insieme altri nodi, aggiungi alcuni input/output e collega tutti i loro pin CANH e CANL. Si noti che ogni STM32 o altro microcontrollore richiede il proprio chip MCP2551; non possono essere condivisi.

Detto questo, prova a mantenere i tuoi PCB più piccoli di quello mostrato qui

Passaggio 6: ordina i tuoi PCB da JLCPCB

Ordina i tuoi PCB da JLCPCB
Ordina i tuoi PCB da JLCPCB

JLCPCB offre un servizio veloce e di alta qualità a prezzi molto ragionevoli. Ottieni 5 schede, di qualsiasi colore con tonnellate di personalizzazione, a soli $ 2! E se è il tuo primo ordine, ricevi 10 tavole allo stesso prezzo!

Basta caricare i tuoi gerber e ottenere un preventivo istantaneo! Invia il tuo ordine e le tue schede saranno esaminate per la produzione entro un'ora. Una volta pagato, puoi aspettarti le tue tavole di alta qualità in appena tre giorni!

Controllalo qui

Passaggio 7: ottieni le tue schede

Ottieni le tue tavole!
Ottieni le tue tavole!

Un enorme ringraziamento a JLCPCB per aver sponsorizzato questo progetto. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), è la più grande impresa di prototipi di PCB in Cina e un produttore high-tech specializzato nella prototipazione rapida di PCB e nella produzione di PCB in piccoli lotti. Sono stati così gentili da fornire a UBC Solar i nostri nuovi PCB per la nostra auto da corsa a energia solare. Abbiamo fatto l'ordine venerdì e abbiamo ricevuto le tavole mercoledì!

Consigliato: