Verbinden von SDI und SDO mit einem einzelnen DATA-Pin

Auf dem Beschleunigungsmesser MMA7455 gibt es nur einen DATA-Pin, der sowohl für die Eingabe als auch für die Ausgabe verwendet wird. Im Handbuch steht, dass ich diesen Pin mit SDI und SDO verbinden soll. Nun, das ist alles in Ordnung, aber auf meinem Chip sind dies zwei separate Pins.

Wenn ich SDI- und SDO-Pins mit dem DATA-Pin verbinde, gehen die Daten, die aus SDO fließen, nicht auch in den SDI-Pin? Würde das keine Probleme machen?

Gibt es eine Pufferung, die möglicherweise die Daten speichert, die über SDI eingehen? (Also kann ich vielleicht nach dem Senden von etwas aus SDO den Puffer bei SDI löschen, um zu vermeiden, dass ich das gerade Gesendete lesen kann).

Geben Sie hier die Bildbeschreibung ein

Antworten (2)

Basierend auf dem Bild scheint es, dass Sie ein Breakout-Board/Modul für den MMA7455 von Parallex haben? Der Chip selbst ermöglicht sowohl 4-Draht- als auch 3-Draht-SPI, aber bei diesem Modul ist nur der 3-Draht-Modus aktiviert.

Aber das ist nicht wirklich ein Problem. Die Sache mit dem 3-Draht-Modus ist, dass er Halbduplex ist und nur in eine Richtung gleichzeitig überträgt. Und dieses Gerät ist ein Slave-Gerät, es sendet nicht zu jeder Zeit willkürliche Daten. Indem Sie sdi und sdo an denselben Pin anschließen, müssen Sie nur den sdo-Pin (Tristate/Eingabemodus) freigeben, wenn Sie erwarten, Daten zu lesen. Sie steuern die Uhr , damit Sie steuern, wann und wie schnell der Beschleunigungsmesser Daten sendet. Sie bestätigen den cs-Pin, Sie senden die Registeradresse mit dem Lesebit, und bevor Sie mit dem Eintakten der Daten beginnen, geben Sie den SDO-Pin frei. Sie löschen Ihren Puffer, dann takten Sie die Daten ein. Wenn Sie nicht bereit sind, ticken Sie nicht die Spi-Uhr.

Was Sie tun möchten / müssen, ist auch einen Blick auf das Datenblatt des Chips zu werfen, nicht nur auf das Datenblatt des Moduls.

Bei dieser Art von Chip hat es keinen großen Vorteil, das eingebaute SPI-Peripheriegerät des Mikrocontrollers zu verwenden. Schließen Sie einfach den Beschleunigungsmesser an einige Allzweck-IO-Pins an und schreiben Sie Software, um die im Zeitdiagramm des Datenblatts gezeigten Wellenformen zu erzeugen. Bit-Bang-Stil!

Oder verwenden Sie stattdessen den I2C-Modus.

Es ist wahr, dass ein Beschleunigungsmesser nicht in der Lage ist, so viele Daten zu produzieren, dass die ~4-fache Verlangsamung durch die Verwendung von Bit-Bang-I/O ein Problem darstellen würde, und der Vorschlag, Bit-Bang-I/O zu verwenden, ist gut. Es ist jedoch erwähnenswert, dass die Frage genauso auf einige andere Geräte zutrifft, die möglicherweise genügend Daten liefern oder verbrauchen, um die Leistung zu einem Problem zu machen.