www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SPI0 MOSI-Leitung an LPC2148 high wenn idel


Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mir ein OSZI ausgeborgt, weil die Schaltung nicht funktionieren 
wollte. Nun musste ich feststellen, dass das MOSI-Signal nach 
Übertragung eines Worts, also im Ruhezustand, auf den high-Zustand 
wechselt. Normalerweise sollte zwischen den Übertragungen der 
Low-Zustand anliegen. Ich konnte weder im Datenblatt, noch im Schaltplan 
- Pullup - etwas finden. (Ich verwende das OLIMEX Board hier aus dem 
Shop).

Jemand eine Ahnung wie sowas zustande kommen kann?
Ich tippe auf Software/Konfigurations-Problem im ARM.

Grüße
Mario

Autor: SPI-User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die MOSI Leitung behält den Zustand des zuletzt übertragenen
Bits bei. Einen Ruhezustand gibt es nur bei SCK.
Wenn es immer 0 sein muß nach der Übertragung dann
schalte den Pin anschließend im Pin connect block auf den GPIO
Controller.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tipp!
Ich übertrage 16Bit Wörter MSB-first mit folgendem Inhalt:
0x0F20 und abwechselnd 0x0f40. Also jeweils "0" am Ende. Wenn der ARM 
tatsächlich das letzte Bit "stehen" läßt klingt das doch eigenartig.

Noch jemand welche Ideen woran das liegen könnte?

Grüße
Mario

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pull Up Widerstand irgendwo? Evtl intern?

Im prinzip ist der Pegel der MOSI Leitung aber sowieso vollkommen egal, 
solange CS nicht anliegt

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias,

hab ich gecheckt. Lt. Schaltplan und lt. ARM Datenblatt gibts nirgends 
Pullup's. Das Problem mit dem MOSI-zustand ist, dass ich einen 
exotischen Chip ansteuere. Der hat kein CS, dafür aber erwartet er ein 
low-Signal zwischen den Übertragungen :(.
Der Grund für die SPI-Übertragung ist, dass ich (ohne Oszi) keine 
vernünftige "delay/sleep/wait"-Funktion gefunden hab um 250kbps 
Übertragungsgeschwindigkeit einzuhalten.
Also wenn jemand so eine Funktion im GCC kennt (ohne gleich 
Timer-Register zu verbraten), wäre eine alternative für mich. ansonsten 
wird wohl die Lösung von SPI-user zum Zug kommen.

Mario

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.