CAN-Modul
Universelles CAN-Modul basierend auf den MCP2515 CAN-Controller und dem ATA6660 CAN-Treiber.
Kurzbeschreibung
Hiebei handelt es sich um eine kleine Adapterplatine die über ein 10poliges Flachbandkabel mit dem Host-Controller-Board verbunden werden kann. Für die Ansteuerung des CAN-Controlles wird die SPI-Schnittstelle vom Host-Prozessor verwendet. Der CAN-Controller wird mit einem externen 20 MHz Quarz betrieben.
Die CAN-BUS Datenleitungen werden auf einen 9 poligen SUB-D Stecker geführt und die Pin-Belegegung richtet sich nach dem CIA-Standard.
Mittels Jumper JP1 kann eine 120 ohm Terminierung für die Signalleitungen CAN-H und CAN-L aktiviert werden.
Mit den optionalen Widerstände R2 (Pullup für CAN-H nach +5V) und R10 (Pulldown nach GND) kann das Modul an hersteller spezifischen Bussysteme angepasst werden.
Mit dem Jumper JP4 kann der StandBy Modus vom CAN-Bustreiber verhindert werden (bei gesetzen Jumper ist der Treiber immer aktiviert) ansonsten hängt der StandBy-Mode vom Eingangssignal "CTR_ATA" (Pin 7) ab.
Schnittstellen Beschreibung:
- 2x5 poliger Pin Header
Pin Funktionsbeschreibung 1 MOSI - SPI-Schnittstelle Dateneingangssignal 2 SS - Chip Select Signal für den CAN-Controller (low aktiv) 3 MISO - SPI Schnittstelle Datenausgangssignal 4 INt1_MCP - Interrupt Ausgangssignal vom CAN-Controller (10 k Pull-Up nach +5V) 5 SCK - SPI Schnittstelle Taktsignal (Eingang) 6 RXCAN - RX-Signal vom CAN-Transceiver. Bietet die Möglichkeit den Host-Controller mittels Interrupt aus dem Sleepmoudus zu wecken. Bei Bedarf kann der Widerstand R1 (10 kohm) als PullUp nach +5V bestückt werden. 7 CTR_ATA - Eingangssignal um den CAN-Transceiver in den StandBy Mode zu versetzen:
- High: CAN-Transceiver ist aktiviert
- Low: CAN-Transceiver im StandBy Mode8 OSC1_MCP2515 - Bei Bedarf kann bei gesetzen Jumper JP3 das Taktsignal vom 20 MHz Quarz abgegriffen werden, bzw. wenn der Quarz nicht bestückt ist ein externes Taktsignal von den CAN-Controller eingespeisst werden. 9 +5 V Versorgungsspannungs Eingang 10 GND- Masse
Hinweis: Mit den Widerstände R5-R6 (1k) erfolgt die Entkopplung von der SPI-Programmierschnittstelle, werden mehrere CAN-Module an der SPI-Schnittstelle betrieben so müssen diese Widerstände gebrückt werden und und auf dem Host-Controller müssen die Signalleitungen für die ISP-Programmierschnittstelle entkoppelt werden. - SUB-D9 Stecker X1 (männlich)
Pin Beschreibung 1 nicht belegt 2 CAN-Low 3 Masse 4 nicht belegt 5 nicht belegt 6 nicht belegt 7 CAN-High 8 nicht belegt 9 nicht belegt
Schaltplan
Abb. 1.1 - MCP 2515 Adapter Schaltplan
Download als PDF: Schaltplan.pdf
3D-Ansichten (Eagle3D)
Abb. 1.2 MCP 2515 Adapter - Eagle 3D Ansicht von der Bestückungsseite
Abb. 1.3 MCP 2515 Adapter - Eagle3D Ansicht von der Leiterbahnseite
Layout (Google Sketchup)
Abb.1.4-Bestückungsseite | Abb.1.5 - Leiterbahnseite |
Und so siehts in echt aus
Abb.1.6 - Foto von der Bestückunsseite | Abb. 1.7 Foto von der Leiterbahnseite |
Betrieb des Moduls an einem Raspberry Pi 3
Um das Modul mit dem Raspberry Pi 3 zu verwenden, muss die Hardware leicht modifiziert werden, da der Pi keine +5V an seine Eingänge verträgt. Dadurch wird nun der MCP2515 und die Pull-Up Widerstände von den SPI-Leitungen (und IRQ) mit +3,3V vom Raspberriy versorgt. Und der Rest der Schaltung hängt weiterhin an den +5V die auch vom Raspberry zur Verfügung gestellt werden. Mein Testaufbau mit dem modifzierten Modul und Raspberry Pi 3 hat prima funktioniert.
Hier folgt nun eine Beschreibung der Modifikationen für den Betrieb mit einem Raspberry Pi 3
- Widerstand R4 um 90° drehen so das er Kontakt mit dem unteren Ende von R3 hat.
Abb.1.8 - Foto von der Modifikation auf der Bestückunsseite und Anschlussbelegung - Leiterbahn am oberen Pad von R4 unterbrechen (+5V werden abgetrennt).
- JP6 oberer Pin wird als Anschluss für die +3,3V vom Raspberry verwendet.
- JP6: die Leiterbahn am oberen Pin auf der Leiterbahnseite auftrennen.
Abb.1.9 - Foto von der Modifikation auf der Leiterbahnseite - Anderer Seite von der aufgetrennten Leiterbahn nun mit +5V (oben am Elko) verbinden.
- Jumper "JP4" setzen, keine Standby Kontroller über den Anschlussstecker. Der MCP ist immer aktiviert.
Hier nochmal die Übersicht der Verbindungen, es wird die SPI0 - Schnittstelle vom Raspi verwendet:
Raspi 40 Pin Header |
Modul 10 Pin Header |
Beschreibung |
1 | - |
+3,3V - direkt auf LP |
2 | 9 | +5V |
6 | 10 | GND |
19 | 1 | MOSI |
21 | 3 | MISO |
22 | 4 | MCP_INT0 |
23 | 5 | SCLK |
24 | 2 | CE0 |
Raspberry Pi3 konfigurieren für den SPI-Support (wirklich nur eine Kurzanleitung, bzw. Gedankestüzte):
https://geier99.de/wiki/doku.php?id=pi3_tipps