da ich seit einigen Monaten vermehrt mit Microcontrollern bastle und dabei oft mit Bussystemen wie I2C, SPI oder Datenleitungen mit I2S-Signalen oder PDM/PWM in Berührung komme, brauche ich ein Gerät um diese Signale auszulesen und sichtbar machen zu können. Die normale Rundfunkwerkstatt mit Analog Oszi oder 2 Kanal DSO hilft hier wenig weiter. Zwar kann man am Oszi sehen das ein Signal auf der Signalleitung anliegt, mehr aber auch nicht. Für die Fehlersuche zum Beispiel an einem VS1053 ist das zu wenig. Die Lösung ist ein Logic Analyzer (kurz LA). Ich besitze zwar einen LA aus den 80iger Jahren, aber dieser ist heute dank fehlendem Parallel Port an meinen Computern nicht mehr nutzbar. Im Internet fand ich sehr günstige Alternativen mit heute üblichen USB2 und USB3-Port. Im Preissegment von 10 Euro bis knapp 100 Euro sind verschiedene Modell aus chinesischer Fertigung beziehbar. Die günstigsten LA (zirka 10 Euro) kommen mit USB2-Schnittstelle und Sampleraten von 25 MHz auf 8 Kanälen daher. Die größeren und etwas teureren Geräte haben meist USB3-Schnittstelle und Sampleraten von 100 MHz auf 8 oder 16 Kanälen. Praktisch wären noch ein oder zwei zusätzliche Analogkanäle, aber dies ist in dieser Preiskategorie wohl nicht mehr machbar.
Der Lieferumfang eines China-LA sieht typischerweise so aus:
Die roten Prüfspitzen sind nicht von überzeugender Qualität, sie funktionieren für den Moment, werden aber sicher nicht lange halten. Die restlichen Prüfkabel und das USB-Kabel entsprechen dem üblichen Standard.
Der LA braucht natürlich noch eine Software. Hier wird auf das im Hobbybereich durchaus bekannte Pulseview verwiesen. Dieses Programm läuft auf praktisch allen Rechnern und Betriebssystemen die es gibt. Es ist OpenSource und kostenlos von der Projektseite https://sigrok.org/wiki/PulseView downloadbar.
Eine typische Anwendung des LA könnte das Auslesen der Komunikations am SPI-Bus sein. Hier am Beispiel des LIS3DSH, eines 3-Achsen-Beschleunigungssensors, auf einem STM32 Eval-Bord. Dieser Beschleunigungssensor kann zum Beispiel in digitalen Wasserwaagen oder zur Bestimmung der Fluglage eines Modellhubschraubers genutzt werden.
Auf dem Eval-Bord sitzt der LIS3DSH an den Ports PE0/1 und 3 (Chip Select), PA5 (CLK), PA6 (DO), PA7 (DI). Hier ein Bild des mit dem LA verkabelten Buses auf dem Testboard.
Die Kommunikation (zum Beispiel Auslesen eines Registers) zwischen STM32F4 und LIS3DSH erfolgt nach Datenblatt so:
Ein typisches 16-Bit-Frame auf dem SPI-Bus wird durch fallenden Pegel der CS (Chip-Select)-Leitung eingeleitet, dadurch wird gleichzeitig ein Taktsignal (SPC) für 16 Bits erzeugt. Auf der Datenleitung vom Master (STM32F4) zum Slave (LIS3DSH) wird in den ersten 8-Bits des Frames das Kommando (lesen/schreiben) und eine Registeradresse gesendet. Das Bit "1" markiert durch seinen Wert (MSB!) ob vom folgenden Register gelesen oder ob aufs Register geschrieben werden soll. Lesend ist hier 1 oder High-Pegel. In den folgenden 7 Bits wird die Adresse des entsprechenden Registers numerisch kodiert. Die letzten 8 Bits auf der Slave-Data-In Leitung sind im Lesebetrieb ohne Bedeutung, während auf der Slave-Data-Out Leitung der Wert des Registers geschrieben wird. Danach geht CS wieder auf High.
Als nächstes möchten wir die Chip-ID (WHO_AM_I) aus dem Register 0x0F (hex) auslesen, um feststellen zu können ob der LIS3DSH vorhanden und auf Empfang ist. Im Datenblatt sieht man dazu auch den binären Wert der Registeradresse, sowie die zu erwartende Antwort (0011 1111) oder 0x3F.
Mit unserem LA und Pulseview schauen wir ob das Signal auch wirklich über den Bus gegangen ist. Direkt nach dem Abhorchen des SPI-Bus erhalten wir folgendes Bild.
Auf dem ersten Blick sieht es doch super aus. Pulseview beinhaltet zudem mehrere Dekoder. Schaltet man den Dekoder für den SPI-Bus auf, werden die oberen Potentiale der einzelnen Leitungen in "begriffliche" Werte (unten) übersetzt. Die gedankliche Interpretation sieht folgend aus.
Wir haben uns also perfekt ans Datenblatt gehalten und die Daten sowohl zum, also auch vom LIS3DSH logisch richtig übertragen. Hätten wir einen Fehler in der Softwareimplementierung oder in der Hardware gehabt, hier wäre er sichtbar geworden.
Das freie und oben genutzte Programm Pulseview hat neben dem SPI-Dekoder noch viele andere Dekoder zu bieten.
So ausgestattet ist die Fehlersuche in Microcontrollerschaltungen leicht. Wer natürlich den Datenverkehr eines schnellen DDR-Speichers lesbar machen muß, der benötigt viel höhere Sampleraten und mehr Kanäle.
!!!
Fotos, Grafiken nur über die
Upload-Option des Forums, KEINE FREMD-LINKS auf externe Fotos.
!!! Keine
Komplett-Schaltbilder, keine Fotos, keine Grafiken, auf denen
Urheberrechte Anderer (auch WEB-Seiten oder Foren) liegen! Solche Uploads werden wegen der Rechtslage kommentarlos gelöscht!
Keine Fotos, auf denen Personen erkennbar sind, ohne deren schriftliche Zustimmung.
BernhardWGF: Die normale Rundfunkwerkstatt mit Analog Oszi oder 2 Kanal DSO hilft hier wenig weiter. Zwar kann man am Oszi sehen das ein Signal auf der Signalleitung anliegt, mehr aber auch nicht.
ausgenommen neugierige alte Tek die auch vor sowas nicht haltmachen Bild: Tek7603 (analoger Oszi) mit einem 7D01 Logikanalysator Einschub
so einen "Salea-Clone" mit "max. 24 MHz" und USB2-Anschluss habe ich auch seit einiger Zeit. Hat in einem Online-Marketplace um die 15 Eur inkl. Versand aus UK gekostet. Ich habe ihn bisher nur verwendet, um in Selbstbauprojekten die SPI-Kommunikation mit verschiedenen Peripherie-Chips zu debuggen. Also ziemlich genau so wie in deinem Beispiel.
Dabei habe ich aber keinen SPI-Clock > 4 MHz verwendet, bzw. für die Messung diesen entsprechend runter gesetzt, da zumindest an meinem Rechner die spezifizierte Abtastrate von 24 MHz (oder 25?) nicht erreicht wird.
Das Clone-Gerät besteht vor allem aus einem USB Device Controller von Cypress, mit parallelem 8 bit Interface. Dort hängen, ich glaube über einen Bustreiber der 74er -reihe, die Messeingänge dran. Die Schaltschwellen sind nicht einstellbar, so dass es zumindest bei Logiksignalen < 3 V Probleme geben dürfte. Deshalb hatte ich schon mal überlegt, eine entsprechende Eingangsschaltung mit einstellbaren Komparatoren dran zu basteln.
Ich verwende bisher die originale Software von Salea mit dem Clone.
Die nächst besseren, d.h. vor allem schnelleren Geräte, die ich kenne, sind die Salea Logic 8 (100 MS/s) bzw. 8 Pro (500 MS/s), zu ca. 250 bzw. 500 Eur.
Zitieren:Tek7603 (analoger Oszi) mit einem 7D01 Logikanalysator Einschub
Immerhin schon 100 MHz... aber mit den paar Speicher-Worten kommt man bei seriellen Bussen nicht weit. Aber damals war ja das meiste Schnelle noch parallel.
Damals war der 7D01 schon was richtig gutes. Ich suche noch nach den zugehörigen Probes dafür. Er arbeitet mit einem großen Rudel ECL-Chips. Die kriegen zwar richtig Temperatur bei der Arbeit, das hohe Tempo wird aber gehalten. Ein 7D01 betreibt wirklich sehr viele IC. Dieser hier hat einen Displayformatter DF2 angeflanscht, damit nutzt er er alles aus was er kann. Die Einschübe sind eine gemeinsame Einheit, 3 Schächte breit.