Mundarija:
- Ta'minotlar
- 1 -qadam: O'tkazgich davri
- 2 -qadam: CAN avtobusiga o'qish va yozish
- 3 -qadam: tugunlarni ulash
- 4 -qadam: tenglikni tayyorlang
- 5 -qadam: Kengashni kengaytirish
- 6 -qadam: Kompyuteringizni JLCPCB -dan buyurtma qiling
- 7 -qadam: taxtangizni oling
Video: STM32 CAN interfeysi: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:25
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
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
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
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
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
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
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
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:
I²C interfeysi yordamida statik LCD drayverini qanday qilish kerak: 12 qadam
I²C interfeysi yordamida statik LCD drayverini qanday qilish kerak: Suyuq kristalli displeylar (LCD) yaxshi ko'rish xususiyatlari, arzonligi va kam quvvat sarfi tufayli tijorat va sanoat maqsadlarida keng qo'llaniladi. Bu xususiyatlar LCD-ni batareyali qurilmalar uchun standart echimga aylantiradi,
Arduino kosmik kemasi interfeysi: 3 qadam
Arduino kosmik kemasi interfeysi: Salom Instructable hamjamiyati, men bu safar Arduino Uno: kosmik kema sxemasi bilan bajariladigan eng oddiy loyihalardan birini tayyorladim. U shunday nomlangan, chunki bu ilmiy fantastika teledasturlari va filmlarida qo'llaniladigan dasturlash va sxemalar turi
PhidgetSBC3 uchun to'liq Python veb -interfeysi to'plami: 6 qadam
PhidgetSBC3 uchun to'liq Python veb -interfeysi to'plami: PhidgetSBC3 taxtasi - bu Debain Linux -da ishlaydigan to'liq ishlaydigan yagona taxtali kompyuter. Bu malina Pi ga o'xshaydi, lekin 8 ta analog sensorli kirish va 8 ta raqamli kirish va 8 ta raqamli chiqishga ega. U veb -server va veb -ilovasi bilan birga yuboriladi
MIDI qadam interfeysi (versiya En Español): 12 qadam
MIDI qadam interfeysi (versiya): O'rnatilgan versiyalar, shuningdek, "Simon Says", degan ma'noni anglatadi, MIDI -ni o'rnatishdan keyin, siz bir vaqtning o'zida o'zaro aloqani o'rnatishingiz mumkin. Amos modos operasos con los pies! Antecede
MIDI qadam interfeysi: 12 qadam (rasmlar bilan)
MIDI qadam interfeysi: Ispancha versiya bu erda, biz sizga "Simon aytadi" ni o'ynash uchun ishlatilishi mumkin bo'lgan yorug'lik va ovozli interfeysni qanday qilishni ko'rsatamiz. va MIDI interfeysi sifatida. Ikkala rejim ham sizning oyoqlaringiz bilan o'ynaladi. Orqa fon Loyiha tug'ilgan, chunki