Hallo zusammen,

ich hab an meinem Raspi ein AD/DA Board [1] angeschlossen. Mit der Herstellerfirmware läuft alles i.O. Klar.

Jetzt habe ich mir gedacht, dass ich, just for Fun, einen eignen Treiber schreibe anhand des Datenblattes [2]. Nachdem ich den RESET Pin kurz auf 0 gezogen habe, läuft DRDY schon los und zeigt A/D Wandlungen. Nur warum? Wenn ich den PDWN/SYNC Pin auf 0 ziehe hört er auf. Schicke ich über SPI ein STANDBY Command, hört er kurz auf, es geht aber gleich weiter. Ich wollte zuerst den One-Shot Mode aus dem Datenblatt nehmen (RDATA) und später dann RDATAC nutzen.

Was ich überhaupt nicht verstehe, das der gleich los legt. Wenn ich mit dem Auslesen des Wertes zu lange brauche sind die Daten schon ungültig weil DRDY schon wieder auf 1 gegangen ist. Jetzt habe ich mit dem Oszi auf CH1=DRDY und auf CH2=PWDN/SNYC gelegt und hier angehängt. Natürlich habe ich auch MOSI/MISO/SCLK/CS angesehen. CS=1, SCLK=0, MOSI, MISO=0.

Was sich auch schon raus gefunden habe: Im Treiber des Herstellers nutzen sie SCLK=3.2MHz. Laut Datenblatt kann er aber nur 2.5MHz. (SCLK(low)=200ns + SCLK(high)=200ns) -> 2.5MHz

Ich steh voll auf dem Schlauch. Wie bekomme ich eine einzelne Wandlung hin, so dass die Daten garantiert gültig sind und der Chip sie nicht ungültig macht weil er selbst DRDY wieder auf 1 zieht?

[1] https://www.waveshare.com/wiki/High-...on_AD/DA_Board
[2] https://www.ti.com/product/ADS1256
Klicke auf die Grafik für eine größere Ansicht

Name:	ADS1256.jpg
Hits:	8
Größe:	31,6 KB
ID:	35261