GPS-Platine mit Tyco-Modul

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

(in Arbeit, bitte ergänzen)

Gesamtansicht Oberseite
Gesamtansicht Unterseite

Auslöser dieses Artikels ist der Forenbeitrag Platinen mit GPS - Empfänger bei ebay und die sich daraus entwickelnde Diskussion über das Recycling der relativ preiswerten und technisch interessanten Platine in eigenen Projekten.

Ein Wort in eigener Sache: Besonders lobenswert ist das Engagement von Black Friday, der die Kiste stets am Laufen hält. Danke.

Ursprünglicher Zweck der Platine

Bei der Platine handelt es sich um ein Teil des GPS Navigationssystems NavMe Car-Modul aus dem Jahr 2004. Kurzfassung: Der Anwender erhält mit dem Modul kostenpflichtige, aktuelle Streckenvorschläge über ein Handy und spart dafür aufwändiges Handling und Updates mit CD-ROM/CF... Speichermedien.

Ideen fürs Recycling

  • (Minimalistisches) Navigationssystem Z.B. mit Wegpunkteingabe über einen Computer und Richtungsanzeige über Textdisplay
  • Preiswerter Einstieg in die ARM Programmierung. Hier kann sich ein Nachfragen im Forum lohnen, ob Leute Platinen abgegeben, nachdem sie sich ihr GPS-Modul runtergepflückt haben.
  • Missbrauch als seriell auslesbare RTC real time clock. GPS-Signale beinhalten auch atomuhrgenau Zeit und Datum. Und das GPS Modul besitzt eine interne Uhr, die ohne Satellitenempfang bei 0 losläuft. Das Zeitformat kann in mehreren Formaten ausgegeben werden (Voreinstellung UTC-Zeit).

    “I am continually amazed by how little code is required to use atomic clocks in satellites 11,000 miles above my head.”
    (Jon Person, Writing Your Own GPS Applications)

  • Missbrauch der Stromversorgung der Platine als einfaches Schaltnetzteil von 12V auf 3,3V (Pin-1 auf 2x4 JTAG Pfostenleiste; GND auf Pin-2)
  • GPS-Datalogger: Mobilgerät mit Energieversorgung aus Akku. Speicherung von NMEA Texten im flüchtigen SDRAM und im nichtflüchtigen FLASH-ROM. Auslesen von Wandertouren, Streckenverläufen... z. B. über RS232.
  • Digitales Cockpit: Uhr/Datum, Geschwindigkeitsmesser (Tacho, groundspeed), Beschleunigungs-/Verzögerungsmesser und Höhenmesser, Kurs, Entfernung bis "Heim" und/oder Ziel...

Realisierte Ideen

  • GPS-Tracker - NMEA-Daten werden auf MMC gespeichert.
  • Low-Cost GPS-Modul mit USB-Anschluss von Simon
  • Einstieg in die ARM Programmierung mit GNUARM

Hardware

GPS Modul X1029-A, Tyco

Oberseite GPS Modul X1029-A, Tyco

Das GPS-Modul von Tyco scheint keine Normalausführung zu sein (Typenschild: X1029-A statt A1029-A)! Es fehlt mindestens 1 IC oben rechts bei Pin 34/nRST. Pin ANTSTAT ist Hi bei 13,5...37mA - die Antenne zieht aber 12mA@3,3V. ANTSTAT entspricht also nicht den Solldaten. Und 1PPS wird nicht ausgegeben.

Vom Modul werden NMEA Daten ausgegeben (Infos u.a. hier und hier).

Links


Achtung: In der Recommended minimum configuration im A1029 Datenblatt wird Vcc3a mit VCC verbunden. Beim A1029 sind die Pins an der unteren linken Ecke (Vcc3a bis AGND) belegt, beim X1029 sind sie jedoch fest mit GND verbunden.

Atmel AT91R40008-66AI "ARM7TDMI"

Oberseite Atmel AT91R40008-66AI "Arm"

Der µC AT91R40008-66AI (ARM7TDMI-Familie) ist eine CPU 32-Bit vom Hersteller Atmel.

Er besitzt 256 kB internes SRAM aber kein internes Flash-ROM. Zur dauerhaften Programmspeicherung wird ein externes Flash-ROM (Atmel AT49BV322A) verwendet.

Andere Projekte mit dieser Kombination

Links


Atmel AT49BV322A "FLASH-ROM"

Oberseite Atmel AT49BV322A

32 Mbit (2M x 16), 2.7-Volt Read and 2.7-Volt Byte-Write Sectored Flash, Single Plane, Bottom Boot.

Auf einer älteren bei EBay verkauften Charge waren Flashspeicher 4 MB MX29LV320ABTC-70I verbaut.

Links


Actel eX128 "FPGA"

Oberseite Actel eX128

FPGA zum SDRAM Zugriff. Wird von Actel als Antifuse Device bezeichnet. Nicht reprogrammierbar.

Links


Samsung K4S641632H-TI75 "SDRAM"

Oberseite Samsung K4S641632H-TI75

64 Mbit (8M x 8) Sync/Async DRAM / SDR SDRAM / Component / PC133 (133MHz @ CL=3)

Auf einer älteren bei EBay verkauften Charge waren SDRAM 4 MB K4S64163H_TC75 verbaut.

Links


Anschlüsse

JTAG-Schnittstelle

Oberseite Steckerleiste 2

Der JTAG-Anschluss hat folgende Belegung:

2* *1
4* *3
6* *5
8* *7

(Stiftleiste Ansicht von oben)

1: 3,3 Volt 2: GND 3: TDI 4: TMS 5: TCK 6: TDO 7: /RST 8: NC

Beim Anschluss von JTAG-Buchsen bzw. Programmern ist unbedingt die Belegung der Schnittstellenpins zu prüfen. Es gibt 20-Pin, 14-Pin und 8-Pin (in 1x8 und 2x4 Variante) Schnittstellen. Die Belegung der Pins ist extrem uneinheitlich. Tipps zu JTAG Programmern finden sich massenweise in den Artikeln LPC2000 und JTAG.

JTAG - Übersetzung zwischen der Pfostenleiste und dem ARM-JTAG Adapter (Wiggler-"kompatibel") von Olimex:

NavMe <--> ARM-JTAG Adapter (Wiggler-"kompatibel") von Olimex

1 <-->  1
2 <-->  4
3 <-->  5
4 <-->  7
5 <-->  9
6 <--> 13
7 <--> 15

Stimmt die Belegung so? (Yes, so funktioniert es bei mir, Stefan)

Horst hat einen Schaltplan plus Platinenlayout für einen Wiggler-Klon mit der speziellen JTAG-Pinanordnung oben entworfen und ins Forum gestellt (PDF, Eagledateien).

Links


Große Steckerleiste und Buchse

Unterseite Steckerleiste 1 und Buchse

Die Baugruppe wird in ihrer ersten Verwendung in eine 26-polige SUB-HD-Verbindung (vermutlich einer Freisprecheinrichtung für Mobiltelefone) eingeschliffen. Dazu befindet sich eine 26-polige Buchse auf der Baugruppe und an der 24-poligen Stiftleiste kann über eine mitgelieferte Leitung ein 26-poliger Stecker angeschlossen werden.

Bei Betrachtung des Moduls als Black Box sind am SUB-HD-Verbinder folgende Anschlüsse nutzbar:

Die Versorgung des Moduls erfolgt mit 12V Gleichspannung. Batt+ liegt an Pin 11, Masse liegt an Pin 9, 17, 21 und 26.

An Pin 10 steht das Signal "Pegel" zur Verfügung. Dabei handelt es sich um den Prozessoranschluss TIOB0. Das Signal "Pegel" wird mit einem Transistor (open collector) und einem Schutzwiderstand 68k gegen Pin 1 geschaltet.

An Pin 20 liegt das invertierte "Pegel"-Signal, das über einen open collector und einen Schutzwiderstand 68k gegen Masse geschaltet wird.

An Pin 12 und 13 stehen RX und TX der seriellen Schnittstelle 0 des Prozessors in 3,3V-Logik über 220R/100pF zur Verfügung. Nach dem Einschalten arbeitet der serielle Port zum Handy mit 115200 Baud.

An Pin 4 und 5 kann ein Analogsignal eingekoppelt werden, das über einen Differenzverstärker als unsymetrisches Signal auf der Pfostenleiste ausgegeben wird. In diesen Signalweg kann ein synthetisiertes Signal (von TIOA0 über Filter erzeugt) eingekoppelt werden. Die Einkopplung des Signals wird mit +5V an Pin 1 eingeschaltet.

Die weiteren Pins werden zum überwiegenden Teil durchgeschliffen.

Antennenbuchse

Unterseite Antennenbuchse

Die GPS-Antenne wird über eine MCX-Verbindung angeschlossen.

Zwischen der MCX-Buchse und dem GPS-Modul befindet sich auf der Platine eine 50Ω Leitung. Wenn man das GPS-Modul von der Platine entfernt und/oder die Antennenbuchse auslötet, hat man eventuell Schwierigkeiten diese 50-Ohm-Leitung von der Antenne zum GPS-Modul zu bauen.

Antenne

Aktive GPS-Antenne.

Erfahrungen

  • Die Endrich-Antenne zieht 12mA@3,3V (Datenblatt: 12 mA typ., 15 mA max.)
  • Die Antenne sollte auf eine horizontale Fläche gelegt werden.
  • Die Antenne sollte auf einen metallischen Träger aufgelegt werden. Der Träger wirkt als ground plane und verbessert den Empfang der Satelliten. Auf magnetisierbarem Eisenblech haftet die Antenne, weil zwei Magnete eingebaut sind.

Links

  • Datenblatt Fa. Endrich Daten: 3,3/4,0/5,0 V (Modellabhängig), Gain 27 dB typ., Noise figure 1,5 dB typ.
  • Hischmann 5M Alternative Antenne. Daten: 3...5 V, Gain 26 dB, Noise figure 1,5 dB

Sonstige Bauteile

66,0000 MHz Oszillator und ggf. die beiden GND/+12V Lötflächen
  • 66,0000 MHz Oszillator,
  • Schaltregler U202, MC33063 von 12 V -> 3,3 V,
  • Linearregler U203, LM2985 von 3,3 V -> 2,5 V,
  • Linearregler U205, LM2985 von 3,3 V -> 1,8 V,
  • Doppeloperationsverstärker U200, TL072I als aktives Filter geschaltet, um aus einem Bitstrom (von TIOA0) ein Analogsignal zu gewinnen. Das Analogsignal wird auf Pin 4 der 24-poligen Pfostenleiste gelegt um von einem externen Leistungsverstärker auf Lautsprecherpegel angehoben zu werden.
  • Doppeloperationsverstärker U201, TL072I, eine Hälfte unbenutzt, geschaltet als Differenzverstärker, der das Eingangssignal an Pin 4 und 5 des Sub-HD-26 verstärkt und auf Pin 4 der 24-poligen Stiftleiste durchschleift.
  • Resetbaustein MAX809S

Für die Inbetriebnahme hat Black Friday zwei Kabel an die Pads von D201 (nicht bestückt) gelötet und 12 Volt darauf gegeben (Polung laut Schaltplan). Ohne Schaltplan würde D201 auf den zwei breitesten Lötflächen neben dem 24-pol. Wannenstecker sitzen. Die Lötfläche am Platinenrand ist GND und die Lötfläche zur Platinenmitte ist +12 V.

Hardwareänderungen

Leider sind unbenutzte PIO-Leitungen am AT91R40008 z. B. zur Anbindung eines LC-Displays nur nach Lötaktionen z. B. mit Fädeldraht zugänglich. Um die Zahl der Lötstellen am Prozessor klein zu halten, werden im Moment verschiedene Bustypen und Porterweiterungen in Betracht gezogen. Die Bustreiber würden idealerweise per Software auf dem AT91R40008 implementiert werden. Vcc und GND sind von anderen Stellen (z. B. JTAG-Steckerleiste) leichter zugänglich.

Porterweiterung mit SPI

Es werden vier PIO-Leitungen benötigt. Siehe auch im Forum und unter Porterweiterung mit SPI.

Porterweiterung mit I²C

Es werden zwei PIO-Leitungen benötigt. Siehe auch im Forum und unter Port-Expander PCF8574.

AT91M63200: I²C Drivers for AT24C512 Serial EEPROM (39 pages, Updated 6/01) - Describes the software implementation of an Inter Integrated Circuit Bus (I²C Bus) using the peripherals in the AT91M63200. (PDF)

Porterweiterung über UART0 und 2. µC

Es werden null PIO-Leitungen benötigt. Über die UART0-Schnittstelle (z. B. TXD0/RXD0 an der DSUB-26-Buchse) kommuniziert der AT91R40008 mit einem frei wählbaren, zweiten Interface-µC. Die Ports des Interface-µC stehen dann für Hardwareerweiterungen zur Verfügung. Diese Lösung erfordert auch keine Lötarbeiten auf dem NavMe-Board.

Verwenden der RXD0 Leitung als IO Leitung

Verwenden der RXD0 Leitung als IO Leitung

Pin 15 am AT91R40008 wird statt als RXD0 Leitung (UART) als Input- bzw. Output-Pin für eine externe Schaltung verwendet. Siehe auch Forumsbetrag, Demoprogramm (7-Zip Archiv) und nebenstehendes Bild.

Achtung: Im Bild ist leider ein Fehler in der Legende. Es muss heißen

INPUT configuration:
Switch 3 open ('''right''' position)


Firmware

ARM/Flash - Firmware

Die originale Firmware im Flash-ROM nutzt das embedded Betriebssystem eCos. Das Flash-ROM kann z. B. mit einem Wiggler bzw. Wiggler-Nachbau und mit dem Programm OCD Commander ausgelesen werden (original_rom.7z gepackt mit 7-zip).

Flash-Tool für die ARM/Flash-Combo

JTAG-O-MAT (Version 1.2.5) ist ein funktionierendes Flash-Tool für die Kombination aus AT91R40008 (ARM) und AT49BV322A (Flash auf den Platinen der neueren Revision). Dieses Tool kann die JTAG Schnittstelle über Hardware an der parallelen Schnittstelle (Wiggler, getestet) oder mit Hilfe eines ATMEGA8L an der serielle Schnittstelle (Turtelizer, ungetestet) ansprechen.

Tipps & Tricks:

  1. Mit einem Wiggler darf man die Parallelschnittstelle (LPTx) vom Rechner max. im EPP-Modus betreiben. ECP-Modus ist ein No-No. Ggf. im BIOS (Systemsteuerung) einzustellen. Es muss auch eine echte Parallelschnittstelle sein; LPT über USB funktioniert nicht.
  2. Bei Verwendung eines Wigglers unter Windows 98 muss die JTAG-O-MAT Source geändert und neu übersetzt werden (PORTDRIVER auf z. B. "LPT1" setzen beim CreateFile()).
  3. Bei Verwendung eines Wigglers unter Windows 2000/XP muss der mitgelieferte Treiber giveio.sys installiert sein.
  4. Die mitgelieferten .JOM Dateien (Batchfiles von JTAG-O-MAT) müssen auf das Speicherlayout des NavMe-Moduls angepasst werden. Das betrifft die Anfangsadresse des Flash-ROMs sowie die Ansteuerung des Flash-ROMs (Forum).
  5. Das mitgelieferte flasher.bin erzeugt eine serielle Debugausgabe, die an der DSUB-26 Buchse vom NavMe-Board abgegriffen werden kann (115200-8N1-Kein Handshake). Damit das funktioniert, muss flasher.bin auf die Taktrate des NavMe-Moduls (66 MHz) angepasst werden. Das kann durch einen Patch (Forum) oder durch Neuübersetzen geschehen.
  6. Beim Flashen von Binärdateien ist darauf zu achten, dass die Dateilänge durch 4 teilbar ist. Andernfalls gibt es am Ende des Flashvorgangs ein Timeout und die letzten Bytes fehlen. Ggf. an die Binärdatei ein paar Nullbytes anhängen oder den Compiler richtig einstellen ;-)
  7. Nach dem Flashen muss ein Hardware-Reset erfolgen, wenn der frische Code aus dem ROM starten soll. In meiner Entwicklungsumgebung (Wiggler) macht der RESET-Befehl in der *.jom Datei KEINEN Hardware-Reset auf der NavMe-Platine. Das Aus- und Anschalten der Stromversorgung für das NavMe Board ist wirksam.

GPS - Firmware

Flash-Tool für das GPS-Modul

Flash-Tool

Original Firmware a100-57

$PTYCVER,TYCO Electronics - a100-57 (11:43:42 Feb 24 2004)
$PSTMVER,GPS Version 4.07release-ARM (14:02:29 Sep 27 2003)

Alternative Firmware 100-01

$PTYCVER,TYCO Electronics - 100-01 (15:57:55 Sep 09 2004)
$PSTMVER,GPS Version 4.11.2 ARM (13:31:23 Jul 29 2004)
$PSTMVER,Bootloader Version ????

Alternative Firmware (Ungetestet - EIGENES RISIKO!!!)

Features laut User Manual:

  • "Bearing" (Richtungs- und Entfernungsangabe zu einem bestimmten Punkt)
  • "Cross Track Distance" (Entfernung von der Luftlinie zwischen zwei Punkten)

Leider werden diese beiden Features von den beiden Firmwares noch nicht unterstützt.

Software

Erster Test des GPS-Moduls

Hab gerade mal den GPS Empfänger getestet.

Aufbau:
-3.6V leitung auf navme board durchkratzen
-3.6V am gps modul anlegen
-antenne dran
-enable pin (übervcc) mit 1k auf 3.6v ziehen
-tx0 an serielle schnittstelle (4800baud)

und tadaaa:
$PTYCVER,TYCO Electronics - a100-57 (11:43:42 Feb 24 2004)
$PSTMVER,GPS Version 4.07release-ARM (14:02:29 Sep 27 2003)
$GPRMC,235953.000,V,0000.0000,N,00000.0000,E,0.0,0.0,130399,0.0,W*67
$GPGGA,235953.000,0000.0000,N,00000.0000,E,0,00,99.0,0082.0,M,18.0,M,,,*79
$GPGSA,A,1,,,,,,,,,,,,,99.0,99.0,99.0*00
$GPRMC,235955.000,V,0000.0000,N,00000.0000,E,0.0,0.0,130399,0.0,W*61
$GPGGA,235955.000,0000.0000,N,00000.0000,E,0,00,99.0,0082.0,M,18.0,M,,,*7F
$GPGSA,A,1,,,,,,,,,,,,,99.0,99.0,99.0*00
$GPRMC,235957.000,V,0000.0000,N,00000.0000,E,0.0,0.0,130399,0.0,W*63
$GPGGA,235957.000,0000.0000,N,00000.0000,E,0,00,99.0,0082.0,M,18.0,M,,,*7D
$GPGSA,A,1,,,,,,,,,,,,,99.0,99.0,99.0*00

Weiterer Test des GPS-Moduls

Den Anschluss habe ich so gemacht:

Spannungsversorgung wie von Black Friday beschrieben:

  • GND vom Netzteil am die grössere Lötfläche am Platinenrand neben dem 24-pol Wannenstecker
  • +12V vom Netzteil an die darunterliegende grosse Lötfläche zur Platinenmitte hin

Antenne:

  • Antennenkabel in Antennenbuchse und Antenne auf Blechdeckel gelegt (Antenne hat Magnete) und auf der Fensterbank (innen) abgelegt.

Kommunikationsteil:

  • +3,3V vom Pin 1 des 8-pol. JTAG Anschluss auf Steckbrett geführt
  • GND vom Pin 2 des 8-pol. JTAG Anschluss auf Steckbrett geführt
  • Draht an Pin 4 (TX0) vom GPS Empfänger angelötet und auf Steckbrett geführt
  • Draht an Pin 5 (RX0) vom GPS Empfänger angelötet und auf Steckbrett geführt
  • auf dem Steckbrett einen MAX3232CPE aufgebaut und TX0/RX0 an die serielle Schnittstelle vom PC gegeben. 4800 Baud 8N1

Das GPS-Modul beginnt gleich nach dem Einschalten der Energieversorgung zu senden. Zuerst wird die Firmwareversion gesendet, dann eine Zeitlang ausführliche Daten mit $GPGGA,$GPGSA,$GPGSV,$GPRMC Texten und nach einiger Zeit schaltet der ARM das GPS-Modul auf eine Ausgabe mit einem $GPRMC Text.

Dem VisualGPS reicht der $GPRMC Text anscheinend nicht aus. Man kann mit einem Terminalprogramm und dem Text $PTYCNMEAON<cr><lf> die anderen Texte wieder einschalten. Im Bray-Terminal sendet man dazu $$PTYCNMEAON#013#010.

Anm. aus dem Forum: Das Einsammeln der Satelliten kann nach langer Stromlosigkeit und zwischenzeitlichem Transport des ausgeschalteten Moduls bis zu 12,5 Minuten dauern. Ordnungsgemäße Antenne und gute Sicht zum Himmel ab der Antennenposition natürlich vorausgesetzt. Näheres in den Unterlagen zum Modul.

Entwicklungsumgebungen

Mit CrossWorks for ARM von Rowley Associates und der Targeteinstellung EB40A können eigene Programme sowohl fürs RAM als auch fürs Flash-ROM entwickelt werden. Der Wiggler wird hier direkt unterstützt. Für eine optimale Ausnutzung der Hardware müsste das Target angepasst werden (FPGA/SDRAM überhaupt und Komplettnutzung des Flash-ROMs).

Unter Windows 98 / Cygwin kann GNUARM zur Programmentwicklung benutzt werden. Als Interface zwischen der GNUARM und dem NavMe-Modul (JTAG-Schnittstelle) kann ein Wiggler mit der OpenOCD oder der OCDRemote (bevorzugt) Software verwendet werden.

Als Flash-Programm steht zur Verfügung:

  • JTAG-O-MAT. Die Anpassungen der *.JOM Dateien an das NavMe-Speicherlayout ist im Forum beschrieben.

Als Monitor steht zur Verfügung:

Als Debugger stehen zur Verfügung:

  • OCDCommander (Standalone auf Assemblerebene)
  • OpenOCD und der Verbindung über "telnet localhost 4444" (Standalone auf Assemblerebene)
  • GDB/Insight über OpenOCD oder OCDRemote und der Verbindung über "Remote/TCP localhost 3333" (Assembler und Sourcecode-Ebene für eigene Programme)
  • Integrierter Debugger von CrossWorks for ARM (Assembler und Sourcecode-Ebene für eigene Programme)

Aus dem Internet

Windows:

Linux:

Andere:

To Do

Vieles, packen wir es an ;-)