Araçlarda temel olarak 3 temel BUS (veri yolu) bulunmakta. Comfort BUS (VAN), Safety BUS (VAN), Engine BUS (ECU – CAN – OBD2). İlgili terminolojiler hakkında wikipedia’da bir çok kaynağa ulaşılabilir.

Engine BUS, diğer adıyla ECU, CAN fiziksel alt yapısı ve OBD2 üst protokolüyle haberleşiyor. Bu BUS’a bağlanıp aracın motoruyla ilintili hız, devir, motor sıcaklığı, vb. verilere ulaşabiliyoruz. ECU ve OBD2 ile ilgili ayrı bir makale yazacağım.

Safety BUS, güvenlik aksamlarının haberleştiği veri yolu, ABS, Airbag, aktif gergili emniyet kemerleri vb. bu fiziksel haberleşme yolu üzerinden haberleşiyor.

Comfort BUS, araçta medya cihazlarının, cam kontrol anahtarlarının ve motorlarının, farlar, ve bir çok diğer komponentlerin birbiriyle haberleştiği haberleşme hattı. BMW’de I-BUS olan standart, fransız araçlarında VAN olarak adlandırılmış ve yazımın alt kısmında daha ayrıntılı anlatılıyor. Proje daha ilerlemiş sayılmaz, blogu tutmamın diğer bir amacı da çalışmalarımı kontrollü bir şekilde izleyebilmek.

Temel fiziksel yapı CAN gibi çalışıyor. Enhanced Manchester Coding kullanılıyor (4B5B).

Citroen C4 araçta ilgili test ön ekran sökülerek yapıldı.

Fiziksel temel bağlantı resmi yukarıdaki gibi. Differential pair data bağlantısını osiloskop aracılığıyla gözlemledim.

Sinyal periyodu 10uS. NRZ sinyalleşmeden yola çıkarak sinyalin 100kbit/s olduğunu anlıyoruz.
Verinin 4B5B kodlama tablosu;
Name 4b 5b Description
0 0000 11110 hex data 0
1 0001 01001 hex data 1
2 0010 10100 hex data 2
3 0011 10101 hex data 3
4 0100 01010 hex data 4
5 0101 01011 hex data 5
6 0110 01110 hex data 6
7 0111 01111 hex data 7
8 1000 10010 hex data 8
9 1001 10011 hex data 9
A 1010 10110 hex data A
B 1011 10111 hex data B
C 1100 11010 hex data C
D 1101 11011 hex data D
E 1110 11100 hex data E
F 1111 11101 hex data F
Q -NONE- 00000 Quiet (signal lost)
I -NONE- 11111 Idle
J -NONE- 11000 Start #1
K -NONE- 10001 Start #2
T -NONE- 01101 End
R -NONE- 00111 Reset
S -NONE- 11001 Set
H -NONE- 00100 Halt

Her 5 bitlik dizi fiziksel hattan aktarılır ama veri işlemesi 4 bitlik karşılığı üzerinden yapılır.

4B5B çevirim tablosuna Wikipedia’dan ulaştım. (http://en.wikipedia.org/wiki/4B5B)
VAN arayüzüyle mikrodenetleyiciyi haberleştirebilmek için CAN trans-recev entegre kullandım (MCP2551 – Microchip).
CAN çıkışında 1 adet PIC18f4620 kullandım. Data akışını test etmek için basit bir kod yazdım. Bu kod sadece “1” gördüğünde ledi yakıp “0” gördüğünde ledi söndürmeye yarıyor.
DEFINE OSC 10

TRISD=0
TRISB=000011

DONGU:

IF PORTB.0=1 THEN
HIGH PORTD.4
ELSE
LOW PORTD.4
ENDIF

IF PORTB.1=1 THEN
HIGH PORTD.6
ELSE
LOW PORTD.6
ENDIF

GOTO DONGU
Devrenin çok basit bir bağlantı şeması var. Zaten bu bir test devresi. Amacım basit komponentlerle dataya ulaşıp ulaşamadığımı görmek. Elimde bir protocol analyzer cihazım olsaydı kesinlikle bu test devresiyle zaman kaybetmek durumunda kalmayacaktım. (iki tane uzun kablodan kırmızı olanı CAN H, diğeri CAN L portu, direk osiloskopa bağladığımız pinlere bağlı). Ayrıca ilk seferinde portları ters bağladığımda otomobilimde tüm ekran verileri 888 durumuna geldi. Kalıcı bir hasara sebep olmadı ama tahminimce ters bağlantı sırasında devrem dominant duruma gelip tüm Confort Bus client’lara mesaj gönderdi, araç hız ekranı, radyo vs.


VAN’dan gelen bilgiyi bilgisayara aktarmak için yukarıdaki bağlantı şemasını kullanıyorum.Bundan sonraki aşamada gelen bilgileri bir byte array’e alıp, alınan veriyi direk bilgisayara aktarmak olacak. Burada sıkıntı gelen bilgi 100kbit/s görünse de senkronizasyonda sıkıntı yaşayabilirim. Birkaç denemeden sonra durum ortaya çıkacak.