CAN Interface

  • Hallo,
    ich versuche seit ein paar Wochen schon ein CAN Interface am Raspberry Pi B+ ans laufen zu kriegen leider erfolgslos.
    Folgendes Interface habe ich : CAN Interface (mcp2515 CAN Controller)
    Als Gegenstück, um zu gucken ob etwas ankommt oder CAN nachrichten zu erzeugen benutze ich ein USB interface von Vector mit CANoe.
    Ich habe versucht ein Kerne selber zu kompelieren, ein fertiges zu benutzen und zu guter letzt ein fertiges image LINK zu benutzen.
    Die Adapterplatine ist eine selbstgemachte (siehe Anhang)

    Beim Starten vom PI kann man mit einem Osziloskopen sehen das er den SPI BUS initialisiert.
    Dann kann ich auch mit

    Code
    echo -ne "\XA0" > /dev/spidev0.0

    etwas über den SPI Bus senden, man sieht es am Osziloskopen das da was ankommt.

    Wenn ich folgende Befehle ausführe (in einem script)

    Bash
    #!/bin/sh
    #Can
    insmod /lib/modules/3.12.28+/kernel/drivers/spi/spi-bcm2708.ko
    insmod /lib/modules/3.12.28+/kernel/net/can/can.ko
    insmod /lib/modules/3.12.28+/kernel/drivers/net/can/can-dev.ko
    insmod /lib/modules/3.12.28+/kernel/net/can/can-raw.ko
    insmod /lib/modules/3.12.28+/kernel/net/can/can-bcm.ko
    insmod /lib/modules/3.12.28+/extra/spi-config.ko devices=\bus=0:cs=0:modalias=mcp2515:speed=10000000:gpioirq=25:pd=20:pds32-0=16000000:pdu32-4=0X2002:force_release
    insmod /lib/modules/3.12.28+/kernel/drivers/net/can/mcp251x.ko
    ip link set can0 up type can bitrate 1000000

    ,dann sieht man auf dem Osziloskopen das Selbe was beim Booten auch zu sehen war.

    Mit dem folgendem befehl:

    Code
    cansend can0 7DF#0201050000000000


    sendet man ja etwas über CAN. Beim ersten mal sieht man auch auf der SPI leitung, dass sich dort etwas tut. Beim 2. mal nicht mehr und ca. beim 7. mal kommt ein Error:

    Code
    write: No buffer space available


    Egal zu welchem Schritt wenn man versucht die CAN leitung zu scopen pasiert da garnix (außer man sendet mit CANoe von Vector).

    Kann mir da einer weiter helfen?
    Vielen Dank im Vorraus

  • Ich weiß jetzt nicht was du mit Abschlusswiderständen meinst.
    Kann auch daran liegen das ich die Hardware fertig gekauft habe.
    Das ist mein Aufbau: http://skpang.co.uk/catalog/images…pican_rev_B.pdf
    Edit: Ob der Can Analyser an ist kann ich dir auch nicht sagen.
    Aber eigentlich sollte es bei dir eher ein Software Problem sein.

    A: Was ist dein dunkelstes Geheimnis?
    B: Das kann ich dir nicht sagen.
    A: sudo was ist dein dunkelstes Geheimnis?

    Einmal editiert, zuletzt von petit_miner (18. Januar 2015 um 12:02)

  • Abschlusswiderstand ist bei einem Can Netzwerk an beiden Enden anzubringen. Du kannst aber zig Teilnehmer anschließen. Wenn du nur 2 Teilnehmer hast, solltest du 2 Widerstände einbauen. Auf deinem Aufbau kannst du den mit JP3 jumpern. Also Jumper einstecken für den Widerstand. Dann hast du mal einen R, der sollte schon mal reichen, um die Funktion zu sehen.
    Der CanOE oder Canalyzer sollte in der Konfiguration die Möglichkeit bieten den Treiber aktiv zu schalten. Der kann normalerweise nur mithören oder auch akitv auf den Bus eingreifen. Beides sind normale Anforderungen. Der muss deshalb aktiv sein, weil bei einem gesendeten Telegramm immer einer da sein muss der danke sagt. Sprich ACK wird pro Telegramm aktiv von einem Empfänger gesendet (also nur ein Bit vom gesamten Telegramm). Wenn das keiner macht, hört der Sender auf weiter zu senden. Deshalb siehst du wohl auf dem Bus gerade mal ein Telegramm, das beantwortet keiner und der Sender geht vom Bus. Also ist es normal, dass du eine kurze Aktivität siehst, und dann nix mehr.

    Du kannst auch gleich deinen Bus weiter aufbauen, so dass halt mind. 2 Teilnehmer dran sind. Dann übernimmt den ACK der 2. Teilnehmer und alles läuft. Ob jetzt ein Teilnehmer einen geöffneten Postkasten für deine Message hast, ist zunächst mal unwichtig. Aber das ist ja der 2. Schritt.

    Wenn du 2 dieser Module hast, musst du eben die 2 Abschlusswiderstände mit dem Jumper aktivieren. Wenn du 10 davon hast, halt nur das physikalisch an erster und letzter Stelle angeschlossene Modul. (nur der Vollständigkeit halber)


  • Hast du schon mein Tutorial probiert?
    Bei mir funktioniert es super :thumbs1:
    Klick Mich


    Ja das habe ich auch schon probiert, allerdings hab ich nicht so verstanden wo hin mit den runter geladenen Dateien hast da nix zu hin geschrieben außer das man die runterladen muss.

    allerdings steht bei mir im Moment

    Code
    #and of course the mcp2515 driver
    mcp251x


    in etc/modules, da verstehe ich im nicht was der unterschied zwischen mcp2515 und 251x ist



    Nur ein paar Fragen:
    Hast du an Abschlusswiderstände am Bus?
    Ist der Canalyzer aktiv (kann ja als reiner Mithörer konfiguriert werden.
    Sorry, doofe Fragen
    gruss


    Also ich kann am CAN vom RPi mit dem Oszilloskop keine Veränderungen sehen wenn man versucht was zu senden.
    Wenn da kein widerstand ist würde in CANoe ein Error ankommen und auf dem Oszilloskop auch irgend eine Veränderung sichtbar .
    am Bus hängt noch ein Nucleo Board welches über CAN nachrichten sendet, diese werden im CANoe auch richtig angezeigt somit ist der CAN Bus ja eigentlich in Ordnung

  • An alle die das selbe Problem damit haben:
    Wir haben mit einem Logikanalysator herausgefunden das der MCP2515 Chip den Fehler MERRF & ERRIF raus schmeißt.
    Was so viel bedeutet das wohl keiner zuhört den:
    eben so haben wir den die CAN-Pins angeschaut und festgestellt das die Pinbelegung von dem Board das wir bei Cooking-Hacks bestellt haben nicht dem Standard CAN-Pinout hat (CAN-High: 7 & CAN-Low:2) sondern CAN-High: 3 & CAN-Low: 5 vom D-SUB Stecker!

  • Update... Es kommt zwar was an aber es sind nicht alle Daten da es eine Lösung ist die mit viel basteln verbunden ist und mir/uns die Stabilität des Systems sehr wichtig ist sind wir auf ein BeagleBoneBlack umgestiegen was auf anhieb funktioniert und den CAN mit vollem Megabit verarbeiten kann

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!