Forum: Mikrocontroller und Digitale Elektronik TWI / I2C ähnlich wie PWM?


von Ampler (Gast)


Lesenswert?

Hallo :)

Ich hab noch nie was mit I2C gemacht, will aber ganz gern einen PCM3070 
ansteuern.

Ich hab schon oft mit div. AT Mega Controllern PWM gemacht, dabei muss 
man ja nur Register setzen und diese mit Werte füttern, eigentlich ganz 
easy. Nun sehe ich dass Atmel die TWI Hardwareschnittstelle hat, ist es 
damit ähnlich einfach einen den PCM3070 anzusprechen? Also einfach 
Register aktivieren und mit Daten füttern??

Viele Grüße
Ampler

von Matthias L. (Gast)


Lesenswert?

Ja ist es. Nur mit dem Unterschied, das I2C ein Bussystem ist. Da gibt 
es Interaktionen, die du durch Auslesen von Registern mitegeteilt 
bekommst und wo Du (die Software) dann drauf reagieren musst.
Im Ergebnis musst Du wohl eine kleine Schrittkette zusammenbauen. Ist 
aber ordentlich im DB beschrieben.

von amateur (Gast)


Lesenswert?

Dein PWM ist schon eher mit der blinkenden LED, die die meisten von uns 
zum Laufen gebracht haben verwandt. Nur meist etwas schneller.
I²C eher mit der seriellen Datenübertragung via RS232 oder einem CAN-Bus 
vergleichbar.

von Icke ®. (49636b65)


Lesenswert?

Ampler schrieb:
> Nun sehe ich dass Atmel die TWI Hardwareschnittstelle hat, ist es
> damit ähnlich einfach einen den PCM3070 anzusprechen?

Es ist relativ einfach, sobald man erst mal dahinter gestiegen ist und 
die Fallstricke überwunden hat. Der PCM3070 kann aber auch SPI, damit 
ist es wirklich simpel.

von Frank M. (frank_m35)


Lesenswert?

Ampler schrieb:
> Hallo :)
>
> Ich hab noch nie was mit I2C gemacht, will aber ganz gern einen PCM3070
> ansteuern.
>
> Ich hab schon oft mit div. AT Mega Controllern PWM gemacht, dabei muss
> man ja nur Register setzen und diese mit Werte füttern, eigentlich ganz
> easy. Nun sehe ich dass Atmel die TWI Hardwareschnittstelle hat, ist es
> damit ähnlich einfach einen den PCM3070 anzusprechen? Also einfach
> Register aktivieren und mit Daten füttern??
>
> Viele Grüße
> Ampler

Es ist nicht vergleichbar und nicht so einfach wie bei PWM.
I2C ist ein Bus, und du musst gewisse Reihenfolgen/Regeln einhalten.
http://www.best-microcontroller-projects.com/i2c-tutorial.html
http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html

Du solltest Aufmerksam das Datenblatt des Geräts das du ansprechen 
willst studieren. Dort stehen die wichtigen Adressen drin die du 
benötigen wirst.

Und das wichtigste, der Standardablauf zum Senden von Daten an ein 
Device:
1. Send a start sequence
2. Send 0xE0 ( I2C address of the SRF08 with the R/W bit low (even 
address)
3. Send 0x00 (Internal address of the command register)
4. Send 0x51 (The command to start the SRF08 ranging)
5. Send the stop sequence.

Hälst du dich am Anfang daran, so ist ein Debuggen einfach und es sollte 
recht flott problemlos funktionieren. Danach kannst du dann, um die 
Geschwindigkeit zu steigern, nach Punkt 4 direkt weitere Daten senden. 
Dies erfordert aber meist eine Änderung von 3., sodass man dort am 
Anfang nur Fehler reinbaut, wenn man den I2C Bus zum ersten mal benutzt.

von Ampler (Gast)


Lesenswert?

Ok Danke für die Infos ich werd mir einfach mal einen PCM3070 bestellen 
und rumprobieren. Vielleicht krige ichs ja hin :)

von spess53 (Gast)


Lesenswert?

Hi

>Ok Danke für die Infos ich werd mir einfach mal einen PCM3070 bestellen
>und rumprobieren. Vielleicht krige ichs ja hin :)

Warum siehst du dir nicht die passenden Application Notes auf der 
ATMEL-Seite an?

MfG Spess

von Ampler (Gast)


Lesenswert?

Ich hab mir den PCM3070 soeben bestellt und werde es probieren.

Mir ist leider noch nicht so ganz klar wie ich die Filter des miniDSP's 
einstellen kann, Volume Control und Routing sind klar dazu muss man 
"einfach" nur die entsprechenden Register mit Werten füllen, bei den 
Filtern ist das irgendwie komplizierter.

Es ist für mich nicht ersichtlich wie ich Trennfrequenz, Filtergüte und 
Q einstellen kann aber vielleicht fällt der Groschen wenn ich das Teil 
vor mir liegen hab.

von joquis (Gast)


Lesenswert?

Interessantes Teil, der PCM 3070, aber sicher nicht ganz einfach. Wohl 
ähnlich komplex wie ein Mikrokontroller. Wo kann man ihn bekommen ?

Die Beschreibung der Register und Möglichkeiten gibt es hier:

http://www.ti.com/lit/ug/slau332/slau332.pdf

Zum Experimentieren würde ich mir erstmal einen I2C-Adapter für den PC 
besorgen, mit dem man beliebige einzelne I2C-Kommandos abschicken kann.

von Michael (Gast)


Lesenswert?

joquis schrieb:
> Wo kann man ihn bekommen ?

Vom Elektronikdistributor, z.B. Digikey

von joquis (Gast)


Lesenswert?

Bei Digikey ist zwar der Preis 6,34 annehmbar, aber die Versandkosten 
mit 18,00 doch ein wenig hoch. lohnt sich wohl erst bei höheren 
Stückzahlen dort zu kaufen.

Habs auch bei Farnell gesehen, 7,51. Mit Versand und Mwst dann 18,87.

von Ampler (Gast)


Lesenswert?

Ich hab ihn zusammen mit anderen Teilen bei Farnell über die Arbeit 
bestellt. Sollte heute vielleicht schon kommen :)

I2C Adapter für den PC? Über USB? Das klingt interessant, ich denke da 
besorg ich mir einen.

Ich glaub aber man kann die Filter und DSP Einstellungen nur über die 
TruePath Software machen, ist das richtig?

von Frank M. (frank_m35)


Lesenswert?

Ich wüsste nicht was es bringen sollte über PC. Der DAC verwendet den 
I2C/SPI Bus ja nur für die Steuerung, Audio Daten werden über einen 
seperaten I2S, oder einen anderen unterstützten Bus gesendet.

So wie ich beim kurzen Überblicken des Datenblatts verstanden habe 
kannst du in den miniDSP ein Programm laden, welches du mit der TruePath 
Software erstellst, mit deinem uC dann aber beim Start in den IC 
reinladen musst.

Die Filter musst du in Register dir zusammenbauen können (S.22)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Schade, das das Eval Board so teuer ist, den TAS3208 gabs für knapp 
einen Hunderter weniger und das war ein kompletter DSP mit I2C 
Bootloader und '51 MCU onboard. Sieht aber trotzdem nach einem 
interessanten Teil aus. Für die User-Biquad Filter solltest du dir evtl. 
mal ein Filterberechner Programm holen und ein wenig damit rumspielen. 
Ein 5-Band EQ sollte damit jedenfalls machbar sein.
Mir fehlt noch der direkte S/PDIF Ausgang, den der TAS3208 auch gleich 
hatte.

von Ampler (Gast)


Lesenswert?

Frank M. schrieb:
> So wie ich beim kurzen Überblicken des Datenblatts verstanden habe
> kannst du in den miniDSP ein Programm laden, welches du mit der TruePath
> Software erstellst, mit deinem uC dann aber beim Start in den IC
> reinladen musst.

Bitte haltet mich nicht für blöd aber ich hab das noch nie gemacht. Die 
TruePath Software erstellt eine cfg- Datei.

Die cfg-Datei muss ich dann in hex umwandeln damit ich die in den µC 
bekomme, richtig?

Wie mach ich das programmiertechnisch? Also angemommen ich schieb das 
Programm (mit der Steuersoftware für den kompletten Amp, für Display, 
Volume, Eingangswahl etc...) im Atmel Studio auf den Atmel (z.b. den 
ATMega32), wie bastle ich das cfg File für den PCM3070 da mit rein? Oder 
brauch ich dafür einen eigenen Eeprom auf dem nix anderes als die cfg 
File im Hexformat liegt und wo ich dann Byte für Byte aus dem Eeprom in 
den PCM3070 schaufle?

von Karl H. (kbuchegg)


Lesenswert?

Ampler schrieb:

> Wie mach ich das programmiertechnisch? Also angemommen ich schieb das
> Programm (mit der Steuersoftware für den kompletten Amp, für Display,
> Volume, Eingangswahl etc...) im Atmel Studio auf den Atmel (z.b. den
> ATMega32), wie bastle ich das cfg File für den PCM3070 da mit rein?

wie sieht denn so ein cfg File aus?

von Ampler (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Ampler schrieb:
>
>> Wie mach ich das programmiertechnisch? Also angemommen ich schieb das
>> Programm (mit der Steuersoftware für den kompletten Amp, für Display,
>> Volume, Eingangswahl etc...) im Atmel Studio auf den Atmel (z.b. den
>> ATMega32), wie bastle ich das cfg File für den PCM3070 da mit rein?
>
> wie sieht denn so ein cfg File aus?


Ich hab noch keine gesehen, nur ein kurzes Tutorial auf Youtube 
angeschaut wo gesagt wird dass ein cfg File erstellt wird das man dann 
in den PCM laden muss.

von Frank M. (frank_m35)


Lesenswert?

Ampler schrieb:
> Wie mach ich das programmiertechnisch? Also angemommen ich schieb das
> Programm (mit der Steuersoftware für den kompletten Amp, für Display,
> Volume, Eingangswahl etc...) im Atmel Studio auf den Atmel (z.b. den
> ATMega32), wie bastle ich das cfg File für den PCM3070 da mit rein? Oder
> brauch ich dafür einen eigenen Eeprom auf dem nix anderes als die cfg
> File im Hexformat liegt und wo ich dann Byte für Byte aus dem Eeprom in
> den PCM3070 schaufle?

Ist das nicht mal erst nebensächlich? Brauchst du den miniDSP übehaupt 
am Anfang?
Ich würde mich erst einmal darum kümmern das Teil in Betrieb zu nehmen, 
bevor ich mir Gedanken darüber mache wie ich den miniDSP Programmiere, 
da das ja dann schon sehr abgefahren wird. Und du sicherlich schon 
einige Tage damit verbringen wirst die Grundlegenden Funktionen dieses 
doch sehr sehr umfangreichen ICs zu implementieren.
Durch den miniDSP bekommst du dann einen Equalizer etc hin, was jetzt 
für den ersten Betrieb bestimmt noch nicht notwendig ist.

Ich weiß auch nicht wie es wirklich geht. Aber wenn man sich das 
Datenblatt mal wieder anschaut, dann sieht man doch, dass Register 
80-114 und Register 152-186 die Instruktionen für den ADC und DAC 
miniDSP enthalten. Also da muss das cfg File dann reingeschrieben 
werden.
Am einfachsten ist es, da du ja vermutlich eh eine SD-Karte benutzt auf 
der du die Daten aufzeichnest und abspielst, das CFG File direkt von der 
SD-Karte am Anfang in die Register rein zu laden. Dadurch musst du den 
uC auch nicht jedes mal neu programmieren, wenn du bspw. den EQ ändern 
willst, sondern kannst einfach das cfg File auf der SD-Karte mit einem 
anderen ersetzen.
Du kannst es natürlich auch im Programmcode speichern, ähnlich wie 
Bilder oder Schriften im uC implementiert werden und dieses konstante 
Array dann in den IC laden.

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.