TWI / I2C ähnlich wie PWM?

Gast #3087201
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
Gast #3087219
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.
Gast #3087233
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.
#3087298
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.
Gast #3087389
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.
Gast #3089964
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.
Gast #3090039
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.
Gast #3090940
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?
#3090980
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)
(Firma: matzetronics) #3091006
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.
Gast #3091482
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?
Gast #3091512
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.
#3091548
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren