MCP2515 ile Arduino haberleşmesi

salimcan76

Üye
Katılım
17 Ocak 2022
Mesajlar
2
Puanları
1
Yaş
48
Arkadaşlar , MCP2515 Can - SPI haberleşme modülü kullanarak aracın Can Bus bilgilerini okumaya çalışıyorum. Fakat bir yerde takıldım. Çünkü bu modülde 8 MHz kristal var. Fakat internette konu ile yaptığım aramalarda Arduino kodları standart olarak 16 MHz 'ye göre yazılmış. Piyasadaki modüller ise standart 8 MHz. Bu durumda hazır Arduino kodlarını 8 MHz için nasıl uygun hale getirebilirim? Bununla ilgili Can Bus dosyalarının olduğu bir yerin linkini yazıyorum. Amacım oradaki kütüphane dosyalarını görmeniz içindir. Link yazarak hata yapıyorsam kusuruma bakmayın.
https://github.com/sparkfun/SparkFu...9c10/examples/CAN_Read_Demo/CAN_Read_Demo.ino
 
Abicim modül üzerindeki kristalin kaç mhz olduğundan sanane o kristal modülün üzerindeki entegre için lazım. Arduinonun üzerindeki kristal arduino için lazım. İkisi birbirinden bağımsız şeyler. Sen sadece CAN bus hzını ayarlamalısın gerisini boşver. Aleti kurup denedin mi?
 
Evet, Arduinoyu kurup denedim, çalışmıyor. Yabancı bir sitede Arduino'nun Mcp2515 ile haberleşebilmesi için Mcp kütüphanesin 16 MHz kristali olan modül için yazıldığı, 8 MHz kristali olan modüller için Mcp kütüphanesinin 8 MHz için ayarlanması gerektiği yazıyor. https://forum.arduino.cc/t/how-to-s...brary-file-based-on-crystal-oscillator/628822
Ancak nasıl yapılacağını anlamadım. İlgili linki ekliyorum.
 
Merhaba. Ben aranıza bugün katıldım. Arduino öğrenmeye çalışıyorum,bi skeç hazırladım mcp2515 ile veri göndermeye çalışıyorum derleme hatası veriyor ,yardım edebilcek varsa şimdiden tşk.
>(yutubta video ya bakarak yazdım bunları )

#include <SPI.h>
#include <can.h>
#include <digitalWriteFast.h>
#include <mcp2515.h>

struct can_frame GidenPaket1;
struct can_frame GidenPaket2;

MCP2515 mcp2515(10); // cs pin

void setup() {
GidenPaket1.can_id = 0x456;
GidenPaket1.can_dlc = 8;
GidenPaket1.data[0] = 0x87;
GidenPaket1.data[1] = 0x00;
GidenPaket1.data[2] = 0x00;
GidenPaket1.data[3] = 0x00;
GidenPaket1.data[4] = 0x00;
GidenPaket1.data[5] = 0x00;
GidenPaket1.data[6] = 0x00;
GidenPaket1.data[7] = 0x00;

GidenPaket2.can_id = 0x457;
GidenPaket2.can_dlc = 8;
GidenPaket2.data[0] = 0xfe;
GidenPaket2.data[1] = 0x16;
GidenPaket2.data[2] = 0x3F;
GidenPaket2.data[3] = 0xFF;
GidenPaket2.data[4] = 0xFF;
GidenPaket2.data[5] = 0xFF;
GidenPaket2.data[6] = 0xFF;
GidenPaket2.data[7] = 0xFF;

mcp2515.reset();
mcp2515.setBitrate(CAN_83K3BPS, MCP_8MHZ);
mcp2515.setNormalMode();
}

void loop() {
mcp2515.sendMessage(GidenPaket1);
delay(100);
mcp2515.sendMessage(GidenPaket2);
delay(100);
}
 
Son düzenleme:
Valla helal olsun size.Ardunio ögrenmeye can bus ile başlamak.
Genç kardeşlerim Can bus çok basit bir haberleşme protokolu degil.Ezbere birilerinin yaptıgını kopyala yapıştır yapacaksanız sizin bileceginiz iş.Öncelikle daha basit konularla ugraşmanızı tavsiye ederim.
 
MCP2515
 

Ekli dosyalar

  • Automotive-CAN-BUS-network.jpg
    31.1 KB · Görüntüleme: 6
  • CAN-Schematics-module.pdf
    10 KB · Görüntüleme: 0
  • index_clip_image004_0003.jpg
    10 KB · Görüntüleme: 4
  • MCP2515-CAN-BUS-Datasheet.pdf
    990.5 KB · Görüntüleme: 0
  • MCP2515-Module-Schematic.jpg
    105.8 KB · Görüntüleme: 4
  • MCP2515-Parts.jpg
    169.4 KB · Görüntüleme: 4
  • MCPCAN-library.zip
    14.5 KB · Görüntüleme: 0
  • OBD2-Connector-Pinout.png
    26.4 KB · Görüntüleme: 5
Donanımsal SPI modul kullanıldığında farkeder. tüm timingler fosc ye bağlı. softwise bir spi olsaydı farketmezdi.
 
bir modül daha al, üzerinde kristal değiştir. sorunun yazılımla değil, donanımla çöz.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…