PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PLL-VCO über I²C vom PC aus steuern,Kommunikations-Problem



Brotspinne
27.03.2009, 12:35
Hallo RN Gemeinde,

ich habe aus einem alten Auto-Radio die Empfängerbaugruppe ausgebaut.
Darauf befinden sich zwei IC`s der TEA6810V (Front-end and PLL synthesizers) und der TEA6825T (PLL VCO).Der TEA6825T verfügt über eine I²C Schnittstelle um den TEA6810V mit der Referenz- Frequenz zu versorgen.Ich wollte nun den TEA6825T via I²C ansteuern um damit über den PC die Feinabstimmung der Radiofrequenz bzw. die Empfangsfrequenz zu wählen.Ich habe mir die Datenblätter beider Ic`s angeschaut,und versucth mit einem einfachen VB6 Programm die Slave ID (1100001) vom PC über RS232-I²C Koppler (http://www.horter.de/i2c/i2c-pc-seriell/pcseriell_1.html ) zu senden.Leider gelingt mir das nicht,entweder ist die Slave Id falsch oder ich habe einen Fehler in der Ansteueung bzw. im Programmcode.Vieleicht liest ja der eine oder andere von euch mehr aus dem Datenblatt heraus als ich,und kann mir helfen.

Datenblatt TEA6810V http://pdf1.alldatasheet.com/datasheet-pdf/view/19743/PHILIPS/TEA6810V.html
Datenblatt TEA6825T http://pdf1.alldatasheet.com/datasheet-pdf/view/19747/PHILIPS/TEA6825T.html

Das sind die beiden Datenblätter, und hier nochmal der VB6 Quellcode.


Dim istda As Boolean

Private Sub AdresseTxt_Change()

End Sub

Private Sub meinCom_onChangeE1()

End Sub

Private Sub SendenBtn_Click()
meinCom.initI2C
meinCom.startI2C
istda = meinCom.ausgebenI2C(AdresseTxt.Text)
If Not istda Then
MsgBox ("I²C-Sklave antwortet nicht auf Anfrage vom Meister-I²C!")
Else
meinCom.ausgebenI2C (WertTxt.Text)
End If
meinCom.stopI2C
End Sub

Private Sub Form_Load()
meinCom.open (1)
End Sub

Private Sub Form_Unload(Cancel As Integer)
meinCom.Close
End Sub

Private Sub WertTxt_Change()

End Sub


Ich hoffe der eine oder andere kann mir weiter helfen.

MfG Brotspinne

mare_crisium
27.03.2009, 19:54
Brotspinne,

dem Datenblatt nach ist die I2C-Adresse 1100 0010, also 0xC2. Das LSB ist im Datenblatt mit X markiert, weil es sich je nach Read- oder Write-Betrieb ändert.

mare_crisium

Brotspinne
27.03.2009, 23:27
Hallo mare_crisium,
Diese Slave ID habe ich auch schon probiert,ohne Erfolg.Also entweder ist die Software falsch oder ich mache einen Fehler.Ich lese und lese die Datenblätter und I²C Spezifikation aber komm nicht weiter.Ich werde mal suchen ob es ein Diagnoseprogramm gibt...!

mare_crisium
28.03.2009, 05:13
Brotspinne,

schade, ich dachte schon das wär's :-) . Nächster Tip: Die Pull-up Widerstände an SCL und SDA (10k an +5V) hast Du eingebaut?

mare_crisium

Brotspinne
28.03.2009, 11:12
Morgen mare_crisium,

ich habe den I²C-RS232 Konverter so aufgebaut wie oben im Schaltbild auf der Webseite zu sehen.Einzigste Änderung ich habe anstatt 270 Ohm Vorwiderstänbden für die LED`s 330 Ohm genommen.Aber das hat ja nichts mit den Signalen zu tun.Der Konverter macht ja nichts anderes als die RS232 Signalpegel von -3 bis -12 und 3 und 12 Volt in I²C Pegel umzuwandeln also 0V oder 5V (Low or High).Auf dem Konverter sind jumper womit man die Signale terminieren kann,indem man sie mit 4,7K gegen Masse zieht.Extra Pull-ups habe ich nicht, 10K habe ich auch schon oft gelesen aber ich geh davon aus das der Konverter ausreicht.Aber ich lass mich gern eines besseren belehren,Nur raus mit den Vorschlägen...!

MfG Brotspinne

mare_crisium
28.03.2009, 18:07
Nee, Brotspinne,

belehren will ich sicher niemanden ;-) ! Die angesprochenen Pull-up-Widerstände sind im Schaltplan als R4 und R5 (jeder 4,7kOhm) eingezeichnet. Jeder für sich kann mit einer Brücke aktiviert werden (JP1-1 und JP1-2). Diese Brücken müssen gesteckt sein. Die LEDs tragen zum Pull-up nichts bei; sie sind über die 7405 vom Bus entkoppelt. Die Pull-ups aber sind zwingend erforderlich (siehe z.B. dieses sehr informative Handbuch von NXP - früher Philips Semiconductors -

http://www.nxp.com/acrobat_download/applicationnotes/AN10216_1.pdf

(Seite 13, Slide 31).

Also, wenn die Brücken gesteckt sind, dann haben wir's höchstwahrscheinlich doch mit einem Softwareproblem zu tun.

Ciao,

mare_crisium

Brotspinne
28.03.2009, 22:51
Hallo mare_crisium, also das mit dem belehren habe ich eigentlich nicht böse gemeint.Ist nur ne Redewendung hier im üblichen Sprachgebrauch.

Also ich habe jetzt die Jumper für SDA und SCL gesetzt also werden über 4,7K gegen GND gezogen.Leider klappt das ansprechen des Bausteins mit dem Codesnipsel von oben nicht.Ich habs mit 11000010 probiert mit 11000011 ohne Erfolg.Wäre schön wenn man ein anderes Programm hätte um das nochmal zu Testen.
Ach ja mal ein paar Infos: Kabellänge vom RS232 zum I²C Koppler ca:20cm,Kabel vom Koppler zum Empfänger ca. 35-45cm,RTS von RS232 wird zu SCL für den I²C Bus,DTR u. DSR wird zu SDA für den I²C.Ja ich überprüfe die Verkabelung nun zum 4. mal kann aber keineen fehl Anschluss feststellen.Entweder ist der Schaltktreis kaputt oder die Software nicht kompatible.

MfG Broti

mare_crisium
29.03.2009, 11:27
Brotspinne,

is' schon gut :-) ! Die Kabellängen, die Du erwähnst, sind in Ordnung; über diese Längen darf die Kommunikation kein Problem machen. Die MAX232s sind so robust wie Küchenschaben. Da musst Du Dich schon anstrengen, um so einen kaputt zu kriegen. Die Belegung ist auch so richtig; allerdings ist es mir schon oft vorgekommen, dass ich am Sklaven-Chip SDA und SCL vertauscht habe.

Ein anderes Programm kann ich Dir nicht bieten; ich habe mir meinen Umsetzer selbst ausgedacht und gebaut (mit einem ATmega8) und spreche ihn vom PC her über die RS232-Schnittstelle mit einem in Object-Pascal (Delphi 5) geschriebenen Programm an.

Vielleicht ist es am Besten, Du probierst's mit dem "I2Ps-Funktionstest.xls und port.dll als ZIP-Datei (57 kB)" aus, das unten auf der Seite zum download bereitsteht? Falls Du kein Excel hast, kannst Du "Openoffice" herunterladen; das liefert ein Tabellenkalkulationsprogramm mit, unter dem sollte das Makro auch läuft.

Ciao,

mare_crisium

Brotspinne
29.03.2009, 12:30
Morgen mare_crisium,

Also ich habe jetzt mal den funktiontest gemacht und bei mir wird SDA nicht wieder zu Null.Die Pull-ups auf dem Koppler sind gesetzt,wie meinen die das mit am Slave auf Masse ziehn?Überbrücken zur not?Keine Ahnung woran das liegt das SDA nicht wieder Null wird.Vieleicht hast du ja eine Vermutung!Exel habe ich das ist nicht das Problem :) .

Edit:Ich habe jetzt nochmal den Test gemacht und SDA auf Masse gebrückt, dann funktionierts im Exelprogramm und SDA wird dann Null!/Edit

mare_crisium
29.03.2009, 17:33
Huch, Brotspinne,

dass der Test funktioniert, freut mich. Das ist schonmal ein deutlicher Fortschirtt :-).

Aber: SDA auf Masse gebrückt??? Wenn Du einen Ausgang des 7405 gegen Masse kurzschliesst, dann glüht der Chip normalerweise einmal kurz auf und dann hat er abgenippelt... Zwischen welchen Leitungen und wo sitzt denn die Brücke? Kommt mit der Brücke der SDA überhaupt noch auf >4,0V? Erklär' mal genauer!

Ciao,

mare_crisium

Brotspinne
29.03.2009, 22:43
Hi mare_crisium, mit der Brücke ist ganz einfach.Ich habe SDA einfach mit einen Draht kurz auf GND gebrückt,für den Test.Der Koppler hat ja Schraubanschlüsse,wo die zwei Leitungen dran hängen SDA,SCL dazu kommt noch die GND und VCC( 5V) für die externe Stromversorgung.Dort habe ich gebrückt SDA mit nem Drähtchen gegen GND.Lämpchen für SDA (wenn es leuchtet liegt SDA auf High also 5V) ging dabei wie zu erwarten aus Testprogramm reagierte wie zu erwarten beim klick auf SDA? Button mit dem Wert SDA 0 (0V).Das war eigentlich alles.

Edit:Ich habe grade nochmal alles überprüft da viel mir auf das wenn ich die Empfängereinheit mit den Betriebspannungen versorge,die SDA und SCL Leitung nicht auf High sind.Also es lassen sich keine 5V messen.Das müsste doch aber der Fall sein wenn sie im "Ruhezustand" sind.Also ist es doch so das die IC`s tot sind.Ich habe auch den Tipp im Datenblatt des TEA6825T befolgt und die Pullups vom Front-End IC (Pin 6 und 7) zu 5V getrennt und gebrückt.Aber das Ergebniss war nur ein Spannungsanstieg um ein paar Millivolt.Naja dann wars das wohl mit dieser Empfängerbaugruppe./Edit

mare_crisium
30.03.2009, 18:50
Guten Abend, Brotspinne,

das sind aber traurige Nachrichten, schade :-( . Ich habe mir nochmal das Datenblatt des 7405 angesehen: Der hat einen offenen-Kollektor-Ausgang. D.h. man kann ihn gefahrlos mit Masse verbinden. Tut mir leid, wenn ich Dir da einen Schrecken eingejagt habe. Dann hast Du jetzt einen intakten RS232-I2C-Umsetzer, aber das Teil, das Du eigentlich steuern wolltest, weilt nunmehr im Nirwana. Mist. Ich hoffe, ich kann Dir zukünftig mal erfolgreicher helfen :-) !

Ciao,

mare_crisium

Brotspinne
30.03.2009, 20:26
Hallo mare_crisium,
Ja manchmal ist es halt so.Zum einen weiß man nie so genau ob bei den Radio (die ja meist einen Code haben) noch irgendwas funktioniert.Zum anderen bin ich mir garnicht sicher ob das überhaupt geht wenn man nur die Empfangsplatine verwendet...!Das muss ich nochmal bei google nachschlagen :) hab hier ja noch zwei liegen.Problem bei dem einen habe ich den Code aber kein Display dazu das war eins mit externem Display im Tacho.Ich vermute mal da die Leitungen auch mit SDA,SCL,MRQ und GND gekennzeichnet sind das man das vieleicht irgendwie übers Hyperterminal oder ähnliches auch ausgeben kann.Habe aber diesbezüglich nicht gefunden zum nachlesen...!

MfG Broti