Inhoudsopgave:
- Benodigdheden
- Stap 1: Het zendontvangercircuit
- Stap 2: Lezen en schrijven naar de CAN-bus
- Stap 3: Knooppunten verbinden
- Stap 4: Maak de PCB
- Stap 5: Het bord uitbreiden
- Stap 6: Bestel uw PCB's bij JLCPCB
- Stap 7: Haal je borden
Video: STM32 CAN-interface: 7 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
De Controller Area Network-bus, of CAN-bus, is een zeer effectief communicatieprotocol dankzij de hoge snelheidscapaciteiten, de lange afstandsbetrouwbaarheid en de ruisimmuniteit. Om deze redenen is CAN-communicatie de standaard geworden in autotechnologieën en omgevingen met veel lawaai. Apparaten op de CAN-bus worden nodes genoemd. Alle knooppunten op de CAN-bus zijn parallel aangesloten, wat betekent dat elk knooppunt is verbonden met alle andere knooppunten op het netwerk. Een enkele CAN-bus kan maximaal 115 knooppunten tegelijk hebben, afhankelijk van de snelheid van de berichtoverdracht, maar voor de meeste toepassingen wordt aanbevolen om maximaal 32 apparaten te hebben. Het wordt ook aanbevolen om de lengte tussen de eerste en de laatste knoop minder dan 40 meter uit elkaar te houden.
Deze stapsgewijze zelfstudie laat u zien hoe u een CAN-knooppunt instelt met behulp van de STM32-microcontroller, inclusief het circuit en de eenvoudige C-code om naar de CAN-bus te lezen en te schrijven
Benodigdheden
Voor elk CAN-knooppunt:
- 1x STM32 breakout-bord (Nucleo, Blue Pill, andere)
- 1x MCP2551 CAN-transceiver IC
- 1x 0.1µF condensator
- 1x 120Ω weerstand
- 1x 1kΩ weerstand
- 1+ leesbare ingang (knop, schakelaar, potentiometer, etc.) of uitgang (LED, MOSFET, etc.)
- 1x Dsub9-connector
Stap 1: Het zendontvangercircuit
Om met de CAN-bus te communiceren, gebruiken we het MCP2551 CAN-transceiver-IC. Het IC fungeert als een tussenzender/ontvanger-paar om de STM32 op de CAN-bus aan te sluiten. Het circuit om dit IC in te stellen is vrij eenvoudig, maar er zijn een paar dingen om op te merken:
-
De CAN_RX (pin 4) en CAN_TX (pin 1) op de MCP2551-chip kunnen alleen naar bepaalde pinnen op de STM32 gaan.
- Sluit op de STM32F1 Nucleo de RX-lijn aan op pin PB8 en de TX-lijn op pin PB9.
- Sluit op de STM32F1 blauwe pil RX aan op pin PA11 en TX op pin PA12.
- Merk op dat deze pintoewijzingen alternatieven hebben. Raadpleeg de handleidingen van de microcontroller om te bepalen welke pinnen geschikt zijn voor CAN_RD en CAN_TD
- Als u een Arduino of een bord gebruikt zonder ingebouwde CAN-communicator, is de MCP2515 IC-chip vereist om andere berichtprotocollen naar CAN te converteren.
- De CANL-pin moet worden aangesloten op de andere CANL-pinnen van de andere busknooppunten. Hetzelfde geldt voor de CANH-pinnen.
- De 120Ω-weerstand over de CANH- en CANL-pinnen is alleen nodig als het knooppunt een eindknooppunt is. Dit betekent dat het zich aan het einde van de parallelle verbindingsbedrading bevindt. Met andere woorden, de CAN-bus mag slechts twee 120Ω-weerstanden bevatten en ze moeten zo ver mogelijk van elkaar verwijderd zijn.
- Ten slotte kan de weerstand van 1 kΩ op RS (pin 8) worden vervangen door een weerstand van 10 kΩ om de stijg-/daaltijd van de CAN-berichtbits te regelen. Raadpleeg de datasheet van de MCP2551-chip voor meer details.
Stap 2: Lezen en schrijven naar de CAN-bus
Nu het transceivercircuit is aangesloten op de STM32, kunnen we beginnen met het schrijven van berichten naar de CAN-bus. Deze instructable gids gaat niet dieper in op de STM32-code. Bekijk hier echter onze code voor voorbeelden. Voor het gebruik van de STM32 als CAN-knooppunt is een CAN-headerbestand vereist. We hebben er zelf een geschreven, die je hier op onze github kunt vinden. Hier geven we een kort overzicht van het lees-/schrijfproces.
Om van de CAN-bus te kunnen lezen, moeten we eerst de ID van het CAN-bericht weten. Elk bericht moet een unieke ID hebben, waarbij lagere ID's een hogere prioriteit hebben. Het hier getoonde codefragment wacht op een CAN-bericht met ID 0x622. Als in ons systeem het eerste bit van de 6e byte hoog is, willen we pin A10 hoog zetten.
Bij het schrijven van een CAN-bericht moeten we onthouden dat CAN-berichten multi-byte zijn. Elk geschreven bericht moet een ID en lengte hebben. In het tweede getoonde codefragment schrijven we gegevens naar elke byte en verzenden vervolgens het bericht (de ID- en lengteparameters worden eerder in de code gedefinieerd).
Stap 3: Knooppunten verbinden
Bij het aansluiten van meerdere CAN-nodes moet goed worden gelet op de lengte van de kabels. De twee verste knooppunten kunnen tot 40 meter van elkaar verwijderd zijn. Middelste knooppunten die op de bus aansluiten, moeten zich binnen 50 cm van de hoofdbuslijnen bevinden.
CAN-verbindingen volgen een industriestandaard voor het gebruik van een Dsub9-connector met de CANL-lijn op pin 2 en de CANH-lijn op pin 7. De optie CANGND-lijn kan op pin 3 gaan.
Stap 4: Maak de PCB
Houd er bij het routeren van CAN-signalen op een PCB rekening mee dat CAN een differentieel signaal is en dat de routeringsrichtlijnen voor de CANH en CANL daarom zorgvuldig moeten worden gevolgd.
Stap 5: Het bord uitbreiden
Gooi nog wat knooppunten bij elkaar, voeg wat inputs/outputs toe en verbind al hun CANH- en CANL-pinnen. Merk op dat elke STM32 of andere microcontroller zijn eigen MCP2551-chip nodig heeft; ze kunnen niet worden gedeeld.
Dat gezegd hebbende, probeer je PCB's kleiner te houden dan de hier getoonde
Stap 6: Bestel uw PCB's bij JLCPCB
JLCPCB biedt snelle service van hoge kwaliteit tegen zeer redelijke prijzen. Krijg 5 borden, elke kleur met heel veel maatwerk, voor slechts $ 2! En als het je eerste bestelling is, krijg je 10 boards voor dezelfde prijs!
Upload je gerbers en ontvang direct een offerte! Dien uw bestelling in en uw boards worden binnen het uur beoordeeld voor productie. Zodra je hebt betaald, kun je je boards van hoge kwaliteit binnen drie dagen verwachten!
Bekijk het hier
Stap 7: Haal je borden
Enorme shout out naar JLCPCB voor het sponsoren van dit project. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), is de grootste onderneming voor PCB-prototypes in China en een hightechfabrikant die gespecialiseerd is in snelle PCB-prototyping en PCB-productie in kleine batches. Ze waren zo vriendelijk om UBC Solar te voorzien van onze nieuwe printplaten voor onze raceauto op zonne-energie. We hebben onze bestelling op vrijdag geplaatst en de planken op woensdag ontvangen!
Aanbevolen:
Begin met het ontwikkelen van STM32 op Linux: 4 stappen
Begin met het ontwikkelen van STM32 op Linux: in deze Instructable ga ik je laten zien hoe gemakkelijk het is om STM32-programma's op Linux te ontwikkelen. Ik begon Linux 2 jaar geleden als mijn hoofdmachine te gebruiken en ben niet in de steek gelaten. Alles werkt sneller en beter dan Windows. Natuurlijk is les
Gegevens ontvangen van op STM32 gebaseerde microcontroller naar pc: 5 stappen
Gegevens ontvangen van op STM32 gebaseerde microcontroller naar pc: Hier in deze tutorial hebben we gegevens van microcontroller naar pc verzonden met behulp van een van de UART of STM32l100 mcu
Een STM32 gebruiken als een Arduino-zelfstudie - STM32F103C8: 5 stappen:
Een STM32 gebruiken als een Arduino-zelfstudie | STM32F103C8: Hé, wat is er, jongens! Akarsh hier van CETech. In de volgende tutorial zullen we kijken naar de verschillende microcontrollers die door STM worden aangeboden, zoals de STM32F103C8, STM32F030F4 en STM8S103F3. We zullen deze micro's met elkaar vergelijken, samen met
Aan de slag met Stm32 met Arduino IDE: 3 stappen
Aan de slag met Stm32 Arduino IDE gebruiken: STM32 is een vrij krachtig en populair bord dat wordt ondersteund door Arduino IDE. om het te programmeren
De ongelooflijke STM32 L4!: 12 stappen
The Incredible STM32 L4!: Ik wil dit artikel beginnen met uitleggen dat deze letter L (van de L4) Laag (of eigenlijk Ultra Low Power) betekent. Het kost dus weinig energie en laat zien waarom deze STM32 ongelooflijk is! Het besteedt microampères en heeft een systeem binnenin dat de