İçindekiler:
- Gereçler
- Adım 1: Alıcı-Verici Devresi
- Adım 2: CAN Bus'a Okuma ve Yazma
- 3. Adım: Düğümleri Bağlama
- Adım 4: PCB'yi yapın
- Adım 5: Tahtayı Genişletme
- Adım 6: PCB'lerinizi JLCPCB'den Sipariş Edin
- Adım 7: Panolarınızı Alın
Video: STM32 CAN Arayüzü: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Denetleyici Alan Ağı veri yolu veya CAN veri yolu, yüksek hız yetenekleri, uzun menzilli güvenilirliği ve gürültü bağışıklığı sayesinde çok etkili bir iletişim protokolüdür. Bu nedenlerle otomotiv teknolojilerinde ve yüksek gürültülü ortamlarda CAN iletişimi standart hale gelmiştir. CAN veri yolundaki cihazlara düğüm denir. CAN veri yolundaki tüm düğümler paralel olarak bağlanır, yani her düğüm ağdaki diğer tüm düğümlere bağlıdır. Tek bir CAN veriyolu, mesaj iletim hızına bağlı olarak aynı anda 115'e kadar düğüme sahip olabilir, ancak çoğu uygulama için 32'ye kadar cihaz olması önerilir. Ayrıca, ilk ve son düğüm arasındaki uzunluğun 40 metreden daha az mesafede tutulması önerilir.
Bu adım adım öğretici, CAN veriyoluna okumak ve yazmak için devre ve basit C kodu dahil olmak üzere STM32 mikro denetleyiciyi kullanarak bir CAN düğümünün nasıl kurulacağını gösterecektir.
Gereçler
Her CAN düğümü için:
- 1x STM32 koparma tahtası (Nucleo, Blue Pill, diğerleri)
- 1x MCP2551 CAN alıcı-verici IC
- 1x 0.1µF kapasitör
- 1x 120Ω direnç
- 1x 1kΩ direnç
- 1+ okunabilir giriş (düğme, anahtar, potansiyometre vb.) veya çıkış (LED, MOSFET vb.)
- 1x Dsub9 konektörü
Adım 1: Alıcı-Verici Devresi
CAN veri yolu ile iletişim kurmak için MCP2551 CAN alıcı-verici IC'yi kullanacağız. IC, STM32'yi CAN veriyoluna bağlamak için bir ara verici/alıcı çifti görevi görür. Bu IC'yi kurma devresi oldukça basittir, ancak dikkat edilmesi gereken birkaç nokta vardır:
-
MCP2551 yongasındaki CAN_RX (pin 4) ve CAN_TX (pin 1), STM32'deki yalnızca belirli pinlere gidebilir.
- STM32F1 Nucleo üzerinde, RX hattını PB8 pinine ve TX hattını PB9 pinine bağlayın.
- STM32F1 mavi hapında, RX'i PA11 pinine ve TX'i PA12 pinine bağlayın.
- Bu pin atamalarının alternatifleri olduğunu unutmayın. Hangi pinlerin CAN_RD ve CAN_TD yapabildiğini belirlemek için mikrodenetleyici kılavuzlarına bakın.
- Bir Arduino veya yerleşik CAN iletişimcisi olmayan bir kart kullanıyorsanız, diğer mesaj protokollerini CAN'a dönüştürmek için MCP2515 IC yongası gerekecektir.
- CANL pini diğer bus düğümlerinin diğer CANL pinlerine bağlanmalıdır. Aynı şey CANH pinleri için de geçerlidir.
- CANH ve CANL pinleri boyunca 120Ω direnç, yalnızca düğüm bir terminal düğümüyse gereklidir. Bu, paralel bağlantı kablolamasının sonunda olduğu anlamına gelir. Başka bir deyişle, CAN veriyolunun içinde yalnızca iki adet 120Ω direnç bulunmalı ve bunlar birbirinden mümkün olduğunca uzak olmalıdır.
- Son olarak, RS (pin 8) üzerindeki 1kΩ direnç, CAN mesaj bitlerinin yükselme/düşme süresini kontrol etmek için 10kΩ dirençle değiştirilebilir. Daha fazla ayrıntı için MCP2551 çip veri sayfasına bakın.
Adım 2: CAN Bus'a Okuma ve Yazma
Artık alıcı-verici devresi STM32'ye bağlı olduğuna göre, CAN veriyoluna mesaj yazmaya başlayabiliriz. Bu talimat verilebilir kılavuz, STM32 kodunun derinliklerine inmeyecektir. Ancak, buradaki örnekler için kodumuzu kontrol ettiğinizden emin olun. STM32'yi bir CAN düğümü olarak kullanmak, bir CAN başlık dosyası gerektirecektir. Burada github'da bulabileceğiniz kendi yazımızı yazdık. Burada, okuma/yazma işlemine kısa bir genel bakış sunacağız.
CAN veriyolundan okumak için öncelikle CAN mesajının kimliğini bilmemiz gerekir. Her mesajın benzersiz bir kimliği olmalı ve daha düşük kimlikler daha yüksek önceliğe sahip olmalıdır. Burada gösterilen kod parçacığı, 0x622 kimliğine sahip bir CAN mesajı bekliyor. Sistemimizde, 6. baytın ilk biti yüksekse, o zaman A10 pinini yüksek ayarlamak istiyoruz.
Bir CAN mesajı yazarken, CAN mesajlarının çok baytlı olduğunu unutmamalıyız. Her yazılı mesajın bir kimliği ve uzunluğu olmalıdır. Gösterilen ikinci kod parçasında, her bir bayta veri yazıp mesajı gönderiyoruz (ID ve uzunluk parametreleri kodda daha önce tanımlanmıştır).
3. Adım: Düğümleri Bağlama
Birden fazla CAN düğümü bağlanırken kabloların uzunluğuna dikkat edilmelidir. En uzak iki düğüm birbirinden 40 m'ye kadar uzakta olabilir. Otobüse bağlanan orta düğümler, ana otobüs hatlarının 50 cm yakınında olmalıdır.
CAN bağlantıları, CANL hattı pin 2'de ve CANH hattı pin7'de olan bir Dsub9 konektörü kullanma endüstri standardını takip eder. CANGND satırı seçeneği pin 3'e gidebilir.
Adım 4: PCB'yi yapın
CAN sinyallerini bir PCB üzerinde yönlendirirken, CAN'ın bir diferansiyel sinyal olduğunu ve bu nedenle CANH ve CANL için yönlendirme yönergelerinin dikkatle takip edilmesi gerektiğini unutmayın.
Adım 5: Tahtayı Genişletme
Biraz daha düğüm atın, bazı girişler/çıkışlar ekleyin ve tüm CANH ve CANL pinlerini bağlayın. Her STM32 veya diğer mikro denetleyicinin kendi MCP2551 yongasını gerektirdiğini unutmayın; paylaşılamazlar.
Bununla birlikte, PCB'lerinizi burada gösterilenden daha küçük tutmaya çalışın.
Adım 6: PCB'lerinizi JLCPCB'den Sipariş Edin
JLCPCB, çok uygun fiyatlarla hızlı, kaliteli hizmet sunar. Tonlarca özelleştirmeye sahip herhangi bir renkten 5 panoya yalnızca 2 $ karşılığında sahip olun! Ve bu ilk siparişinizse, aynı fiyata 10 pano alın!
Sadece gerberlerinizi yükleyin ve anında fiyat teklifi alın! Siparişinizi verin ve panolarınız bir saat içinde üretim için gözden geçirilecektir. Ödeme yaptığınızda, yüksek kaliteli panolarınızı üç gün içinde bekleyebilirsiniz!
Buradan kontrol edin
Adım 7: Panolarınızı Alın
Bu projeye sponsor olduğu için JLCPCB'ye büyük bir alkış. JLCPCB (ShenzhenJLC Electronics Co., Ltd.), Çin'deki en büyük PCB prototip işletmesi ve hızlı PCB prototipleme ve küçük parti PCB üretiminde uzmanlaşmış bir yüksek teknoloji üreticisidir. UBC Solar'a güneş enerjili yarış arabamız için yeni PCB'lerimizi sağlama nezaketini gösterdiler. Cuma günü siparişimizi verdik ve panoları Çarşamba günü aldık!
Önerilen:
I²C Arayüzü ile Statik LCD Sürücü Nasıl Yapılır: 12 Adım
I²C Arayüzü ile Statik LCD Sürücü Nasıl Yapılır: Likit Kristal Ekranlar (LCD), iyi görsel özellikleri, düşük maliyeti ve düşük güç tüketimi nedeniyle ticari ve endüstriyel uygulamalarda yaygın olarak kullanılmaktadır. Bu özellikler, LCD'yi pille çalışan cihazlar için standart çözüm haline getirir,
ARDUINO İLE PASİF ZİL ARAYÜZÜ NASIL YAPILIR: 4 Adım
ARDUINO İLE PASİF ZİL ARAYÜZÜ NASIL YAPILIR: Arduino'da ses çıkarmak ilginç bir projedir, bu, projenize ve seçimlerinize bağlı olarak farklı modüller ve cihazlar kullanılarak yapılabilir. Bu projede, bir buzzer ile nasıl ses çıkarabileceğinizi inceleyeceğiz. Ho tarafından kullanılan buzzer
MIDI Adım Arayüzü (En Español versiyonu): 12 Adım
MIDI Adım Arayüzü (Español sürümü): Sürümün en İngilizce'si, en çok eğitilebilir ve platformaforma etkileşimli bir etkileşim içindedir. Ambos modos operados con los turtalar!Önceki
MIDI Adım Arayüzü: 12 Adım (Resimlerle)
MIDI Adım Arayüzü: İspanyolca versiyonu burada. Bu talimatta size, "Simon Says" ve bir MIDI arayüzü olarak. Her iki mod da ayaklarınızla oynanacak.ArkaplanProje doğdu çünkü
Ev yapımı Can sıkıcı bir şey (Can sıkıcı bir şey): 4 Adım (Resimlerle)
Ev yapımı Can sıkıcı bir şey (Annoy-a-tron): Thinkgeek.com annoy-a-tron adlı bir şey satıyor. Temel olarak, etkinleştirildiğinde çeşitli aralıklarla bip sesi çıkaran bir cihazdır. Bu talimat, düşünce geek'in sinir bozucu bir tronunun tam bir kopyasını oluşturmasa da, malzemeleriniz ve k