Manipulation des Mikrocontroller-SPI

AD-Umsetzer mit Nicht-Standard-SPI einsetzen

11. April 2022, 9:55 Uhr | Steven Xie
© pattilabelle – stock.adobe.com

Damit ein Mikrocontroller mit einem AD-Umsetzer, der keine serielle Standardschnittstelle (SPI) verwendet, kommunizieren kann, muss das Standard-SPI des Mikrocontrollers manipuliert werden. Dafür bieten sich vier verschiedene Lösungen an.

Viele aktuelle Präzisions-Analog/Digital-Umsetzer (ADU) verfügen über eine serielle Peripherieschnittstelle (SPI) oder über eine andere serielle Schnittstelle zur Kommunikation mit einem Mikrocontroller, Prozessor, DSP oder FPGA. Die Controller schreiben oder lesen ADU-interne Register und lesen die digitalen Werte des Analogsignals. Das SPI erfreut sich aufgrund der einfachen Leitungsführung auf der Leiterplatte und der höheren Taktrate im Vergleich zur parallelen Schnittstelle steigender Beliebtheit. Außerdem ist es einfach, einen ADU mit einer Standard-SPI-Schnittstelle an den Controller anzuschließen.

Anbieter zum Thema

zu Matchmaker+
Der AD7768 arbeitet als serieller Master mit zwei Data Output Pins.
Bild 1. Der AD7768 arbeitet als serieller Master mit zwei Data Output Pins.
© Analog Devices

Einige neue ADUs sind mit einem SPI ausgestattet, wogegen bei anderen ein nicht standardisiertes Interface, z.B. 3- oder 4-Draht-SPI, als Slave vorhanden ist, um eine höhere Durchsatzrate zu erreichen. Zum Beispiel verfügen die ADUs der Familie AD7616, AD7606 und AD7606B von Analog Devices über zwei oder vier SDO-Leitungen für einen höheren Datendurchsatz im seriellen Betrieb. Die ADUs der Familien AD7768 (Bild 1), AD7779 und AD7134 haben mehrere SDO-Leitungen und arbeiten als SPI-Master. Die Entwicklung von Mikrocontroller-SPIs für die Konfiguration und das Lesen der digitalisierten Werte gestaltet sich bei diese ADUs oft schwierig.

Standard-MCU-SPI-Anschluss an einen ADU

Standard-SPI-Verbindung von einem Mikrocontroller (Master) zu einem ADU (Slave).
Bild 2. Standard-SPI-Verbindung von einem Mikrocontroller (Master) zu einem ADU (Slave).
© Analog Devices

Beim SPI handelt es sich um ein Bus-System zur synchronen, seriellen Datenübertragung zwischen einem Master und einem oder mehreren Slaves. Die Übertragung der Daten erfolgt im Vollduplex. Die Daten vom Master oder vom Slave werden auf die steigende oder fallende Taktflanke synchronisiert. Master und Slave können gleichzeitig Daten übertragen. Bild 2 zeigt eine typische 4-Draht-SPI-Schnittstellenverbindung.

Um die Kommunikation über das SPI zu starten, muss der Controller das Taktsignal senden und den ADU auswählen. Dazu wird das CS-Signal aktiviert, das normalerweise ein Active-Low-Signal ist. Da das SPI eine Vollduplex-Schnittstelle ist, können sowohl der Controller als auch der ADU gleichzeitig Daten über die MOSI/DIN- beziehungsweise MISO/DOUT-Leitungen übertragen.

Beispiel für ein SPI-Timing-Diagramm mit den Daten- und Taktleitungen. Bei CPHA=0 werden die Daten bei der ersten Flanke übernommen, bei CPHA=1 bei der zweiten Flanke.
Bild 3. Beispiel für ein SPI-Timing-Diagramm mit den Daten- und Taktleitungen. Bei CPHA=0 werden die Daten bei der ersten Flanke übernommen, bei CPHA=1 bei der zweiten Flanke.
© Analog Devices

Das SPI des Controllers bietet dem Anwender die Flexibilität, die steigende oder fallende Flanke des Taktes zum Abtasten und/oder Übertragen der Daten zu wählen. Für eine zuverlässige Kommunikation zwischen Master und Slave müssen Entwickler die Timing-Spezifikationen der digitalen Schnittstelle sowohl des Mikrocontrollers als auch des ADU beachten.

Wenn das SPI des Mikrocontrollers und die serielle ADU-Schnittstelle im Standard-SPI-Timing-Modus arbeiten, können Entwickler problemlos ihre Schaltung und Leiterplatte entwerfen und die Firmware zur Steuerung entwickeln. Es gibt jedoch neue ADUs mit einer seriellen Schnittstelle, die nicht das typische SPI-Timingmuster unterstützt.

Timing-Diagramm der Datenausgabe nur auf DOUT0 des AD7768 wenn die beiden FORMAT-Anschlüsse mit den Pegeln 11 oder 10 angesteuert werden.
Bild 4. Timing-Diagramm der Datenausgabe nur auf DOUT0 des AD7768 wenn die beiden FORMAT-Anschlüsse mit den Pegeln 11 oder 10 angesteuert werden.
© Analog Devices

Dagegen scheint es für einen Mikrocontroller oder einen DSP nicht möglich zu sein, Daten über die serielle Schnittstelle des AD7768 zu lesen, der ein SPI mit nicht standardmäßigem Timing hat (Bild 4).

Um das Standard-SPI eines Mikrocontrollers so zu manipulieren, dass damit eine Kommunikation mit einem ADU wie dem AD7768 ohne standardmäßigen SPI-Port möglich ist, bieten sich vier verschiedene Lösungen an:

  1. Mikrocontroller als SPI-Slave, verbunden mit einem ADU als SPI-Master über eine DOUT-Leitung.
  2. Mikrocontroller als SPI-Slave, verbunden mit einem ADU als SPI-Master über zwei DOUT-Leitungen.
  3. Mikrocontroller als SPI-Slave, verbunden mit einem ADU als SPI-Master über DMA.
  4. Mikrocontroller als SPI-Master und SPI-Slave zum Übertragen der Daten auf zwei DOUT-Leitungen.

  1. AD-Umsetzer mit Nicht-Standard-SPI einsetzen
  2. Lösung 1: Lesen der Daten des ADU AD7768 mit dem µC STM32F429 über eine DOUT-Leitung
  3. Lösung 2: Lesen der Daten des ADU AD7768 mit dem µC STM32F429 über zwei DOUT-Leitungen
  4. Lösung 3: Lesen der Daten des ADU AD7768 mit dem µC STM32F429 über DMA
  5. Lösung 4: Lesen der Daten des ADU AD7768 mit dem µC STM32F429 als SPI-Master und SPI-Slave über zwei DOUT-Leitungen.
  6. Code-Beispiele zum Download

Verwandte Artikel

Analog Devices GmbH