Mundarija:

STM32 CAN interfeysi: 7 qadam
STM32 CAN interfeysi: 7 qadam

Video: STM32 CAN interfeysi: 7 qadam

Video: STM32 CAN interfeysi: 7 qadam
Video: BTT SKR2 — Основы SKR 2 (Ред. B) 2024, Iyul
Anonim
STM32 CAN interfeysi
STM32 CAN interfeysi

Controller Area Network bus yoki CAN bus - bu yuqori tezlik, uzoq masofali ishonchlilik va shovqinlarga qarshi immunitet tufayli juda samarali aloqa protokoli. Shu sabablarga ko'ra, CAN aloqasi avtomobil texnologiyalari va yuqori shovqinli muhitda standartga aylandi. CAN avtobusidagi qurilmalar tugunlar deb ataladi. CAN avtobusidagi barcha tugunlar parallel ulangan, ya'ni har bir tugun tarmoqdagi boshqa tugunlarga ulangan. Bitta CAN avtobusida xabarlarni uzatish tezligiga qarab bir vaqtning o'zida 115 ta tugun bo'lishi mumkin, lekin ko'pchilik ilovalar uchun 32 ta qurilmaga ega bo'lish tavsiya etiladi. Shuningdek, birinchi va oxirgi tugun orasidagi masofani bir -biridan 40 metrdan kamroq masofada saqlash tavsiya etiladi.

Bosqichma-bosqich ko'rsatma sizga STM32 mikrokontrolleridan foydalanib, CAN tugunini qanday o'rnatishni, shu jumladan CAN avtobusini o'qish va yozish uchun sxemani va oddiy C kodini ko'rsatadi.

Ta'minotlar

Har bir CAN tuguni uchun:

  • 1x STM32 taxtali (Nucleo, Blue Pill va boshqalar)
  • 1x MCP2551 CAN translyatori IC
  • 1x 0,1 mF kondansatör
  • 1x 120Ω qarshilik
  • 1x 1kΩ qarshilik
  • 1+ o'qiladigan kirish (tugma, kalit, potansiometr va boshqalar) yoki chiqish (LED, MOSFET va boshqalar)
  • 1x Dsub9 ulagichi

1 -qadam: O'tkazgich davri

O'tkazgich davri
O'tkazgich davri

CAN avtobusi bilan aloqa qilish uchun biz MCP2551 CAN transsiver IC dan foydalanamiz. IC STM32ni CAN avtobusiga ulash uchun oraliq uzatuvchi/qabul qiluvchi jufti vazifasini bajaradi. Ushbu ICni o'rnatish sxemasi juda oddiy, lekin e'tiborga olish kerak bo'lgan bir nechta narsa bor:

  • MCP2551 chipidagi CAN_RX (4 -pin) va CAN_TX (1 -pin) faqat STM32 -dagi ma'lum pinlarga o'tishi mumkin.

    • STM32F1 Nucleo -da, RX liniyasini PB8 piniga va TX liniyasini PB9 piniga ulang.
    • STM32F1 ko'k tabletkasida RXni PA11 va TXni PA12 piniga ulang.
    • E'tibor bering, bu pin topshiriqlarining muqobillari bor. Qaysi pinlar CAN_RD va CAN_TDga qodirligini aniqlash uchun mikrokontroller qo'llanmalariga qarang.
    • Agar Arduino yoki CAN kommunikatori bo'lmagan taxtadan foydalansangiz, MCP2515 IC chipi boshqa xabar protokollarini JONga aylantirish uchun kerak bo'ladi.
  • CANL pin boshqa avtobus tugunlarining boshqa CANL pinlariga ulangan bo'lishi kerak. Xuddi shu narsa CANH pinlari uchun ham amal qiladi.
  • CANH va CANL pinlaridagi 120Ω qarshilik faqat tugun terminal tugun bo'lsa kerak. Bu shuni anglatadiki, u parallel ulanish simlari oxirida. Boshqacha aytganda, CAN avtobusida faqat ikkita 120Ω qarshilik bo'lishi kerak va ular bir -biridan iloji boricha uzoqroq bo'lishi kerak.
  • Nihoyat, RSdagi 1kΩ rezistorni (pin 8) CAN xabar bitlarining ko'tarilish/tushish vaqtini boshqarish uchun 10kΩ qarshilikka almashtirish mumkin. Qo'shimcha ma'lumot olish uchun MCP2551 chip ma'lumotlar jadvaliga qarang.

2 -qadam: CAN avtobusiga o'qish va yozish

CAN avtobusiga o'qish va yozish
CAN avtobusiga o'qish va yozish

Endi qabul qilgich sxemasi STM32 ga ulangan bo'lsa, biz CAN avtobusiga xabar yozishni boshlashimiz mumkin. Bu ko'rsatma qo'llanma STM32 kodiga chuqur kirmaydi. Biroq, bu erda misollar uchun bizning kodimizni tekshirib ko'ring. STM32 -ni CAN tuguni sifatida ishlatish uchun CAN sarlavhali fayl kerak bo'ladi. Biz o'zimiz yozdik, uni bizning github -da topishingiz mumkin. Bu erda biz o'qish/yozish jarayoni haqida qisqacha ma'lumot beramiz.

CAN avtobusidan o'qish uchun avval CAN xabarining identifikatorini bilishimiz kerak. Har bir xabar o'ziga xos identifikatorga ega bo'lishi kerak, past identifikatorlar esa ustuvorlikka ega. Bu erda ko'rsatilgan kod parchasi 0x622 identifikatorli CAN xabarini kutmoqda. Bizning tizimimizda, agar 6 -baytning birinchi biti baland bo'lsa, biz A10 pinini baland qilib o'rnatmoqchimiz.

CAN xabarini yozishda biz CAN xabarlari ko'p baytli ekanligini unutmasligimiz kerak. Har bir yozma xabarning identifikatori va uzunligi bo'lishi kerak. Ko'rsatilgan kodning ikkinchi bo'lagida biz har bir baytga ma'lumotlarni yozamiz, keyin xabarni yuboramiz (ID va uzunlik parametrlari kodning boshida aniqlangan).

3 -qadam: tugunlarni ulash

Tugunlarni ulash
Tugunlarni ulash

Bir nechta CAN tugunlarini ulashda kabellar uzunligiga diqqat bilan qarash kerak. Eng uzoqdagi ikkita tugun bir -biridan 40 m masofada joylashgan bo'lishi mumkin. Avtobusga ulanadigan o'rta tugunlar asosiy avtobus liniyalaridan 50 sm masofada bo'lishi kerak.

JON ulanishlari 2 -pinli CANL chizig'i va 7 -pinli CANH liniyasi bo'lgan Dsub9 ulagichidan foydalanish sanoat standartiga mos keladi. CANGND liniyasi 3 -pin bilan o'tishi mumkin.

4 -qadam: tenglikni tayyorlang

PCB tayyorlang
PCB tayyorlang

PCBda CAN signallarini yo'naltirishda, CAN - bu differentsial signal ekanligini unutmang, shuning uchun CANH va CANL uchun yo'riqnomalarga diqqat bilan amal qilish kerak.

5 -qadam: Kengashni kengaytirish

Kengashni kengaytirish
Kengashni kengaytirish

Yana bir nechta tugunlarni birlashtiring, bir nechta kirish/chiqishlarni qo'shing va ularning barcha CANH va CANL pinlarini ulang. E'tibor bering, har bir STM32 yoki boshqa mikrokontroller o'z MCP2551 chipini talab qiladi; ularni baham ko'rish mumkin emas.

Shu bilan birga, sizning PCBlaringizni bu erda ko'rsatilganidan kichikroq saqlashga harakat qiling

6 -qadam: Kompyuteringizni JLCPCB -dan buyurtma qiling

PCB -laringizni JLCPCB -dan buyurtma qiling
PCB -laringizni JLCPCB -dan buyurtma qiling

JLCPCB tez va sifatli xizmatni juda qulay narxlarda taklif qiladi. Har xil rangdagi 5 ta taxtani, atigi 2 dollar evaziga oling! Va agar bu sizning birinchi buyurtmangiz bo'lsa, xuddi shu narxga 10 ta taxtani oling!

Faqat gerberlarni yuklang va darhol taklif oling! Buyurtmani yuboring va sizning taxtalaringiz bir soat ichida ishlab chiqarish uchun ko'rib chiqiladi. To'lovni amalga oshirgandan so'ng, siz yuqori sifatli taxtalarni uch kun ichida kutishingiz mumkin!

Bu erda tekshiring

7 -qadam: taxtangizni oling

Kengashlaringizni oling!
Kengashlaringizni oling!

JLCPCBga ushbu loyihaga homiylik qilgani uchun katta baqirish. JLCPCB (ShenzhenJLC Electronics Co., Ltd.)-bu Xitoyning eng yirik PCB prototipi korxonasi va PCB prototipini tez ishlab chiqarish va kichik partiyali PCB ishlab chiqarishga ixtisoslashgan yuqori texnologiyali ishlab chiqaruvchi. Ular UBC Solar kompaniyasiga quyosh energiyasi bilan ishlaydigan poyga mashinamiz uchun yangi PCB-larni taqdim etish imkoniga ega bo'lishdi. Biz buyurtmani juma kuni joylashtirdik va taxtalarni chorshanba kuni oldik!

Tavsiya: