CAN bus nasıl çalışır? Arbitration, hata yönetimi ve CAN FD farkını açıklayın.
Cevap
CAN (Controller Area Network), otomotiv ve endüstride kullanılan, diferansiyel (CAN_H / CAN_L), multi-master, mesaj tabanlı bir bus'tır. Mesajlar cihaz adresine değil identifier'a göre gönderilir; her node ilgilendiği ID'leri donanım filtreleriyle seçer. Bus'ın iki ucunda 120 Ω sonlandırma bulunur (ölçüldüğünde toplam ~60 Ω).
Dominant ve recessive
- Dominant (0): CAN_H ≈ 3.5 V, CAN_L ≈ 1.5 V.
- Recessive (1): İki hat ≈ 2.5 V.
Bir node dominant gönderirse bus dominant olur (wired-AND).
Bitwise arbitration
Tüm node'lar aynı anda göndermeye başlayabilir. Her biri gönderdiği biti bus'tan geri okur:
- Recessive (1) gönderip dominant (0) okuyan node kaybettiğini anlar ve alıcıya döner.
- Kazanan node mesajını hiçbir bozulma olmadan göndermeye devam eder (non-destructive arbitration).
Sonuç: ID değeri en düşük olan mesaj en yüksek önceliğe sahiptir. Örnek: 0x100 ile 0x0F0 yarışırsa 0x0F0 kazanır.
Frame yapısı (CAN 2.0)
SOF | ID (11 veya 29 bit) | RTR | IDE | r0 | DLC | Data (0-8 byte) | CRC | ACK | EOF- Standart (2.0A) 11 bit, extended (2.0B) 29 bit ID.
- Alıcılardan en az biri ACK slotunda dominant bit yazar.
- Aynı seviyeden 5 bitten sonra bit stuffing ile ters bit eklenir; senkronizasyon korunur.
Hata yönetimi
Beş hata tespit mekanizması: bit, stuff, CRC, form ve ACK hatası. Her node TEC/REC (transmit/receive error counter) tutar:
| Durum | Koşul | Davranış |
|---|---|---|
| Error Active | Sayaçlar < 128 | Aktif error frame gönderir |
| Error Passive | TEC veya REC ≥ 128 | Pasif error frame, gönderim öncesi ek bekleme |
| Bus Off | TEC ≥ 256 | Bus'tan tamamen çekilir |
Bu mekanizma, arızalı bir node'un bütün bus'ı kilitlemesini engeller.
CAN FD farkı
| Özellik | Klasik CAN | CAN FD |
|---|---|---|
| Data uzunluğu | 8 byte | 64 byte |
| Hız | 1 Mbps'a kadar | Arbitration 1 Mbps, data fazı 5-8 Mbps |
| CRC | 15 bit | 17/21 bit |
Data fazında bit hızının artırılması BRS biti ile yapılır. Arbitration hızı aynı kalır; çünkü arbitration için tüm node'ların bit süresi içinde aynı değeri görmesi gerekir ve bu, propagation delay nedeniyle bus uzunluğunu sınırlar (1 Mbps için ~40 m).
Üst katman protokolleri: CANopen, J1939 (ağır vasıtalar), ISO-TP / UDS (otomotiv teşhis).
İlgili Haberleşme Protokolleri soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.