Initialisierung einer CAN-FD-Schnittstelle

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    falls ich mit meinem Anliegen in dem falschen Bereich bin, kann dieses Thema gerne verschoben werden!

    Momentan habe ich ein Problem mit meiner CAN-Schnittstelle. Eine Kommunikation über den normalen CAN-Bus funktioniert. Jetzt wollte ich das mit CAN-FD ausprobieren. Nur das klappt leider nicht... Bei dem Booten des Systems werden die Controller erfolreich initialisiert.

    Code
    # Enable CANFD-Bus
    kernel=ms7/zImage
    device_tree=ms7/bcm2710-rpi-3-b.dtb
    overlay_prefix=ms7/overlays/
    dtoverlay=mcp2517fd-can0,oscillator=40000000,interrupt=22
    dtoverlay=mcp2517fd-can1,oscillator=40000000,interrupt=25

    Starten kann ich die Schnittstellen ebenfalls, allerdings bin ich mir da nicht sicher, ob ich die auch korrekt aktiviere!?

    Code
    ip link set can0 up type can fd off tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1 berr-reporting off restart-ms 100
    ip link set can1 up type can fd off tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1 berr-reporting off restart-ms 100

    Mein Programm ist in C geschrieben und ich initialisiere die Sockets so, wie es sämtliche Webseiten (z.B. https://copperhilltech.com/what-is-socketcan/) vorschreiben. Nur leider bekomme ich es nicht hin, CAN-FD-Daten zu senden. Ich habe mal nachgesehen und die MTU des Sockets sind immer 16 Bytes. Das müssten aber 72 Bytes sein wenn CAN-FD-Daten gesendet werden sollen...

    Ich bin gerade etwas ratlos und finde keinen Fehler... Hat hier jemand vielleicht schon eine CAN-FD-Schnittstelle erfolgreich erstellt und könnte mir helfen???

    Mein System ist übrigens ein Raspberry Pi 3B mit Raspbian Jessie.

    Mfg Kellermann66

  • Das

    Code
    ip link set can0 up type can fd off tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1 berr-reporting off restart-ms 100
    ip link set can1 up type can fd off tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1 berr-reporting off restart-ms 100

    sollte eigentlich das

    Code
    ip link set can0 up type can fd on tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1 berr-reporting off restart-ms 100
    ip link set can1 up type can fd on tq 250 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1 berr-reporting off restart-ms 100

    sein.

    Du hast vergessen fd einzuschalten. :)

  • Ah, okay, dann hättest es auch sagen sollen...

    Wie kommst Du zu den timing Settings? Ich sehe, dass Du keine Datenbitrate setzt. Normalerweise setzt man nur die Bitrate oder Bitrate und Samplepoint. Bei CAN FD kommen dazu noch die Datenbitrate und Daten Samplepoint.

    Probier mal damit:

    Code
    ip link set can0 up type can bitrate 500000 sample-point 0.75 dbitrate 4000000 dsample-point 0.8 fd on

    Damit setzt Du bei can0 die Bitrate auf 500kbit und Datenbitrate auf 4MBit.

  • Naja, kann man machen... sinnvoll ist es nicht.

    Wie gesagt, die Bitraten und Samplepoints setzen und ab dafür. Viel Spaß mit CAN :)

Jetzt mitmachen!

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