İçindekiler:

STM32 CAN Arayüzü: 7 Adım
STM32 CAN Arayüzü: 7 Adım

Video: STM32 CAN Arayüzü: 7 Adım

Video: STM32 CAN Arayüzü: 7 Adım
Video: STM32 настройка CAN 2024, Temmuz
Anonim
STM32 CAN Arayüzü
STM32 CAN Arayüzü

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

Alıcı-Verici Devresi
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

CAN Bus'a Okuma ve Yazma
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

Düğümleri Bağlama
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

PCB'yi yapın
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

Kurulu Genişletme
Kurulu 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

PCB'lerinizi JLCPCB'den Sipariş Edin
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

Panolarınızı Alın!
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: