Forum: Mikrocontroller und Digitale Elektronik TDA 8444 Ansteuerung


von Thorsten (Gast)


Lesenswert?

Hallo,

ich habe einen TDA 8444 D/A Wandler mit I2C Bus und werde mit der
Ansteuerung des I2C Protokolls nicht schlau aus dem Datenblatt.

Hat jemand Erfahrung mit dem Ansteuern dieses IC's.Wie man die Werte
zu dem Baustein überträgt(erst den Kanal dann den Wert) o.ä. ?

Danke im vorraus!
Thorsten

von Kai Markus Tegtmeier (Gast)


Lesenswert?

Habe das IC zwar noch nicht selbst angesteuert, mir aber gerade mal das
Datenblatt S.5/6 angesehen. Ich interpretiere das so:

Start Command

1. Datenbyte: 0b 0 1 0 0 A2 A1 A0 0   A2, A1, A0 = I2C-Adresse

TDA sendet Acknowledge

jetzt gibts mehrere Möglichkeiten:

2. Datenbyte: 0b 0 0 0 0 S3 S2 S1 S0 = DAC-Startadresse

Die nun folgenden Bytes sind die Werte, die in die DACs,
beginnend mit dem DAC mit der Startadresse S3 S1 S1 S0 geschrieben
werden. Nach jedem Byte wird die Adresse automatisch um 1 erhöht.

Nach jedem Datenbyte sendet der TDA ein Acknowledge.

Am Ende der Übertragung sendet der uC eine Stop Condition.


oder die andere Betriebsart:

2. Datenbyte: 0b 1 1 1 1 S3 S2 S1 S0 = DAC-Adresse

alle folgenden Bytes werden immer an den DAC mit der Adresse S3S2S1S0
gesendet. Die Adresse wird NICHT erhöht.

Am Ende jedes Bytes sendet der TDA ein Acknowledge.
Am Ende der Übertragung sendet der uC eine Stop condition.

Ganz genau beschrieben steht das in S.5 unten, S.6 oben im Datenblatt.

mfG
KMT

von Smolder (Gast)


Lesenswert?

Ja,so kann ich es bestätigen denn ich nutze den 8444 seit Jahren so.

Kai hat es schon komplett gesagt aber ich versuche mal ne andere
Darstellung.






Möglichkeit 1:
--------------


->Startbedingung
->Ack vom 8444
->Adressbyte (4 Bit Fest + 3 Bit Einstellbar + feste 0)
->Ack vom 8444
->Instruktions und Kanalbyte (4 bit Instruktionen und 4 Bit Kanal)
->Ack vom 8444
->Datenbyte (Die beiden obersteb Bits werden ignoriert da DAC 6 Bittig
ist)
->Ack 8444
->Stop


Möglichkeit 2:
--------------

Wie Möglichkeit 1 aber zwischen dem letzten "Ack" und dem Stop kommen
noch beliebig viele Datenbytes mit folgendem "Ack" um fortlaufend ohne
neue Starbedingung und Kanalwahl daten zu übertragen .
Das bringt einen guten Geschwindigkeitsvorteil.

Möglichkeit 1 braucht immer 3 Bytes und 5 Start-,Stop-,Ack-Vorgänge Pro
Datensatz wärend Methode 2 bis auf den Start der Übertragung nur ein
Datenbyte plus Ack-Vorgang pro Datensatz braucht.

Das ist über den Daumen mal eben mehr als das Dreifache an Durchsatz.




Folgendes gilt nur für Methode 2.
Bei Methode 1 wird ja immer nur ein Byte auf einem bestimmten Kanal
übertragen.

Die Instruktionsbits (4 Stück) geben an ob der Kanal Incrementiert oder
fest angewählt wird.

Die erste Stelle sind die Instruktionsbits und die zweite die Kanäle.

Bei 00 bis 0F wird ausgehend vom Startkanal bei jedem Byte der Kanal um
eins erhöht.
Fängst du also mit Kanal 3 (03) an dann geht der nächste Datensatz an
kanal 4,danach an 5,6 usw. bis er wieder bei 0 anfängt usw.

Bei F0 bis FF wird die Übertragung auf den eingestellten Kanal
fixiert.
Jedes Datenbyte geht also nur an diesen Kanal.
zb. F6 gibt an das alle Daten der Übertragung auf kanal 6 ausgegeben
werden.



Das wars eigentlich schon.

Jetzt hats du 2 Erklärungen.
Eine wird hoffentlich helfen.



PS:

Die Startbedingung 2 oder 3x hintereinander auszuführen hilft gut gegen
"Aufmerksamkeitsfehler" auf dem Bus oder bei Störungen

von Thorsten (Gast)


Lesenswert?

Jo danke für die Antworten, hat mir sehr geholfen!

Thorsten

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.