Talaan ng mga Nilalaman:

STM32 CAN Interface: 7 Mga Hakbang
STM32 CAN Interface: 7 Mga Hakbang

Video: STM32 CAN Interface: 7 Mga Hakbang

Video: STM32 CAN Interface: 7 Mga Hakbang
Video: 7 Segment Display interfacing with STM32 2024, Nobyembre
Anonim
STM32 CAN Interface
STM32 CAN Interface

Ang Controller Area Network bus, o CAN bus, ay isang mabisang protocol ng komunikasyon salamat sa mataas na bilis ng kakayahan, pagiging maaasahan sa mahabang saklaw, at kaligtasan sa ingay. Para sa mga kadahilanang ito, ang komunikasyon ng CAN ay naging pamantayan sa mga teknolohiya ng automotive at mataas na mga kapaligiran sa ingay. Ang mga aparato sa CAN bus ay tinatawag na node. Ang lahat ng mga node sa CAN bus ay konektado sa kahanay, nangangahulugan na ang bawat node ay konektado sa lahat ng iba pang mga node sa network. Ang isang solong CAN bus ay maaaring magkaroon ng hanggang sa 115 node nang sabay-sabay, depende sa rate ng paghahatid ng mensahe, ngunit para sa karamihan ng mga aplikasyon, inirerekumenda na magkaroon ng hanggang sa 32 mga aparato. Inirerekumenda rin na panatilihin ang haba sa pagitan ng una at huling node na mas mababa sa 40 metro ang layo.

Ipapakita sa iyo ng sunud-sunod na tutorial na ito kung paano mag-set up ng isang CAN node gamit ang microcontroller ng STM32, kabilang ang circuit at simpleng C code upang mabasa at sumulat sa CAN bus

Mga gamit

Para sa bawat CAN node:

  • 1x STM32 breakout board (Nucleo, Blue Pill, iba pa)
  • 1x MCP2551 CAN transceiver IC
  • 1x 0.1µF capacitor
  • 1x 120Ω risistor
  • 1x 1kΩ risistor
  • 1+ na nababasa na input (pindutan, switch, potentiometer, atbp.) O output (LED, MOSFET, atbp.)
  • 1x konektor ng Dsub9

Hakbang 1: Ang Transceiver Circuit

Ang Transceiver Circuit
Ang Transceiver Circuit

Upang makipag-usap sa CAN bus, gagamitin namin ang MCP2551 CAN transceiver IC. Ang IC ay gumaganap bilang isang intermediate transmitter / receiver na pares upang ikonekta ang STM32 sa CAN bus. Ang circuit upang i-set up ang IC na ito ay medyo simple, ngunit may ilang mga bagay na dapat tandaan:

  • Ang CAN_RX (pin 4) at CAN_TX (pin 1) sa MCP2551 chip ay maaari lamang mapunta sa ilang mga pin sa STM32.

    • Sa STM32F1 Nucleo, ikonekta ang linya ng RX upang i-pin ang PB8 at ang linya ng TX upang i-pin ang PB9.
    • Sa STM32F1 blue pill, ikonekta ang RX upang i-pin ang PA11 at TX upang i-pin ang PA12.
    • Tandaan na ang mga takdang-aralin sa pin na ito ay may mga kahalili. Sumangguni sa mga manual ng microcontroller upang matukoy kung aling mga pin ang may kakayahang CAN_RD at CAN_TD
    • Kung gumagamit ng isang Arduino o isang board na walang built CAN na tagapagbalita, kakailanganin ang MCP2515 IC chip upang mai-convert ang iba pang mga protokol ng mensahe sa CAN.
  • Ang CANL pin ay dapat na konektado sa iba pang mga CANL pin ng iba pang mga node ng bus. Ang parehong napupunta para sa mga CANH pin.
  • Ang 120Ω risistor sa kabila ng mga CANH at CANL na pin ay kinakailangan lamang kung ang node ay isang terminal node. Nangangahulugan ito na nasa dulo ng mga parallel na mga kable ng koneksyon. Sa madaling salita, ang CAN bus ay dapat magkaroon lamang ng dalawang 120Ω resistors dito, at dapat na malayo sila sa bawat isa hangga't maaari.
  • Panghuli, ang 1kΩ risistor sa RS (pin 8) ay maaaring ipagpalit para sa isang risistor na 10kΩ upang makontrol ang tumataas / bumabagsak na oras ng CAN message bit. Sumangguni sa MCP2551 chip datasheet para sa higit pang mga detalye.

Hakbang 2: Pagbasa at Pagsulat sa CAN Bus

Pagbasa at Pagsulat sa CAN Bus
Pagbasa at Pagsulat sa CAN Bus

Ngayon na ang transceiver circuit ay konektado sa STM32, maaari nating simulan ang pagsusulat ng mga mensahe sa CAN bus. Ang itinuturo na gabay na ito ay hindi lalalim sa STM32 code. Gayunpaman, tiyaking suriin ang aming code para sa mga halimbawa dito. Ang paggamit ng STM32 bilang isang CAN node ay mangangailangan ng isang CAN header file. Sumulat kami ng aming sariling, na maaaring matagpuan sa aming github dito. Dito, magbibigay kami ng isang maikling pangkalahatang ideya ng proseso ng pagbasa / pagsulat.

Upang mabasa mula sa CAN bus, kailangan muna nating malaman ang ID ng mensahe ng CAN. Ang bawat mensahe ay dapat magkaroon ng isang natatanging ID, na may mas mababang mga ID na may mas mataas na priyoridad. Ang code snippet na ipinapakita dito ay naghihintay para sa isang CAN message na may ID 0x622. Sa aming system, kung ang unang piraso ng ika-6 na byte ay mataas, nais naming itakda ang pin na A10 mataas.

Kapag nagsusulat ng isang CAN message, dapat nating tandaan na ang mga CAN message ay multi-byte. Ang bawat nakasulat na mensahe ay dapat mayroong isang ID at haba. Sa pangalawang piraso ng code na ipinakita, nagsusulat kami ng data sa bawat byte, pagkatapos ay ipadala ang mensahe (Ang ID at mga parameter ng haba ay tinukoy nang mas maaga sa code).

Hakbang 3: Pagkonekta sa mga Node

Mga Koneksyon sa Node
Mga Koneksyon sa Node

Kapag kumokonekta sa maraming mga CAN node, maingat na pansin ay dapat bayaran sa haba ng mga cable. Ang dalawang pinakamalayong mga node ay maaaring hanggang sa 40m na hiwalay sa bawat isa. Ang mga gitnang node na kumokonekta sa bus ay dapat na nasa loob ng 50cm ng mga pangunahing linya ng bus.

Ang mga koneksyon ng CAN ay maaaring sundin ang pamantayan ng industriya ng paggamit ng isang Dsub9 na konektor na may linya ng CANL sa pin 2 at ang linya ng CANH sa pin7. Ang pagpipilian na linya ng CANGND ay maaaring pumunta sa pin 3.

Hakbang 4: Gawin ang PCB

Gawin ang PCB
Gawin ang PCB

Kapag ang pagruruta ng CAN signal sa isang PCB, tandaan na ang CAN ay isang kaugalian na signal, at sa gayon, ang mga patnubay sa pagruruta para sa CANH at CANL ay dapat sundin nang maingat.

Hakbang 5: Pagpapalawak ng Lupon

Pagpapalawak ng Lupon
Pagpapalawak ng Lupon

Magtapon ng ilang higit pang mga node, magdagdag ng ilang mga input / output, at ikonekta ang lahat ng kanilang mga CANH at CANL na pin. Tandaan na ang bawat STM32 o iba pang microcontroller ay nangangailangan ng sarili nitong MCP2551 chip; hindi sila maaaring ibahagi.

Sa nasabing iyon, subukang panatilihing mas maliit ang iyong mga PCB kaysa sa ipinakita rito

Hakbang 6: Mag-order ng Iyong Mga PCB Mula sa JLCPCB

Mag-order ng Iyong Mga PCB Mula sa JLCPCB
Mag-order ng Iyong Mga PCB Mula sa JLCPCB

Nag-aalok ang JLCPCB ng mabilis, mataas na kalidad na serbisyo sa mga makatwirang presyo. Kumuha ng 5 board, anumang kulay na may toneladang pagpapasadya, sa halagang $ 2 lamang! At kung ito ang iyong unang order, kumuha ng 10 board para sa parehong presyo!

I-upload lamang ang iyong mga gerbers at makakuha ng isang instant na quote! Isumite ang iyong order at ang iyong mga board ay susuriin para sa paggawa sa loob ng isang oras. Sa sandaling magbayad ka, maaari mong asahan ang iyong mga de-kalidad na board sa lalong madaling tatlong araw!

Tingnan ito dito

Hakbang 7: Kunin ang Iyong Mga Lupon

Kunin ang Iyong Mga Lupon!
Kunin ang Iyong Mga Lupon!

Malaking sigaw sa JLCPCB para sa pag-sponsor ng proyektong ito. Ang JLCPCB (ShenzhenJLC Electronics Co., Ltd.), ay ang pinakamalaking PCB prototype enterprise sa Tsina at isang tagagawa ng high-tech na nagdadalubhasa sa mabilis na prototype ng PCB at paggawa ng maliit na batch na PCB. Napakabait nila upang maibigay ang UBC Solar sa aming mga bagong PCB para sa aming solar car na pinapatakbo ng solar. Nag-order kami noong Biyernes at nakuha ang mga board noong Miyerkules!

Inirerekumendang: