RPI CAN FD HAT

  • Pi-CAN FD - Duo - HAT-Modul

    PI-CAN FD Duo - HAT-Modul

     

    Hardware  (Version 0.1)

     Schaltplan

    Die Schaltung besteht im Wesentlichen aus:

    • 2 x MCP2517-FD -  CAN-Controller
    • 2 x MCP2562-FD -  3,3V CAN-Bus Treibern
    • 1 x EEPROM - HAT ID Eeprom 
    • optionale Terminierung der CAN-Bus Leitungen mittels Jumper
    • JP6 - Header : UART-Schnittstellen (console), so dass man den Raspi auch ohne Netzwerk über eine serielle Konsole konfigurieren kann.

    Die CAN-Controller sind über den SPI-BUS an den Raspberry Pi angebunden und die SPI-Taktfrequenz beträgt 40MHz.

    Hinweis: In dem Schaltplan sind für die Quarze jeweils zwei Bestückungsvarianten vorgesehen, so daß man die Bauform verwenden kann, die man gerade zur Hand hat, bzw. bei Handbestückung einfacher zu löten sind.

     

    Schaltplan - PI-CAN-FD Duo
    Abb. 1.1  Schaltplan - PI-CAN-FD Duo

    Schaltplan V0.1 PDF-Version

     Layout

    Toplayer
    Abb. 1.2 Bestückungsseite PI-CAN FD - Duo

     

    Bottomlayer PI-CAN FD-Duo
    Abb.1.3 Leiterbahnseite PI-CAN FD - Duo

     Aufbau

     PI-CAN FD - DUO eingebaut
    Abb.1.4  PI-CAN FD - Duo eingebaut

    PI-CAN FD-Duo bestückte Leiterplatte
    Abb.1.5  PI-CAN FD - Duo bestückte LP

     

     

     

    ..... in kürze mehr!

     

    Die ersten Tests sahen schon sehr vielversprechend aus, d.h. das Senden und Empfangen von CAN-FD-Frames (auch mit Baudrate Switch) haben funktioniert.

     

    Testsetup mit STM32 NUCLEO-G474-RE Board

    CubeMX Pin Konfiguration für NUCLEO CANFD Test
    Abb 1.6 CubeMX Pin Konfiguration

    Das Modul wurde mit dem Nucleo Board und diversen Baudraten getestet. Das verlinkte Video lief mit 1MHz Baudrate und 2 MHz Datenrate.

    Meine CubeMx-Konfiguration:
    images/pi_projekte/picanfd_duo/FD_Test.ioc

    Es wird der FDCAN1 verwendet welcher dann direkt mit dem  CAN-FD Treiber MCP2561FD direkt verbunden ist ( mit flying wires). Dafür wird eine kleine Lochrasterkarte verwendet.

    Ebenso wird der USART2 für die Debug-Ausgaben verwendet, da dieser hier im Nucleo Board über die USB-Buchse als VirtualComPort zur Verfügung gestellt wird, somit wird nur ein USB Anschluss und eine 5-6 V Versorgung benötigt.

    Achtung: Dazu den Jumper auf +5V_VIN setzen (somit wird nur der intenre ST-Link mit Spannung versorgt). Und die Versorgungsspannung über Vin einspeisen

    Eventuell ist dies  nicht notwendig und man kann alles über USB betreiben, aber dann wird der CAN-Treiber außerhalb seine Spezifikation von der Versorgungsspannung betrieben. (+5V für den CAN-Treiber).

    CAN-FD Testaufbau mit dem STM32G474 Nucleo Board
    Abb. 1.7 CAN-FD Testaufbau mit NUCLEO Board

     

    Und hier ein kurzes Video welches die Funktion des Tests zeigt:

    https://youtu.be/W887qp6XLx4

    CAN0 wurde folgendermaßen konfiguriert:

    pi@raspberrypi:~ $ sudo ip link set can0 up type can bitrate 1000000   dbitrate 2000000 restart-ms 1000 berr-reporting on fd on
    pi@raspberrypi:~ $ 
    pi@raspberrypi:~ $ ip -det link show can0
    3: can0: <NOARP,UP,LOWER_UP,ECHO> mtu 72 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 10
        link/can  promiscuity 0
        can <BERR-REPORTING,FD> state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 1000
              bitrate 1000000 sample-point 0.750
              tq 25 prop-seg 14 phase-seg1 15 phase-seg2 10 sjw 1
              mcp25xxfd: tseg1 2..256 tseg2 1..128 sjw 1..128 brp 1..256 brp-inc 1
              dbitrate 2000000 dsample-point 0.750
              dtq 25 dprop-seg 7 dphase-seg1 7 dphase-seg2 5 dsjw 1
              mcp25xxfd: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..256 dbrp-inc 1
              clock 40000000numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535