CanBus mit dem Raspberry Pi

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!

  • Ich vermute mal das hier was mit dem SPI CE nicht stimmt.
    Hast du auch beide DT Overlays Can0 und Can1 hinzugefügt?
    Und hast du an die 2 unterschiedlichen Interruptlinien gedacht?


    Gesendet von meinem GT-I9305 mit Tapatalk


    ja
    so funktioniert can1
    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=21
    dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=22


    und so funktioniert can0
    dtoverlay=mcp2515-can1,oscillator=16000000,interrupt=22
    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=21


    :) !!

  • Mir ist jetzt erst klar geworden das beide CAN Bus Controller nicht gleichzeitig Daten an den PI versenden können, da beide ja an dem gleichen SPI Bus hängen.
    An den neuen PI's (die mit den 40 Pin Header) gibt es 2 SPI Busse die getrennt voneinander arbeiten.
    Du müsstest dafür die Device Tree Datei ein wenig verändern um die zweite SPI Schnittstelle zu verwenden.

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

  • Hi Leute,
    ich habe mal eine allgemeine Frage zu den verwendeten CAN-Boards:
    Wenn ich das richtig verstanden habe, dann basieren die Boards auf dem MCP2515 CAN-Controller und dem MCP2551 Can-Transceiver.
    Hier wird allerdings geschrieben, dass der MCP2551 "not recommended for new designs" ist:
    http://www.microchip.com/wwwproducts/en/en010405
    Es wird auf den MCP2561 verwiesen.
    Hm, ja wie ist das denn nun? Funktionieren die Boards auch mit dem MCP2551?
    Danke und viele Grüße, jakkesprinter

  • Der CAN-Bus ist ein Bus - dessen Spezifikation hängt nicht vom Wohl und Wehe eines Chips ab. Damit sollte auch ein veralteter Transceiver problemlos funktionieren. Veraltet bezieht sich in diesem Zusammenhang auf andere Features, wie du sie dem Vergleich beider Chips entnehmen kannst - zB variable Versorgungsspannung um geänderten uC Spannungsbereichen entgegenzukommen, etc.


    Langer Rede, kurzer Sinn: fuer dich alles irrelevant, weil das CAN-Board mit dem PI spielen können muss, und der CAN-Bus selbst gleich geblieben ist. Wie das Board das erreicht, muss dich üblicherweise nicht kümmern.

  • Moin, ich habe erst seit kurzem angefangen mich damit zu beschäftigen, jedoch nach dem "Schritt 2" stehe ich auf dem Schlauch :(


    pi@raspberrypi:~ $ sudo /sbin/ip link set can0 up type can bitrate 500000
    Cannot find device "can0"


    pi@raspberrypi:~ $ sudo vcdbg log msg
    000939.075: HDMI:EDID error reading EDID block 0 attempt 0
    000940.337: HDMI:EDID error reading EDID block 0 attempt 1
    000941.596: HDMI:EDID error reading EDID block 0 attempt 2
    000942.853: HDMI:EDID error reading EDID block 0 attempt 3
    000944.112: HDMI:EDID error reading EDID block 0 attempt 4
    000945.369: HDMI:EDID error reading EDID block 0 attempt 5
    000946.627: HDMI:EDID error reading EDID block 0 attempt 6
    000947.885: HDMI:EDID error reading EDID block 0 attempt 7
    000949.143: HDMI:EDID error reading EDID block 0 attempt 8
    000950.400: HDMI:EDID error reading EDID block 0 attempt 9
    000951.422: HDMI:EDID giving up on reading EDID block 0
    000967.249: HDMI:Setting property pixel encoding to Default
    000967.270: HDMI:Setting property pixel clock type to PAL
    000967.289: HDMI:Setting property content type flag to No data
    000967.309: HDMI:Setting property fuzzy format match to enabled
    001155.131: hdmi: HDMI:>>>>>>>>>>>>>Rx sensed, reading EDID<<<<<<<<<<<<<
    001155.528: hdmi: HDMI:EDID error reading EDID block 0 attempt 0
    001156.794: hdmi: HDMI:EDID error reading EDID block 0 attempt 1
    001158.055: hdmi: HDMI:EDID error reading EDID block 0 attempt 2
    001159.316: hdmi: HDMI:EDID error reading EDID block 0 attempt 3
    001160.577: hdmi: HDMI:EDID error reading EDID block 0 attempt 4
    001161.838: hdmi: HDMI:EDID error reading EDID block 0 attempt 5
    001163.099: hdmi: HDMI:EDID error reading EDID block 0 attempt 6
    001164.360: hdmi: HDMI:EDID error reading EDID block 0 attempt 7
    001165.621: hdmi: HDMI:EDID error reading EDID block 0 attempt 8
    001166.882: hdmi: HDMI:EDID error reading EDID block 0 attempt 9
    001167.906: hdmi: HDMI:EDID giving up on reading EDID block 0
    001167.938: hdmi: HDMI: No lookup table for resolution group 0
    001167.956: hdmi: HDMI: hotplug attached with DVI support
    001168.021: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
    001168.401: hdmi: HDMI:EDID error reading EDID block 0 attempt 0
    001169.664: hdmi: HDMI:EDID error reading EDID block 0 attempt 1
    001170.927: hdmi: HDMI:EDID error reading EDID block 0 attempt 2
    001172.190: hdmi: HDMI:EDID error reading EDID block 0 attempt 3
    001173.453: hdmi: HDMI:EDID error reading EDID block 0 attempt 4
    001174.716: hdmi: HDMI:EDID error reading EDID block 0 attempt 5
    001175.979: hdmi: HDMI:EDID error reading EDID block 0 attempt 6
    001177.242: hdmi: HDMI:EDID error reading EDID block 0 attempt 7
    001178.505: hdmi: HDMI:EDID error reading EDID block 0 attempt 8
    001179.769: hdmi: HDMI:EDID error reading EDID block 0 attempt 9
    001180.795: hdmi: HDMI:EDID giving up on reading EDID block 0
    001183.325: hdmi: HDMI: power_on to DMT mode VGA@60
    001186.459: hdmi: HDMI: Action callback added to queue to happen at frame 2
    001186.484: hdmi: HDMI: Action stop_3d_mode added to queue to happen at frame 2
    001186.505: hdmi: HDMI: Action unmute added to queue to happen at frame 3
    001186.533: hdmi: HDMI: Action cec_init added to queue to happen at frame 3
    001236.677: *** Restart logging
    001238.039: Read command line from file 'cmdline.txt'
    dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
    001488.386: Loading 'kernel7.img' to 0x8000 size 0x4086f8
    001492.040: Kernel trailer DTOK property says yes
    001492.055: Kernel trailer DDTK property says yes
    001495.220: Loading 'bcm2710-rpi-3-b.dtb' to 0x4106f8 size 0x3e78
    001576.879: dtparam: uart0_clkrate=48000000
    001590.663: dtparam: audio=on
    001601.953: dtparam: spi=on
    001614.745: Failed to load overlay 'mcp2515-can0-overlay'
    001619.981: Failed to load overlay 'spi-bcm2835-overlay'
    001627.307: dtparam: uart1=off
    001689.142: dtparam: arm_freq=1200000000
    001733.069: dtparam: core_freq=400000000
    001744.919: dtparam: cache_line_size=64
    001767.148: Device tree loaded to 0x2fffbc00 (size 0x4352)
    001769.648: gpioman: gpioman_get_pin_num: pin SDCARD_CONTROL_POWER not defined
    003312.269: vchiq_core: vchiq_init_state: slot_zero = 0xf6c80000, is_master = 1
    003316.343: hdmi: HDMI:hdmi_get_state is deprecated, use hdmi_get_display_state instead
    003321.223: TV service:host side not connected, dropping notification 0x00000002, 0x00000002, 0x00000004
    pi@raspberrypi:~ $


    pi@raspberrypi:~ $ ifconfig
    eth0 Link encap:Ethernet HWaddr b8:27:eb:44:e0:ed
    inet6 addr: fe80::4c8f:e983:ea13:26c1/64 Scope:Link
    UP BROADCAST MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)


    lo Link encap:Local Loopback
    inet addr:127.0.0.1 Mask:255.0.0.0
    inet6 addr: ::1/128 Scope:Host
    UP LOOPBACK RUNNING MTU:65536 Metric:1
    RX packets:200 errors:0 dropped:0 overruns:0 frame:0
    TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1
    RX bytes:16656 (16.2 KiB) TX bytes:16656 (16.2 KiB)


    wlan0 Link encap:Ethernet HWaddr b8:27:eb:11:b5:b8
    inet addr:192.168.178.73 Bcast:192.168.178.255 Mask:255.255.255.0
    inet6 addr: fe80::1dd6:e648:c17c:63de/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:5048 errors:0 dropped:477 overruns:0 frame:0
    TX packets:2470 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:4496082 (4.2 MiB) TX bytes:339412 (331.4 KiB)


    pi@raspberrypi:~ $


    Ich verwende Pi3 und MCP2515 Schaltung aus diese Seite:
    https://www.raspberrypi.org/fo…ewtopic.php?f=44&t=141052



    Vielen Dank geht an petit_miner für die Thema CAN

  • Hast du die notwendigen DTO-Dateien im overlays-Ordner? Ohne die kann das overlay nicht geladen werden. Schlaegt bei dir fuer CAN und SPI fehl.

  • Hallo __deets__,
    in /boot/overlays befinden sich die mcp2515-can0.dtbo und mcp2515_can1.dtbo , spi xx cs.dtbo Dateien sind auch da, die würden mit dem Schritt 3 erstellt.


    der Schaltung scheint in Ordnung zu sein und LED von MCP2515 Platine leuchtet auch. Nach dem ausführen von "ifconfig" ist auch kein Can zu sehen...

  • Hm, also deine Fehlermeldung deutet darauf hin, dass die overlays nicht angewandt werden. Da musst du jetzt buddeln woran das liegen kann.

  • Moin __deets__ ,


    ich habe ja dieses Beschaltung verwendet:


    GPIO CAN
    HEADR SIGNAL MODULE
    PIN NAME --- SIGNAL
    #01 3,3V --- VCC
    #02 5V --- Extra wire to Vcc TJA1050
    #06 GND --- GND
    #09 GND --- GND to CAN BUS (there is no GND terminal on CAN MODULE)
    #19 MOSI --- SI
    #21 MISO --- SO
    #23 SCLK --- SCK/CLK
    #24 SPI0.CE0 --- CS <= GPIO12 / Fehler
    #32 GPIO12 --- INT



    dann musst ich ja auch in /boot/config.txt :


    dtparam=spi=on
    dtoverlay=mcp2515-can0,oscillator=8000000,interrupt=12 <= GPIO12 / Fehler
    dtoverlay=spi-bcm2835-overlay


    Für all die anderen, vergisst nicht diese zwei befehle auszuführen:


    sudo apt-get update
    sudo apt-get upgrade

  • ich habe die Anleitung gefolgt. Leider kann ich trotzdem keine Daten schicken oder empfangen. Hat jemand einen Vorschlag, wie man das Problem lösen könnte.

  • bigbangnow
    Bist du dir sicher das du die gefährliche Operation an dem China CAN Bus Board korrekt durchgeführst hast?
    Dazu kommt noch das laut Datenblatt des MCP2515 dieser eine maximale Eingangspannung an einem PIN von VCC + 1v besitzt.
    Also in diesem Fall 5V vom CAN Transceiver auf den Eingangsport des MCP2515. Das sind 0,7V zuviel.
    Die maximale Eingangsspannung an einem Pin des MCP2515 bei 3,3V beträgt also 4,3V.
    Das das überhaupt bei dem funktioniert? :s :-/
    Zitiert aus dem Datenblatt des MCP2515:

    Quote


    Absolute Maximum Ratings:
    All inputs and outputs with respection to GND....................-0.6V to VCC +1.0V


    Alles was darüber ist sorgt auf kurz oder lang für einen Defekt des Chips.
    Könnte dies Jemand der Ahnung hat nochmals bestätigen?


    Quote

    #24 SPI0.CE0 --- CS <= GPIO12 / Fehler


    Welchen Pin verwendest du jetzt für CE0?
    Der Interrupt Pin und der SPI CE0 Pin müssen getrennt sein.
    Ein aktuelles Raspbian wird natürlich für das Tutorial benötigt :lol:;)
    Funktioniert es jetzt bei dir?


    nhafez
    Meine Glaskugel ist leider defekt :(
    Um dir helfen zu können bräuchte ich ein paar Infos.
    z.B: Verwendetes CAN Board? Kernel Version? was hast du in die /boot/config.txt eingetragen?
    usw.
    Automatisch zusammengefügt:[hr]
    Nochmal auf die DT Overlays zurück zu kommen....
    Es muss

    Code
    dtparam=spi=on
    dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25


    Heißen!
    Die auf Github können sich nicht entscheiden, mal so mal so. :lol:
    Die Anleitung habe ich bereits angepasst. ;)
    Der Fehler ist bei mir auch reproduzierbar.
    Ich schaue mal morgen ob bei mir das Versenden und Empfangen von Nachrichten funktioniert.

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

    Edited once, last by petit_miner ().

  • Ich komme mit meinem PiCAN Modul seit ich es neu auf einem Pi3 installieren will nicht weiter.


    Habe im LOG folgende Einträge.

    Code
    Nov 24 17:54:48 ccs-ht-rasp07 systemd-modules-load[115]: Failed to find module 'spi-config devices=\'
    
    
    Nov 24 17:54:48 ccs-ht-rasp07 systemd-modules-load[115]: Failed to find module 'bus=0:cs=0:modalias=mcp2515:speed$


    Zudem scheitere ich schon bei diesem Schritt.

    Code
    ~ $ sudo /sbin/ip link set can0 up type can bitrate 500000
    
    
    Cannot find device "can0"


    Jetzt hoffe ich hier einen passenden Tipp zu bekommen um das PiCAN Modul wieder in Betrieb zu nehmen.

    Lg


    Chris


    Raspberry Pi 2/2+/3/3+

    Stretch|Buster Lite, FHEM
    RFXtrx433E, SIGNALduino, nanoCUL433MHz & 868MHz, HomeMatic

    FS20, IT, HomeMatic, WMR200, TEK603, YouLess, APC, SUSV, Resol VBUS, Fronius DataloggerWeb2


  • Welche Kernelversion und welches CAN Bus Board verwendest du?


    Die Kernelversion lautet:

    Code
    cat /proc/version
    Linux version 4.4.32-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #924 SMP Tue Nov 15 18:11:28 GMT 2016


    Dieses Modul habe ich in Verwendung.
    http://skpang.co.uk/catalog/pi…-raspberry-pi-p-1196.html


    modprobe spi_bcm2835 bringt mir zudem diese Fehlermeldung.
    libkmod: ERROR ../libkmod/libkmod-config.c:828 conf_files_list: opendir(/etc/modprobe.d): Permission denied
    Zurgriff auf etc/modeprobe.d wurde aber eingerichtet.

    Code
    sudo chmod -R a+w /etc/modprobe.d

    Lg


    Chris


    Raspberry Pi 2/2+/3/3+

    Stretch|Buster Lite, FHEM
    RFXtrx433E, SIGNALduino, nanoCUL433MHz & 868MHz, HomeMatic

    FS20, IT, HomeMatic, WMR200, TEK603, YouLess, APC, SUSV, Resol VBUS, Fronius DataloggerWeb2

    Edited once, last by Burny ().

  • Hallo zusammen,


    ich würde gern mit dem PICan2 Board ca. 10 verschiedene Can Botschaften auf den Bus schicken wollen. Jede Botschaft soll durch Drücken einer Taste gesendet werden.
    Ich würde es gern über ein Touchpad realisieren. Macht halt was her. Eventuell kann man ja mit Scratch eine Benutzeroberfläche bauen. Zur Not würde aber auch eine normal Nummernpad-Tastatur gehen wo ich die Tasten anders beschrifte.
    Wie man was sendet hab ich auch schon in diversen Foren gefunden. Nur die Verbindung zwischen Botschaft und deren Auslösung zum senden habe ich noch nicht geblickt.


    Bin leider absoluter Beginner mit dem Raspberry Pi :no_sad: hab aber schon Erfahrung in C++ Programmierung.


    Kann mir eventuell jemand sagen ob und wie das zu realisieren wäre?
    Ich wär auch für jeden kleinsten Hinweis sehr dankbar.



    Gruß Schokoloko

  • Ich würde vorschlagen du erstellst einen eigenen Thread. Nicht zuletzt weil dein problem ja im Grunde nichts mit CAN zu tun hat, beziehungsweise da nicht die Schwierigkeiten liegen.

  • Hallo zusammen,


    ich wäre euch dankbar, wenn ihr mir bei folgendem Problem weiterhelfen könntet.


    Ich versuche ein Signal mit dem CAN-Bus Board zu senden, jedoch leider ohne Erfolg.
    Wenn ich den Befehl "./cansend can0 7DF#0201050000000000" ausführe, so erscheint folgende Meldung:
    "write: Network is down"


    Ich habe als Anleitung den PiCAN 2 User Guide v1.2 von SK Pang genutzt und das PiCAN2 wird auch in der "ifconfig" als can0 aufgelistet.


    Daten:
    - Raspberry Pi 3
    - Linux Version: 4.4.50-v7+
    - Pican 2 CAN-Bus Board: http://skpang.co.uk/catalog/pi…aspberry-pi-2-p-1475.html


    Grüße
    Siaase