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