CAN Bus ile ilgili sorular?

Başlatan musti463, 16 Ekim 2013, 22:41:58

musti463

Merhaba,aşağıda Receive Buffer Block Diyagarmı görülmekte.Sorum şu mikrodenetleyicimde yalnızca 1 tane CANRX pini varken neden iki tane RXB0 ve RXB1 adında ayrı ayrı buffer var? amaç ne? Diğer sorum ise neden her buffer bloğunda birden fazla filtre var?(RXF0,RXF1 ve RXF2,RXF3,RXF4,RXF5)

[IMG]http://i43.tinypic.com/qsp755.jpg[/img]
Mustafa Emir SADE

musti463

Mustafa Emir SADE

tesladream

Bende Can bus çalışıyorum hocam bu aralar, ilk başta benim de kafama takılmıştı ama STM32F4 de iki tane receive/transmitt FIFO var.Bu buffer lar birden fazla node dan veri alacağın veya göndereceğin zaman sana kolaylık sağlıyor sanırım.Ben tek FIFO ile yapıyorum çalışıyor gibi.Bende RTR yapmaya çalışıyorum ama tam hakim olamadım konuya CAN-BUS konusunda deneyimli arkadaşlar yardımcı olursa sevinirim.

kurumahmut

Literatur arastirmasi yapmadan bildiklerimle tahmin yapmak istiyorum. Canbus mesaj id ile calisan bir protokol ve ayni anda hatta sadece biri gonderme yapabilir. Her node her paketi incelemek zorunda ve kabul edebilecegi paketler kendisine daha once programlandigina gore bir cok filtrenin olmasni degisik id formatlari.i donanimsal olarak daha hizli yakalamasini saglar diye dusunuyorum

ayhan_eee

Doğru bir açıklama gelmiş CANBus hakkında.Kullanıcı ID yerine mesaj ID olması her cihazın her mesajı alma zorunluluğunu getirir.programsal olarak da mesajları kim alma yetkili ise o değerlendirir mesajı.

musti463

@kurumahmut dediğiniz mantıklı.O zaman bu filtreleme işi zaman alıyor,ve maskelemeden daha fazla zaman aldığınıda diyagrama bakarak çıkarabiliriz.Peki yazılımda neden maskeleme ve filtre ayarlarıyla uğraşıyoruz? Hangi ID'leri istiyorsak sadece onları girsek programa,program arka tarafta maskeleme ve filtre bitlerinin ne olacağını kendisi belirlese.Bu işi yapan derleyiciden başka bir program vardır diye düşünüyorum
Mustafa Emir SADE

salihonur

Alıntı yapılan: musti463 - 18 Ekim 2013, 13:10:56
@kurumahmut dediğiniz mantıklı.O zaman bu filtreleme işi zaman alıyor,ve maskelemeden daha fazla zaman aldığınıda diyagrama bakarak çıkarabiliriz.Peki yazılımda neden maskeleme ve filtre ayarlarıyla uğraşıyoruz? Hangi ID'leri istiyorsak sadece onları girsek programa,program arka tarafta maskeleme ve filtre bitlerinin ne olacağını kendisi belirlese.Bu işi yapan derleyiciden başka bir program vardır diye düşünüyorum


Donanımsal bir CAN kullanıyorsanız mesaj ID otomatik olarak atanacaktır. Hatta CAN-BUS frame yapısı gönderdiğiniz 8 bayt (zaten tek seferde max 8 bayt gönderebilirsiniz) ile entegre edilir. CRC ve hattı denetleme donanımsal yapılır. Siz 8 bayt ile ne yapmak isterseniz onu yaparsınız (gönderme/alma/döngüler/işlemler v.s).

CAN, dominant logic 0 özelliği ile çalışır. Bu, tüm cihazların aynı anda konuşmaya başlayabileceği ancak mesajlarına göre önceliğe atanabilecekleri anlamına gelir. Diyelim ki;

Cihaz-1: 10110100111
Cihaz-2: 10111011100

göndermek istesin. Her ikisi de aynı anda veri göndermeye başlar. 5. bite kadar ikisi de sorunsuz ilerler, 5. bitte Cihaz-1'in değeri logic 0 olduğundan öncelik Cihaz-1'e geçer ve diğeri, hat boşalana kadar susar. Yani her ikisi de veri gönderirken dahi gönderdiği mesaj ile hattaki mesajı karşılaştırır.

musti463

@salihonur göndereceğim mesajın ID'sini biz belirlemiyoruz donanımın kendisi mi yapıyor diyosunuz?
Mustafa Emir SADE


memo333

Alıntı yapılan: musti463 - 18 Ekim 2013, 15:23:47
@salihonur göndereceğim mesajın ID'sini biz belirlemiyoruz donanımın kendisi mi yapıyor diyosunuz?

kendiniz yazıyorsunuz IDyi ilgili registerlara...
Gömülü Linux Notları --> http://linuxedu.xyz/

Yaşlı kurt

Sensör yada hatta bağlanacak eleman imalatcı tarafından ID atanıyor