Taula de continguts:

Interfície CAN STM32: 7 passos
Interfície CAN STM32: 7 passos

Vídeo: Interfície CAN STM32: 7 passos

Vídeo: Interfície CAN STM32: 7 passos
Vídeo: STM32 настройка CAN 2024, De novembre
Anonim
Interfície CAN STM32
Interfície CAN STM32

El bus de xarxa d'àrea de controlador o bus CAN és un protocol de comunicació molt eficaç gràcies a les seves capacitats d'alta velocitat, fiabilitat a llarg abast i immunitat contra el soroll. Per aquests motius, la comunicació CAN s'ha convertit en l'estàndard en tecnologies d'automoció i entorns amb alt nivell de soroll. Els dispositius del bus CAN s’anomenen nodes. Tots els nodes del bus CAN es connecten en paral·lel, és a dir, que cada node està connectat a tots els altres nodes de la xarxa. Un sol bus CAN pot tenir fins a 115 nodes alhora, depenent de la velocitat de transmissió de missatges, però per a la majoria d’aplicacions es recomana tenir fins a 32 dispositius. També es recomana mantenir la longitud entre el primer i l'últim node a menys de 40 metres de distància.

Aquest tutorial pas a pas us mostrarà com configurar un node CAN mitjançant el microcontrolador STM32, inclòs el circuit i el codi C simple per llegir i escriure al bus CAN

Subministraments

Per a cada node CAN:

  • 1 x tauler STM32 (Nucleo, Blue Pill, altres)
  • 1x IC transceptor CAN MCP2551
  • 1x condensador de 0,1µF
  • 1x 120Ω resistència
  • 1x 1kΩ resistència
  • 1+ entrada llegible (botó, interruptor, potenciòmetre, etc.) o sortida (LED, MOSFET, etc.)
  • 1x connector Dsub9

Pas 1: el circuit de transceptors

El circuit de transceptors
El circuit de transceptors

Per comunicar-nos amb el bus CAN, utilitzarem l’IC transceptor CAN MCP2551. El CI actua com un parell de transmissor / receptor intermedi per connectar el STM32 al bus CAN. El circuit per configurar aquest CI és bastant senzill, però hi ha algunes coses a tenir en compte:

  • El CAN_RX (pin 4) i CAN_TX (pin 1) del xip MCP2551 només poden anar a determinats pins del STM32.

    • Al nucli STM32F1, connecteu la línia RX al pin PB8 i la línia TX al pin PB9.
    • A la píndola blava STM32F1, connecteu RX al pin PA11 i TX al pin PA12.
    • Tingueu en compte que aquestes assignacions de pins tenen alternatives. Consulteu els manuals del microcontrolador per determinar quins pins són capaços de CAN_RD i CAN_TD
    • Si utilitzeu un Arduino o una placa sense un comunicador CAN integrat, caldrà que el xip MCP2515 IC converti altres protocols de missatges a CAN.
  • El pin CANL s'hauria de connectar als altres pins CANL dels altres nodes de bus. El mateix passa amb els pins CANH.
  • La resistència de 120Ω a través dels pins CANH i CANL només és necessària si el node és un node terminal. Això significa que es troba al final del cablejat de connexió paral·lela. Dit d’una altra manera, el bus CAN només hauria de tenir dues resistències de 120 Ω, i haurien d’estar tan allunyades les unes de les altres com sigui possible.
  • Finalment, la resistència de 1 kΩ a RS (pin 8) es pot canviar per una resistència de 10 kΩ per controlar el temps de pujada / baixada dels bits de missatge CAN. Consulteu el full de dades del xip MCP2551 per obtenir més informació.

Pas 2: llegir i escriure al bus CAN

Llegir i escriure al CAN Bus
Llegir i escriure al CAN Bus

Ara que el circuit transceptor està connectat al STM32, podem començar a escriure missatges al bus CAN. Aquesta guia instructiva no aprofundirà en el codi STM32. Tanmateix, assegureu-vos de consultar el nostre codi per obtenir exemples aquí. L'ús de l'STM32 com a node CAN requerirà un fitxer de capçalera CAN. Vam escriure la nostra, que es pot trobar al nostre github aquí. Aquí, oferirem una breu visió general del procés de lectura / escriptura.

Per llegir des del bus CAN, primer hem de conèixer l’identificador del missatge CAN. Tots els missatges han de tenir un identificador únic, amb una identitat més baixa amb més prioritat. El fragment de codi que es mostra aquí espera un missatge CAN amb l'identificador 0x622. Al nostre sistema, si el primer bit del 6è byte és alt, volem establir el pin A10 alt.

En escriure un missatge CAN, hem de recordar que els missatges CAN són de diversos bytes. Cada missatge escrit ha de tenir un identificador i una extensió. Al segon fragment de codi que es mostra, escrivim dades a cada byte i, a continuació, enviem el missatge (els paràmetres ID i longitud es defineixen anteriorment al codi).

Pas 3: Connexió de nodes

Connexió de nodes
Connexió de nodes

En connectar diversos nodes CAN, s’ha de prestar molta atenció a la longitud dels cables. Els dos nodes més allunyats poden estar separats fins a 40 m. Els nodes mitjans que es connecten al bus haurien d’estar a menys de 50 cm de les línies principals d’autobús.

Les connexions CAN segueixen un estàndard industrial d’utilitzar un connector Dsub9 amb la línia CANL al pin 2 i la línia CANH al pin7. L'opció CANGND line pot anar al pin 3.

Pas 4: Feu el PCB

Feu el PCB
Feu el PCB

Quan enruteu els senyals CAN en una PCB, recordeu que CAN és un senyal diferencial i, per tant, cal seguir les pautes d’encaminament per als CANH i CANL.

Pas 5: ampliació del Consell

Ampliant la Junta
Ampliant la Junta

Llenceu alguns nodes més, afegiu algunes entrades / sortides i connecteu tots els pins CANH i CANL. Tingueu en compte que cada STM32 o un altre microcontrolador requereix el seu propi xip MCP2551; no es poden compartir.

Dit això, intenteu que els vostres PCB siguin més petits que el que es mostra aquí

Pas 6: demaneu els vostres PCB a JLCPCB

Demaneu els vostres PCB a JLCPCB
Demaneu els vostres PCB a JLCPCB

JLCPCB ofereix un servei ràpid i d’alta qualitat a preus molt raonables. Obteniu 5 taulers, de qualsevol color amb un munt de personalitzacions, per només 2 $. I si és la vostra primera comanda, obteniu 10 taulers pel mateix preu.

Simplement pengeu els vostres gerbers i obteniu un pressupost instantani. Envieu la vostra comanda i els vostres taulers seran revisats per a la producció dins de l’hora. Un cop hàgiu pagat, podreu esperar els vostres taulers d’alta qualitat en tan sols tres dies.

Consulteu-ho aquí

Pas 7: Obteniu els vostres consells

Aconsegueix els teus consells!
Aconsegueix els teus consells!

Crits enormes a JLCPCB per patrocinar aquest projecte. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), és l’empresa més gran de prototips de PCB a la Xina i un fabricant d’alta tecnologia especialitzat en prototipatge ràpid de PCB i producció de PCB de lots petits. Van tenir l’amabilitat de proporcionar a UBC Solar els nostres nous PCBs per al nostre cotxe de carreres amb energia solar. Vam fer la nostra comanda el divendres i vam aconseguir els taulers el dimecres.

Recomanat: