Мазмұны:
- Жабдықтар
- 1 -қадам: Трансиверлік схема
- 2 -қадам: CAN автобусына оқу және жазу
- 3 -қадам: түйіндерді қосу
- 4 -қадам: ПХД жасаңыз
- 5 -қадам: тақтаны кеңейту
- 6 -қадам: JLCPCB -ден ПХД -ге тапсырыс беріңіз
- 7 -қадам: тақталарыңызды алыңыз
Бейне: STM32 CAN интерфейсі: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Controller Area Network шинасы немесе CAN шинасы - бұл жоғары жылдамдықтағы мүмкіндіктердің, ұзақ қашықтықтағы сенімділіктің және шудың иммунитетінің арқасында өте тиімді байланыс протоколы. Осы себептерге байланысты CAN байланысы автомобиль технологиялары мен жоғары шу ортасында стандартқа айналды. CAN шинасындағы құрылғылар түйіндер деп аталады. CAN шинасындағы барлық түйіндер параллель қосылған, яғни әрбір түйін желідегі барлық басқа түйіндерге қосылған. Бір CAN шинасы хабарды жіберу жылдамдығына байланысты бірден 115 түйінге ие бола алады, бірақ көптеген қосымшаларда 32 құрылғыға дейін болу ұсынылады. Сондай -ақ, бірінші және соңғы түйін арасындағы ұзындықты бір -бірінен 40 метрден аз ұстау ұсынылады.
Бұл қадамдық нұсқаулық STM32 микроконтроллерінің көмегімен CAN түйінін қалай орнату керектігін көрсетеді, оның ішінде схема мен CAN шинасына оқуға және жазуға қарапайым С коды бар.
Жабдықтар
Әрбір CAN түйіні үшін:
- 1x STM32 сыну тақтасы (Nucleo, Blue Pill, басқалары)
- 1x MCP2551 CAN қабылдағыш IC
- 1x 0.1μF конденсатор
- 1x 120Ω резистор
- 1x 1 кОм резистор
- 1+ оқылатын кіріс (түйме, қосқыш, потенциометр және т.б.) немесе шығыс (LED, MOSFET және т.б.)
- 1x Dsub9 қосқышы
1 -қадам: Трансиверлік схема
CAN шинасымен байланысу үшін біз MCP2551 CAN IC трансиверін қолданамыз. IC STM32 -ді CAN шинасына қосу үшін аралық жіберуші/қабылдағыш жұбы ретінде әрекет етеді. Бұл IC орнату схемасы өте қарапайым, бірақ бірнеше нәрсені ескеру қажет:
-
MCP2551 чипіндегі CAN_RX (түйреуіш 4) пен CAN_TX (түйреуіш 1) тек STM32 -дегі кейбір түйреуіштерге кіре алады.
- STM32F1 Nucleo -да RX желісін PB8 істігіне, ал TX желісін PB9 істігіне қосыңыз.
- STM32F1 көк таблеткасында RX -ты PA11 түйрегіне, ал TX -ті PA12 түйреуішіне қосыңыз.
- Бұл пин тағайындаулардың балама нұсқалары бар екенін ескеріңіз. Қандай түйреуіштер CAN_RD және CAN_TD қабілетті екенін анықтау үшін микроконтроллердің нұсқауларын қараңыз.
- Егер Arduino немесе CAN коммуникаторы жоқ тақтаны қолдансаңыз, MCP2515 IC чипі басқа хабарлама протоколдарын CAN -ге түрлендіру үшін қажет болады.
- CANL түйреуіші басқа шина түйіндерінің басқа CANL түйреуіштеріне қосылуы керек. Бұл CANH түйреуіштеріне де қатысты.
- CANH және CANL түйреуіштеріндегі 120Ω резисторы түйін терминалды түйін болған жағдайда ғана қажет. Бұл параллель қосылу сымының соңында екенін білдіреді. Басқаша айтқанда, CAN автобусында тек 120Ω екі резистор болуы керек және олар бір -бірінен мүмкіндігінше алыс болуы керек.
- Ақырында, RS -тегі 1 кОм резисторды (түйреуіш 8) 10 кОм резисторға ауыстыруға болады, ол CAN хабарлама биттерінің көтерілу/түсу уақытын басқарады. Қосымша мәліметтер алу үшін MCP2551 чипінің деректер кестесін қараңыз.
2 -қадам: CAN автобусына оқу және жазу
Енді трансивер схемасы STM32 -ге қосылғандықтан, біз CAN шинасына хабарламалар жаза бастаймыз. Бұл нұсқаулық STM32 кодына терең енбейді. Дегенмен, мысалдар үшін біздің кодты тексеруді ұмытпаңыз. STM32 -ді CAN түйіні ретінде пайдалану үшін CAN тақырыптық файл қажет болады. Біз өзіміз жаздық, оны біздің гитубтан табуға болады. Мұнда біз оқу/жазу процесіне қысқаша шолу жасаймыз.
CAN автобусынан оқу үшін алдымен CAN хабарламасының идентификаторын білуіміз керек. Әрбір хабарламаның бірегей идентификаторы болуы керек, ал төменгі идентификаторлар басымдыққа ие. Мұнда көрсетілген код үзіндісі 0x622 идентификаторы бар CAN хабарламасын күтеді. Біздің жүйеде, егер 6 -байттың бірінші биті жоғары болса, онда біз A10 штырын жоғары орнатқымыз келеді.
CAN хабарламасын жазу кезінде біз CAN хабарламалары көп байтты екенін есте ұстауымыз керек. Әрбір жазбаша хабарламаның идентификаторы мен ұзындығы болуы керек. Көрсетілген кодтың екінші үзіндісінде біз деректерді әр байтқа жазамыз, содан кейін хабарды жібереміз (идентификатор мен ұзындық параметрлері кодта ертерек анықталған).
3 -қадам: түйіндерді қосу
Бірнеше CAN түйіндерін қосқанда, кабельдердің ұзындығына мұқият назар аудару қажет. Ең алыс екі түйін бір -бірінен 40 м қашықтықта болуы мүмкін. Автобусқа қосылатын ортаңғы тораптар негізгі автобус желілерінен 50 см қашықтықта болуы керек.
CAN байланыстары DSub9 коннекторын CINL сызығы 2, ал PIN7 CANH желісі бар салалық стандартқа сәйкес келеді. CANGND желісінің опциясы 3 -ші пинге өтуі мүмкін.
4 -қадам: ПХД жасаңыз
ПХД -да CAN сигналдарын бағыттаған кезде, CAN дифференциалды сигнал екенін есте сақтаңыз, сондықтан CANH мен CANL үшін бағыттау нұсқауларын мұқият орындау қажет.
5 -қадам: тақтаны кеңейту
Басқа түйіндерді бірге тастаңыз, кейбір кірістерді/шығуларды қосыңыз және олардың барлық CANH және CANL түйреуіштерін қосыңыз. Әрбір STM32 немесе басқа микроконтроллерге өзінің MCP2551 чипі қажет екенін ескеріңіз; оларды бөлісуге болмайды.
Осыған сәйкес, ПХД -ларды мұнда көрсетілгеннен кішірек ұстауға тырысыңыз
6 -қадам: JLCPCB -ден ПХД -ге тапсырыс беріңіз
JLCPCB өте қолайлы бағамен жылдам, жоғары сапалы қызмет көрсетеді. Барлығы 2 долларға 5 тонна тақтаны алыңыз, тонналандырылған тонмен! Ал егер бұл сіздің бірінші тапсырысыңыз болса, сол бағамен 10 тақта алыңыз!
Өзіңіздің қонақтарыңызды жүктеп алыңыз және тез баға алыңыз! Тапсырысты жіберіңіз, ал сіздің тақталар бір сағат ішінде өндіріс үшін қаралады. Төлегеннен кейін сіз жоғары сапалы тақталарды үш күннен кейін күте аласыз!
Мұнда тексеріңіз
7 -қадам: тақталарыңызды алыңыз
Бұл жобаға демеушілік үшін JLCPCB -ге үлкен айқай. JLCPCB (ShenzhenJLC Electronics Co., Ltd.)-бұл Қытайдағы ПХД прототипінің ең ірі кәсіпорны және ПХД прототипін тез құрастыруға және шағын партиялы ПХД өндіруге маманданған жоғары технологиялық өндіруші. Олар UBC Solar-ға біздің күн энергиясынан жарысатын автокөлігіміздің жаңа ПХД-ларын ұсынуға мейірімді болды. Біз жұмаға тапсырыс бердік, ал тақталарды сәрсенбіде алдық!
Ұсынылған:
Arduino ғарыш кемесінің интерфейсі: 3 қадам
Arduino ғарыш кемесінің интерфейсі: Сәлем, нұсқаулық қоғамдастығы, мен бұл жолы Arduino Uno -мен аяқталатын ең қарапайым жобалардың бірін жасадым: ғарыш кемесінің схемасы. Ол осылай аталады, себебі бұл ғылыми фантастикалық телешоулар мен фильмдерде қолданылатын бағдарламалау мен схеманың түрі
8051 DS1307 RTC интерфейсі және уақыт белгісін СКД -де көрсету: 5 қадам
DS1307 RTC көмегімен 8051 интерфейсі және Уақыт белгісін СКД -де көрсету: Бұл оқулықта біз 8051 микроконтроллерін ds1307 RTC -мен қалай байланыстыруға болатынын түсіндірдік. Мұнда біз протеус симуляциясын қолдана отырып, LCD -де RTC уақытын көрсетеміз
Arduino көмегімен TM1637 дисплей модулінің интерфейсі: 3 қадам
TM1637 дисплей модулі Arduino көмегімен: Ас-Салам-О-Алейкум! Бұл нұсқаулық TM1637 дисплей модулін Arduino -мен байланыстыру туралы. Бұл төрт цифрлық жеті сегментті дисплей модулі. Түрлі түсті болады, менікі - қызыл түс
GPS модулі бар Arduino Mega интерфейсі (Neo-6M): 8 қадам
GPS модулімен Arduino Mega интерфейсі (Neo-6M): Бұл жобада мен GPS модулін (Neo-6M) Arduino Mega-мен қалай байланыстыру керектігін көрсеттім. TinyGPS кітапханасы бойлық пен ендік деректерін көрсету үшін пайдаланылады, ал TinyGPS ++ ендік, бойлық, биіктік, жылдамдық және спутник санын көрсету үшін қолданылады
I2C сенсорлық интерфейсін бастау? - MMA8451 интерфейсі ESP32s көмегімен: 8 қадам
I2C сенсорлық интерфейсін бастау? - EMA32 көмегімен MMA8451 интерфейсі: Бұл оқулықта сіз контроллермен (Arduino, ESP32, ESP8266, ESP12 NodeMCU) жұмыс істейтін I2C құрылғысын (акселерометр) қалай қосуға, қосуға және алуға болатынын білесіз