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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.