Taula de continguts:
- Subministraments
- Pas 1: el circuit de transceptors
- Pas 2: llegir i escriure al bus CAN
- Pas 3: Connexió de nodes
- Pas 4: Feu el PCB
- Pas 5: ampliació del Consell
- Pas 6: demaneu els vostres PCB a JLCPCB
- Pas 7: Obteniu els vostres consells
Vídeo: Interfície CAN STM32: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
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
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
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
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
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
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
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
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:
Interfície del sensor d'empremta digital capacitiva amb Arduino UNO: 7 passos
Interfície del sensor d’empremta digital capacitiva amb Arduino UNO: Ei, què passa, nois! Akarsh aquí des de CETech. Avui afegirem una capa protectora als nostres projectes. No us preocupeu, no designarem cap guardaespatlles per al mateix. Serà un senzill i senzill sensor d’empremtes digitals de DFRobot. Així doncs
Interfície del sensor de gas amb Arduino: 4 passos
Interfície del sensor de gas amb Arduino: el sensor de fum MQ-2 és sensible al fum i als gasos inflamables següents: GLP, butà, propà, metà, alcohol, hidrogen. La resistència del sensor és diferent segons el tipus de gas. El sensor de fum té un potenciòmetre incorporat
Interfície amb pantalla LCD M4 Inclusió: 5 passos
Interfície amb una pantalla LCD M4 Inclusió: aquest tutorial ens permetrà controlar una pantalla LCD a través de Wi-Fi des del nostre telèfon intel·ligent Si no disposem del dispositiu petit, podem utilitzar l’arduino, però a sota de l’enllaç per al desenvolupament del Drivemall. preferint el Drivemall per sobre de la cla
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32: 8 passos
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32s: en aquest tutorial, aprendreu tot sobre com iniciar, connectar-se i aconseguir que el dispositiu I2C (acceleròmetre) funcioni amb el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Interfície Sensor ADXL335 al Raspberry Pi 4B en 4 passos: 4 passos
Sensor d’interfície ADXL335 al Raspberry Pi 4B en 4 passos: en aquest instructiu farem una interfície del sensor ADXL335 (acceleròmetre) al Raspberry Pi 4 amb Shunya O / S