Contents

Hardware

Zum lötfreien Verkabeln der Komponenten untereinander empfehlen sich sogenannte Jumper-Wires. Natürlich können an die Pins aber auch reguläre Litzenkabel angelötet werden. Im Falle des (optionalen) Bluetooth Bee Moduls führt am Löten leider aufgrund der kurzen Pins und des kleinen Abstandes kein Weg vorbei.

  1. Die Jumper auf dem Discovery Board müssen wie folgt gesetzt sein:
    CN4 – Beide Jumer gesteckt („DISCOVERY“-Stellung). Dies sorgt dafür, dass der auf dem Board vorhandene ST-LINK/V2 On-Board-Programmer dazu genutzt wird, unseren STM32 zu programmieren. Wären die beiden Jumper nicht gesteckt, lässt sich der ST-LINK Programmer nur zur Programmierung externer Microcontroller nutzen.
    JP3 – gesteckt. Dieser Jumper dient dazu, die Stromaufnahme des Microcontrollers zu messen. Wird JP3 nicht gesteckt, kann stattdessen über die beiden Pins eine Strommessung erfolgen.
    JP1 und JP2 sind in der Standardstellung gesetzt und können so verbleiben. Beide Jumper brücken jeweils Masse auf Masse und sind daher ohne direkten Nutzen. Wenn einem also die Masse-Pins ausgehen sollten, ließen sich hier vier weitere finden.
  2. Neben den Jumpern gibt es noch einige Lötbrücken, die jedoch nicht verändert werden müssen. Nähere Infos dazu finden sich im User Manual des Boards.
  3. Nun können die Komponenten nach folgender Tabelle untereinander verkabelt werden:
    Port / PinAnschluss an
    Anschlüsse für Dreh-Encoder (Fahrtregler)stm32f429i_disco_bottom_markup
    Unterseite des Boards
    PA5Dreh-Encoder (Fahrtregler) Kanal A
    PB3Dreh-Encoder (Fahrtregler) Kanal B
    PC13Dreh-Encoder Button (Select)
    3VDreh-Encoder Versorgungsspannung
    GNDDreh-Encoder Masse
    PA0Externer Nothalt-Taster (optional) als Alternative zum blauen Taster auf dem Board. Der Taster muss PA0 auf VDD (also 3,3V) ziehen. Der interne Pull-Down vom blauen On-Board-Taster erledigt den Rest. Für weitere Hinweise bitte die Schaltpläne oder das User Manual konsultieren.
    LED Ring
    PE2Sparkfun LED Ring CLK Pin oder Seeed Studio Circular LED DCKI Pin
    PE3Sparkfun LED Ring LATCH Pin
    PE6Sparkfun LED Ring DAT Pin oder Seeed Studio Circular LED DI Pin
    3VSeeed Studio Circular LED Ring Versorgungsspannung
    GNDSeeed Studio Circular LED Ring Masse
    DCC Signalausgang zum Eingangs-Optokoppler eines DCC Boosters
    PC8DCC Signalausgang zum Booster
    PA7DCC Signalausgang (komplementär) zum Booster
    GNDDCC Masse zum Booster
    Bluetooth-Modul für drahtlose Verbindung zu einem Android Gerät
    PA9Bluetooth Bee v2.0 Rx Pin
    PA10Bluetooth Bee v2.0 Tx Pin
    GNDBluetooth Bee v2.0 GND Pin
    3VBluetooth Bee v2.0 3V3 Pin
    Anschluss einer externen 5V Spannungsversorgung als Alternative zu USB
    GNDExterne Masse
    5VExterne 5V Spannungsversorgung

Encoder-Interface

Bei der Verwendung des Seeed Studio Grove Encoders ist das Signal des Encoder-Tasters leider nicht auf der vierpoligen Schnittstelle mit vorgesehen. Zudem schaltet der Encoder-Taster dort auf GND. Es muss daher an dieser Stelle eine (einfache) elektrische Modifikation vorgenommen werden. Zum einen muss ein separates Jumper-Kabel an den Taster-Ausgang des Encoders angelötet werden, um ihn mit Pin PC13 von ARC1 verbinden zu können, zum anderen muss die Leiterbahn vor R5 z.B. mit einem Cutter-Messer gekappt werden (siehe Bild).

seeed_encoder_mod

Wird ein eigener Drehencoder verwendet (also weder der Seeed Studio Grove Encoder noch der Sparkfun Illuminated Encoder), sollte darauf geachtet werden, dass der Encoder seine Phasen A und B gegen VDD (also 3V) schaltet. Je nachdem ob der Encoder-Taster gegen GND oder VDD schaltet, muss die entsprechende ARC1 Softwareversion programmiert werden. Dabei gilt folgendes:

ARC1 Version für Seeed Studio: Encoder-Taster schaltet auf GND
ARC1 Version für Sparkfun: Encoder-Taster schaltet auf VDD (3V)

Booster-Interface

Momentan ist ein Booster (noch) nicht Teil des ARC-Projektes, da es zum einen bereits eine Vielzahl an kommerziellen und DIY-Boostern zu finden gibt, zum anderen weil sich ein DIY-Booster nur schwer ohne eigenes Platinenlayout umsetzen lässt. Eine gute Auflistung von Boostern findet sich hier, aber auch Google liefert eine Fülle von aktuellen Projekten zu Tage. Zu empfehlen sind ebenfalls die Booster des OpenDCC-Projektes.

ARC1 stellt über die Pins PC8 und PA7 ein komplementäres DCC Signal mit 3.3V Pegel zur Verfügung. Dabei liegt auf PC8 das reguläre DCC Signal an, auf PA7 das negierte DCC Signal. Als Referenzpegel für das DCC Signal dient ein beliebiger GND Pin. Somit sollte ARC1 mit einem Großteil frei verfügbarer oder kommerzieller Booster kompatibel sein.

Wichtig bei der Auswahl und beim Anschluss eines Boosters ist, dass der DCC-Signaleingang des Boosters über eine galvanische Trennung verfügt (z.B. mit Hilfe eines Optokopplers). Dies ist deshalb wichtig, da DCC Zentralen (und somit auch ARC1) in den meisten Fällen über eine vom Booster unabhängige Stromversorgung verfügen und dadurch – aber auch durch räumliche Trennung – einen anderen Massepegel besitzen können. Wird nun ein Booster mit anderem Massepegel ohne galvanische Trennung an die Zentrale angeschlossen, können Ausgleichsströme über die DCC-Signalverbindung fließen und die Zentrale dauerhaft beschädigen.

Software

Ein großer Vorteil der Development Boards von ST Microelectronics ist, dass diese bereits einen On-Board-Programmer besitzen und somit zum Flashen der Firmware kein separater Programmer gekauft oder gebastelt werden muss. ST’s eigene Programmier- und Debugschnittstelle nennt sich ST-LINK/V2 bzw. ST-LINK/V2-1 und arbeitet über die stromversorgende Mini-USB-Schnittstelle des Boards.

Wichtiger Hinweis: Zum Programmieren der Software sollte eine ggf. vorhandene externe 5V Stromversorgung getrennt werden! Während des Programmiervorganges wird das Board ausschließlich über die USB-Spannungsversorgung gespeist.

  1. Zuerst wird der passende ST-LINK USB-Treiber benötigt. Diesen gibt es unter http://www.st.com/en/embedded-software/stsw-link009.html zum Download. Leider erfordert der Dowload zunächst eine Registrierung bei ST.
  2. Zum Programmieren der ARC-Firmware basierend auf den kompilierten Binaries kommt das STM32 ST-LINK Utility zum Einsatz. Dieses gibt es ebenfalls nach erfolgter Registrierung (natürlich ist insgesamt nur eine Registrierung nötig) auf der ST-Website zum Download: http://www.st.com/en/embedded-software/stsw-link004.html
  3. Das Development Board über die linke Mini-USB Schnittstelle (nicht die Micro-USB Schnittstelle direkt neben den Display) mit dem PC verbinden. Nach kurzer Zeit sollte auf dem Display die Demo-Software des Herstellers ST erscheinen.
  4. Überprüfen, ob sich alle Jumper in der oben genannten Konfiguration befinden.
  5. Das STM32 ST-LINK Utility starten und über das Menü „File->Open File“ (STRG+O) die gewünschte ARC-Firmware Datei (im *.hex Dateiformat) auswählen.
  6. Über das Menü „Target->Connect“ mit dem Development Board, bzw. mit dem darauf befindlichen ST-LINK Programmer eine Verbindung aufbauen. Wurde der USB-Treiber korrekt installiert, sollte dies problemlos funktionieren. Eine erfolgreiche Verbindung sollte im Log-Bereich ungefähr so aussehen:
    16:40:44 : Connected via SWD.
    16:40:44 : Connection mode: Normal.
    16:40:44 : Debug in Low Power mode enabled.
    16:40:44 : Device ID: 0x419
    16:40:44 : Device flash Size: 2MBytes
    16:40:44 : Device family: STM32F42xxx/F43xxx
  7. Nach erfolgreichem Verbinden, über das Menü „Target->Program & Verify“ (STRG-P) und im anschließenden Dialogfenster „Start“ den Programmiervorgang starten. An den Einstellungen müssen keine Änderungen vorgenommen werden.
  8. Der Flash- und Verifikationsvorgang dauert ca. 10-20 Sekunden. Nach erfolgtem Programmieren sollte sich das Board neu starten und direkt in die ARC1 Firmware booten. Der Log-Bereich sollte in etwa folgendes enthalten:
    16:47:16 : Memory programmed in 12s and 293ms.
    16:47:16 : Verification…OK
    16:47:16 : Programmed memory Checksum: 0x015A31B9
  9. Das ST-LINK Utility kann nun geschlossen werden und ARC1 ist bereit zum Einsatz. Ggf. ist noch ein manueller Reset (über den schwarzen Taster oder durch kurzes Trennen der Stromversorgung) nötig.