SPI Kommunikation mit Star 12 (S12DG128)

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
alex_fhf
Posts: 12
Joined: Mon Nov 07, 2005 3:51 pm
Location: Rietheim

SPI Kommunikation mit Star 12 (S12DG128)

Post by alex_fhf »

Hallo,

zur Übergabe diverser Unterbus Nachrichten, nutze ich einen Star 12 aus dem Hause Motorola. Dieser Baustein besitzt u.a. 2 SPI Schnittstellen. Die SPI0 funktioniert tadellos - mein PIC (Master) freut sich über regen Datentransfer. Leider bekomme ich in der SPI1 keinerlei Nachrichten.

Der IOW24 wird folgendermaßen initialisiert:
  • 0x08
    0x00 // SPI aus

    0x08
    0x01 // SPI an
    0x03 // CPOL[3] = 0; CPHA = 0; DRMSB = 1; DRLSB = 1;
    // SPI mit 62,5kHz Clock (Ausreichend).
nun wird über das Delphi Programm (Beispiel SDK) das folgende übertragen:
  • 0x09
    0x06 // 6 Nutzbytes, Ignore DRDY, No DRDY, No SS
    0xXX
    0xXX
    0xXX
    0xXX
    0xXX
    0xXX
Die MOSI Line zeigt mir schön und in gewohnter Weise die übertragenen Bytes - auch die CLK liegt an. Die MISO Line bleibt auf 5V - hat kleine "Wellen".

Meinen µC habe ich angewiesen, auf jede SPI1 Nachricht mit einer 0x55 zu antworten - also einfach ein bißchen Verkehr auf der MISO Leitung.

Weder SPTEF noch SPTIF (die Interrupts des SPI1) werden angesprungen.

Irgendwelchen Rat?


Verwendete Hardware:
  • - IOW24 (StarterKit 1.2.1)
    - Star 12 DG128 mit 2 SPI (SPI0,SPI1) SPI1 für USB/PC

Code: Select all

Arrival of Plain I/O (Serial=00000B14)
Arrival of Complex Interfaces (Serial=00000B14)
W 08  00 00 00 00 00 00 00 
W 08  01 03 00 00 00 00 00 
W 09  01 03 00 00 00 00 00 
R 09  01 FF 00 00 00 00 00 
W 09  01 03 00 00 00 00 00 
R 09  01 FF 00 00 00 00 00 

W 09  02 03 05 00 00 00 00 
R 09  02 FF FF 00 00 00 00 
W 09  02 03 05 00 00 00 00 
R 09  02 FF FF 00 00 00 00 
W 09  02 03 05 00 00 00 00 
R 09  02 FF FF 00 00 00 00 
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Also da der IOW24 die Signale CLK und MOSI anscheinend ordentlich von sich gibt sollte das Problem auf der anderen Seite liegen.

Was für eine Art Ausgang ist denn der MISO?
alex_fhf
Posts: 12
Joined: Mon Nov 07, 2005 3:51 pm
Location: Rietheim

Post by alex_fhf »

Hallo,

welche Art Ausgang ... hmm?

Könnten Sie vielleicht Präzisieren? ... Per Konfiguration der einzelnen Ports, welche ja teilw. doppelt und dreifach belegt sind, bin ich nun hingegangen und habe die nicht benötigten ...

... PWM

deaktiviert und durch aktivieren der SPI denn die Pins
Port P [0:4] wie folgt belegt

Slave Master
PP0 - MISO -> hier die MISO vom IOW
PP1 - MOSI -> hier die MOSI vom IOW
PP2 - SCK -> hier die Clk vom IOW
PP3 - SS/ -> auf Masse mit 3k9 gelegt
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

/SS einfach auf Low ziehen ist nicht unbedingt gut, einige SPI Implementierungen benutzen die Flanken von /SS. Abgesehen davon ist fraglich ob mit 3k9 der Pin auf low geht.
alex_fhf
Posts: 12
Joined: Mon Nov 07, 2005 3:51 pm
Location: Rietheim

Post by alex_fhf »

Der "Port" ansich misst sich *auf 0V*.

Bei der SPI0 Implementierung wurde der /SS0 über 1k0 runtergezogen auf Gnd. Hier scheint die Geschichte funktioniert zu haben.

Per Email habe ich Ihnen kurz einen Screendump geschickt.


Von einem Kollegen hörte ich, dass die MISO Line per 10k an Vcc gehängt werden sollte; aber nur unter der Voraussetzung, dass MISO nicht auf 5V liegt.

MISO = 5V
MOSI = 5V
CLK = 0V (wie in CPOL vereinbart).
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Und warum wird /SS nicht mit dem /SS des IOW24 verbunden?

Grundsätzlich ist festzustellen, dass CLK und MOSI Ausgänge des IOW24 funktionieren, also liegt das Problem auf der Gegenseite.

Der MISO Eingang des IOW24 hat intern einen Pullup Widerstand. Die Frage ist was für eine Art Ausgangstreiber auf der Gegenseite vorhanden ist.
alex_fhf
Posts: 12
Joined: Mon Nov 07, 2005 3:51 pm
Location: Rietheim

Post by alex_fhf »

Hallo,

hier kurz weitere Informationen:

-> /SS nun mit S12 verbunden

leider weiter keine Funktion auf Seiten des S12

-> die Ausgänge des S12 befinden sich nach Reset auf HiZ.

Ich werde mal für die restlichen Automotives die Lösung des Problems
posten, sobald sie mir vor die Füsse fällt (googelt). Es scheint so, als ob
der S12 DG128 / DG256B (hat! 2 SPI!) nicht richtig den Mode aktiviert.

SPI0 -> muss gemappt werden
SPI1 -> an den normalen für SPI vorgesehenen Pins.

SPI0 wird für einen weiteren Baustein (onboard) verwendet,
SPI1 -> hier sollte der IOW24 betrieben werden.

------------

An der gemappten SPI0 funktioniert die Kommunikation mit dem IOW24
einwandfrei - hier befinden sich als Ausgangstreiber pull-ups im Reset Zustand. SPI1 hat hier die Ausgänge im HiZ Zustand on reset.
alex_fhf
Posts: 12
Joined: Mon Nov 07, 2005 3:51 pm
Location: Rietheim

Lösung

Post by alex_fhf »

Hallo,

des Rätsels Lösung ist zum Greifen nahe:

Der MikroController von Freescale hatte in einer gewissen Baureihe (Mask Set) Probleme mit dem SPI Block. Unter anderem waren in der hier verwendeten Variante (MC9S12DG256B - 1K79X) die Pins von SCK und /SS vertauscht (SPI2); sowie diverse weitere Kleinigkeiten nicht ganz in Ordnung mit dem SPI Block.

An SPI0 funktioniert der IOW24 einwandfrei! Ich werde wohl schnell noch neue(re) Prozessoren bestellen müssen; und meinen Emulator umbauen :)

Kaufgründe:

-> SPI bis 2MHz (aktuell im 64kHz Betrieb - genügt!)
-> USB ca 600-750 Byte Datenübertragung (SPI-Mode Rep. $09)
-> Einfaches Programmiermodell -> Java,.NET,...
-> kein Treiber von Nöten ! Mac, Win, Linux!
-> echtes Plug & Play


dagegen:
-> FT232 kostet etwa die Hälfte
-> FT232 Kommuniziert per SCI <-> FT232 <-> USB <-> virt.COM
-> bestehendes Programm kann übernommen werden.
-> nicht unbedingt mehr Datenübertragung möglich.


Alles in Allem - bei größeren Stückzahlen egalisiert sich das Argument der Kosten - was sicherlich durch die - weniger - Stunden eines Programmierers noch schneller wett gemacht werden kann.
Post Reply