Forum: Mikrocontroller und Digitale Elektronik SPI-Problem mehrere Slaves


von Philipp S. (sponk)


Lesenswert?

Hi,
ich bin momentan dabei mehrere ADNS-3080 als Slaves per SPI über einen 
Renesas M16C/6N4 Microcontroller anzusteuern.

Mit einem der Maussensoren funktioniert das ganze nach einigen Querelen 
wunderbar.
Doch sobald ich jetzt einen zweiten dazuschalte klappt es nicht mehr.


Und zwar sei hierbei erwähnt, dass man zum Ansteuern eines ADNS-3080 
neben den üblichen 4 SPI-Leitungen (SCLK, MOSI,MISO, NCS) auch noch 
RESET und NPD (PowerDown) mit dem Microcontroller verbinden muss.

Sobald nun der zweite Sensor Power hat (also mit Spg.quelle verbunden 
ist und NPD auf Low (ist n low-active Pin) ist, funktioniert die 
Übertragung nicht mehr (vollkommen egal ob die anderen Leitungen des 
zweiten Sensors verbunden sind oder nicht).

Dabei sehen die Spannungsverläufe von SCLK, MOSI, NCS, RESET und NPD 
swoeit ich das mit dem mir zur Verfügung stehenden Oszi (leider kein 
digitales)beurteilen kann so aus wie sie sollten.
Nur MISO ist (abgesehen von ein bisschen Rauschen) permanent auf LOW.

Erstaunlicher Weise kann auch auch dann nicht einen der beiden Sensoren 
ansteuern/auslesen wenn ich vom anderen alle Leitungen abgesehen von der 
NPD-Leitung entferne.

Ich kann mir das alles mit meinem bescheidenen Wissen einfach nicht 
erklären.
Vielleicht hat ja einer von euch ne Idee woran das liegen könnte. Wäre 
echt verdammt wichtig!


Hier noch ein paar Details zur Beschaltung:

Die SCLK & MOSI Leitungen "splitte" ich (nach einem Spannungsteiler zum 
Anpassen d. Spg auf die vom ADNS benötigten 3,3V) einfach auf und führe 
sie zu den beiden Sensoren

NCS1,RESET1,NPD1,NCS2,RESET2,NPD2 haben jeweils eigene Leitungen 
(ebenfalls mit Spannungsteilern)

MISO wird über einen 74HCT125 von 3,3V nach 5V gewandelt und geht dann 
zum µC. Hierbei habe ich die Leitungen von den beiden Sensoren momentan 
vor dem Pegelwandler zusammengeführt.
EIn getrenntes "UPgraden" der Spannung mit anschließdendem 
Zusammenführen der Leitungen hat auch nicht funktioniert.


Sollte ich irgendwelche wichtigen Infos vergessen haben, bitte einfach 
drauf hinweisen :)

Gruß Philipp

von Peter II (Gast)


Lesenswert?

Hi,

"Hierbei habe ich die Leitungen von den beiden Sensoren momentan
vor dem Pegelwandler zusammengeführt."

Die MISO sind nicht tri-state. Also einfach zusammenführen führt zu LOW.
Schaltplan/Skizze wäre besser als der ganze Text!

von Philipp S. (sponk)


Lesenswert?

Peter II schrieb:
> Die MISO sind nicht tri-state. Also einfach zusammenführen führt zu LOW.

Okay. Klingt logisch, das hatte ich bisher ignoriert.
Ich hatte die OE-Pins des HCT125 mit GND verbunden und dadurch die 
Ausgänge permanent enabled.
Im Endeffekt müsste sich doch mein Problem beheben lassen, wenn ich 
einfach die OE-Pins des HCT125 mit den jeweiligen NCS Leitungen 
verbinde, oder?
Würd es ja direkt ausprobieren, aber komm erst morgen früh wieder an die 
Uni wo die Schaltung aufgebaut is^^

Peter II schrieb:
> Schaltplan/Skizze wäre besser als der ganze Text!

Schaltplan existiert bisher nur in meinem Kopf :D Aber ich muss mich da 
so oder so ma dranmachen und einen erstellen. Werd den gegen später noch 
anfügen, sobald er fertig is^^

von Philipp S. (sponk)


Angehängte Dateien:

Lesenswert?

sodele... hier jetz mal der Schaltplan mit dem momentanen Aufbau. Ich 
hoff ich konnt ihn halbwegs übersichtlich gestalten.
Tipps was man beim Erstellen besser machen kann sind immer willkommen :)


Im Vergleich zum Schaltplan würd ich nun !G1 und !G2 mit NCS1 bzw. NCS2 
verbinden, sodass die Ausgänge hochomig sind solange der Slave nicht 
gerade aktiv ist.
Passt soweit?

von Philipp S. (sponk)


Lesenswert?

Habe das mal getestet, wenn ich die OE Pins (!G1 und !G2) mit NCS 
verbinde und es funktioniert leider immer noch nicht.
Das NCS gleichzeitig bei mehreren Slaves auf 0 (aktiv) ist kann ich 
ausschließen.

Wenn ich hier das Spiel aus dem ersten Posting wiederhole: d.h. NPD beim 
einen Sensor entferne, dann funktioniert der andere Problemlos.
Wenn ich hingegen nur MISO entferne, dann funktioniert der andere 
trotzdem nicht.

Könnte das eventuell darauf schließen, dass der Microcontroller einfach 
nicht genügend Strom am MOSI oder SCLK Pin ausgibt um mehrere 
Maussensoren anzusteuern?

von GB (Gast)


Lesenswert?

Fehler im Schaltplan:

MISO-Pins sind Open Drain (damit mehrere Slaves auf einer Leitung senden 
können).
Also beide MISO-Leitungen auf einen Eingang am 74HCT125, /Pull-Up an 
3,3V nicht vergessen/, einen Ausgang an den MISO-Pin des Controllers.
Voila, funktioniert.

von Philipp S. (sponk)


Angehängte Dateien:

Lesenswert?

Wollte das gerade mal testen, aber jetzt ist beim Versuch der 
Microcontroller wohl in irgendner Art&Weise beschädigt worden. VCC am µC 
sind nur noch 1.6V, die Powerlampe des EVB leuchtet nicht mehr, und an 
den restlichen Ausgängen liegt keine SPg. mehr an.

Hatte den angehängten Schaltungsaufbau kurz in Betrieb, nachdem ich 
gesehn hab, dass es nich klappt aber nach insg. <20 sec. wieder 
abgetrennt, ohne was gemerkt zu haben.

Als ich an den µC danach wieder Spannung angelegt hab hat er nicht mehr 
richtig funktioniert.
Hat der so viel Strom gezogen, dass es ihn zerschossen hat, oder was 
könnte da passiert sein?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.