INHOUDSOPGAWE:

STM32 CAN -koppelvlak: 7 stappe
STM32 CAN -koppelvlak: 7 stappe

Video: STM32 CAN -koppelvlak: 7 stappe

Video: STM32 CAN -koppelvlak: 7 stappe
Video: STM32 CAN шина. Часть 2. Фильтрация и демонстрация работы 2024, Julie
Anonim
STM32 CAN -koppelvlak
STM32 CAN -koppelvlak

Die Controller Area Network -bus, of CAN -bus, is 'n baie effektiewe kommunikasieprotokol danksy sy hoë spoedvermoëns, betroubaarheid oor die lang afstand en ruisimmuniteit. Om hierdie redes het CAN -kommunikasie die standaard geword in motortegnologieë en omgewings met hoë geraas. Toestelle op die CAN -bus word nodes genoem. Alle nodusse op die CAN -bus is parallel gekoppel, wat beteken dat elke knoop verbind is met al die ander nodusse op die netwerk. Afhangend van die tempo van die oordrag van boodskappe, kan 'n enkele CAN -bus tot 115 nodusse tegelyk hê, maar vir die meeste toepassings word aanbeveel om tot 32 toestelle te hê. Dit word ook aanbeveel om die lengte tussen die eerste en die laaste knoop minder as 40 meter uitmekaar te hou.

Hierdie stap-vir-stap handleiding sal u wys hoe u 'n CAN-knoop kan opstel met behulp van die STM32-mikrobeheerder, insluitend die stroombaan en eenvoudige C-kode om te lees en te skryf na die CAN-bus

Voorrade

Vir elke CAN -knoop:

  • 1x STM32 uitbreekbord (Nucleo, Blue Pill, ander)
  • 1x MCP2551 KAN -ontvanger IC
  • 1x 0.1µF kapasitor
  • 1x 120Ω weerstand
  • 1x 1kΩ weerstand
  • 1+ leesbare ingang (knoppie, skakelaar, potensiometer, ens.) Of uitset (LED, MOSFET, ens.)
  • 1x Dsub9 -aansluiting

Stap 1: Die ontvanger -kring

Die Transceiver Circuit
Die Transceiver Circuit

Om met die CAN -bus te kommunikeer, gebruik ons die MCP2551 CAN -ontvanger IC. Die IC dien as 'n intermediêre sender/ontvanger -paar om die STM32 aan die CAN -bus te koppel. Die kring om hierdie IC op te stel is redelik eenvoudig, maar daar is 'n paar dinge om op te let:

  • Die CAN_RX (pen 4) en CAN_TX (pen 1) op die MCP2551 -chip kan slegs na sekere penne op die STM32 gaan.

    • Koppel op die STM32F1 Nucleo die RX -lyn aan pin PB8 en die TX -lyn aan pin PB9.
    • Koppel RX aan pen PA11 en TX aan pen PA12 op die STM32F1 blou pil.
    • Let daarop dat hierdie penopdragte alternatiewe het. Raadpleeg die handleiding van die mikrobeheerder om vas te stel watter penne in staat is om CAN_RD en CAN_TD te gebruik
    • As u 'n Arduino of 'n bord sonder 'n ingeboude CAN -kommunikeerder gebruik, sal die MCP2515 IC -chip nodig wees om ander boodskapprotokolle na CAN om te skakel.
  • Die CANL -pen moet aan die ander CANL -penne van die ander busknope gekoppel word. Dieselfde geld vir die CANH -penne.
  • Die 120Ω -weerstand oor die CANH- en CANL -penne is slegs nodig as die knoop 'n terminale knoop is. Dit beteken dat dit aan die einde van parallelle verbindingsbedrading is. Met ander woorde, die CAN -bus moet slegs twee 120Ω -weerstande bevat, en hulle moet so ver as moontlik van mekaar wees.
  • Laastens kan die 1kΩ -weerstand op RS (pen 8) verruil word vir 'n 10kΩ -weerstand om die stygende/dalende tyd van die CAN -boodskapstukke te beheer. Raadpleeg die MCP2551 -skyfbladsy vir meer besonderhede.

Stap 2: Lees en skryf na die CAN -bus

Lees en skryf na die CAN -bus
Lees en skryf na die CAN -bus

Noudat die transceiver -kring aan die STM32 gekoppel is, kan ons begin om boodskappe na die CAN -bus te skryf. Hierdie instruksies sal nie die STM32-kode in diepte ingaan nie. Kyk egter na ons kode vir voorbeelde hier. Om die STM32 as 'n CAN -knoop te gebruik, benodig 'n CAN -koplêer. Ons het ons eie geskryf, wat u op ons github hier kan vind. Hier gee ons 'n kort oorsig van die lees-/skryfproses.

Om uit die CAN -bus te lees, moet ons eers die ID van die CAN -boodskap ken. Elke boodskap moet 'n unieke ID hê, met laer ID's wat hoër prioriteit het. Die kodefragment wat hier gewys word, wag op 'n CAN -boodskap met ID 0x622. In ons stelsel, as die eerste bietjie van die 6de byte hoog is, wil ons pen A10 hoog stel.

As ons 'n CAN-boodskap skryf, moet ons onthou dat CAN-boodskappe multi-byte is. Elke geskrewe boodskap moet 'n ID en lengte hê. In die tweede kodebrood wat getoon word, skryf ons data na elke greep, en stuur dan die boodskap (die ID en lengte parameters word vroeër in die kode gedefinieer).

Stap 3: Verbind nodes

Verbindende nodusse
Verbindende nodusse

By die aansluiting van verskeie CAN -nodes moet aandag gegee word aan die lengte van die kabels. Die twee verste nodusse kan tot 40 m van mekaar af wees. Middelknope wat met die bus verbind word, moet binne 50 cm van die hoofbuslyne wees.

CAN -verbindings volg 'n industriestandaard van die gebruik van 'n Dsub9 -aansluiting met die CANL -lyn op pen 2 en die CANH -lyn op pin7. Die opsie CANGND -lyn kan op pen 3 gaan.

Stap 4: Maak die PCB

Maak die PCB
Maak die PCB

As u CAN -seine op 'n PCB stuur, moet u onthou dat CAN 'n differensiële sein is, en daarom moet die routeringsriglyne vir die CANH en CANL noukeurig gevolg word.

Stap 5: Uitbreiding van die raad

Die uitbreiding van die raad
Die uitbreiding van die raad

Gooi nog 'n paar nodusse bymekaar, voeg 'n paar insette/uitsette by en verbind al hul CANH- en CANL -penne. Let daarop dat elke STM32 of ander mikrobeheerder sy eie MCP2551 -chip benodig; hulle kan nie gedeel word nie.

Met dit gesê, probeer om u PCB's kleiner te hou as die wat hier getoon word

Stap 6: Bestel u PCB's by JLCPCB

Bestel u PCB's by JLCPCB
Bestel u PCB's by JLCPCB

JLCPCB bied vinnige diens van hoë gehalte teen baie billike pryse. Kry 5 borde, elke kleur met tonne aanpassings, vir slegs $ 2! En as dit u eerste bestelling is, kry 10 borde vir dieselfde prys!

Laai net u gerbers op en kry 'n onmiddellike kwotasie! Dien u bestelling in, en u planke word binne 'n uur hersien vir produksie. Sodra u betaal het, kan u binne drie dae u borde van hoë gehalte verwag!

Kyk hier

Stap 7: Kry u planke

Kry jou borde!
Kry jou borde!

Groot dank aan JLCPCB vir die borg van hierdie projek. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), is die grootste PCB-prototipe-onderneming in China en 'n hoëtegnologiese vervaardiger wat spesialiseer in vinnige PCB-prototipering en klein-bondel PCB-produksie. Hulle was vriendelik genoeg om ons nuwe PCB's vir UBC Solar vir ons renmotor met sonkrag te voorsien. Ons het Vrydag ons bestelling geplaas en Woensdag die borde gekry!

Aanbeveel: