Domanda

Quale bus di comunicazione seriale useresti in un sistema embedded automobilistico se i tuoi criteri di selezione principali fossero:

  • Elettricamente robusto
  • Velocità lenta (32 kb / s)
  • Facile da programmare
  • Facile da interfacciare con i microcontrollori

Non trasferirà molti dati, ma dovrà essere trasferito periodicamente ad alta velocità (100 - 500 Hz). Trovo che RS-232 non sia abbastanza affidabile se hai rumore nella tua linea di terra. Il CAN-bus sembra interessante, ma non ho esperienza con esso.

Al momento siamo interessati a una combinazione di microcontrollori AVR AT90CAN128.

È stato utile?

Soluzione

Hai già scelto l'AT90CAN128, la cui caratteristica straordinaria rispetto ad altri processori AVR è il supporto per il bus CAN. Non esiste davvero una scelta migliore di CAN per un'applicazione automobilistica con i requisiti di velocità dei dati e immunità al rumore. Se ti avvicini a un cliente automobilistico con qualcosa di diverso da CAN, finirai per passare tutto il tuo tempo a difendere la decisione di non usarlo.

Detto questo, per l'immunità al rumore in un ambiente ostile come un'auto, avrai bisogno di un autobus che utilizza la segnalazione differenziale. Ciò esclude i2c o SPI, il che è sfortunato perché soddisfano gli altri requisiti. RS-485 sarebbe praticabile come sottolinea @Andrew Edgecombe.

Se non stai costruendo un prodotto commerciale ma invece costruisci qualcosa per il tuo uso personale da mettere nel vano motore, probabilmente puoi cavartela con USB. L'USB renderà più semplice l'interfaccia con un laptop nell'abitacolo e, sebbene non sia progettato per ambienti rumorosi, viene segnalato in modo differenziale a una tensione ragionevolmente alta.

Altri suggerimenti

Per la massima affidabilità non si può andare oltre CANbus (ma questo è stato implicito dalla scelta del processore?)

A seconda di cosa vuoi interfacciare, questo può essere molto semplice: il protocollo di livello base è abbastanza semplice. Ma se vuoi parlare con altri dispositivi non proprietari dovrai implementare i protocolli più alti (es. CANopen).

Ma se CANbus non è appropriato, allora consiglierei RS485 o RS422 (a seconda della topologia). Se tutto ciò che stai cercando di ottenere è una comunicazione punto a punto, è identico a RS232. (dovrai mettere in primo piano il tuo livello di protocollo se stai cercando di supportare le comunicazioni multidrop.)

Altre due eccellenti scelte oltre a CAN sono LIN e FlexRay. LIN è un'interfaccia più semplice e più lenta mentre FlexRay è più robusto e progettato per sistemi critici per la sicurezza come i controlli in tempo reale dei freni.

Per una bella tabella di riepilogo di come le varie scelte di autobus si collegano vedere questo slide .

Suggerirei sempre che CAN è il migliore nella comunicazione automobilistica.

  • Ha una linea differenziale che può resistere anche se c'è un problema elettrico nel trasferimento dei dati nel livello fisico
  • può fornire una velocità affidabile, serve una velocità di trasmissione di 500 KB nella maggior parte delle applicazioni software automobilistiche.
  • L'interfaccia
  • è semplice anche se si conosce la cassetta postale del controller CAN e la struttura del registro.

Come altri hanno detto, CAN è standard, robusto, più robusto a bassa velocità ecc.

E c'è anche supporto nel kernel Linux per esso dalla versione 2.6.15 se hai mai bisogno di un sistema più grande.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top