Fórum témák
» Több friss téma |
Fórum » I2C busz WM8805 között
Üdv mindenkinek!
Adott egy S/PDIF digitális vevő IC, aminek csináltam egy nyákot 3db optikai bemenettel. Az IC hardveres és szoftveres módban is használható. Szoftveres módban használom, így mikrovezérlő szükséges. Én az AVR-t preferálom, így azzal próbáltam i2c vonalon konfigurálni. Ez tökéletesen működik is, de menet közben a mikrovezérlő elveszti a kontrolt az ic felett. Ezt úgy kell elképzelni, hogy rendesen tudom a beállítási biteket küldeni neki, majd a program fő futása közben az aktuális bemenet mintavételezés (44,48,96,192) lekérdezése közben pár perc után elveszti a chipet, és ezek után csak a reset segít. Az elvesztés ideje változó. Szerintetek az okozza a gondot, hogy a digitális vevő IC és a mikrovezérlő nem egy panelen van, és a pár centis SDA, SCL vezetékre érzékeny? 100Khz-en megy az i2c, másik WM8805-öt is próbáltam. Nagyon bizonytalan vagyok, mert sok i2c-s eszközt használtam már pár centis vezetékkel, de ilyen hibám nem volt. Van esetleg valakinek ötlete? Nekem már csak az egy nyákon való közösítés jutott eszembe, minél rövidebb távolságú vezetővel. Köszi a választ előre is!
Szia !
Lehet hogy az AVR-es fórumon hamarabb találsz segítséget. (esetleg felteszed a kódot, amit írtál) De, tapasztalatom az, ha valamiért sikerül elveszteni a kommunikációt, üres órajelet küldve az SCL-re a slave befejezi amiben épp elakadt, és minden mehet tovább. Logikai analizátor pedig a legjobb barátod J.
AVR-es próbálkozások után még MikroC-ben is írtam egy programot PIC18F4620-ra, ami lényegében egy sima i2c-s írás az init-nél, a fő rutinba meg egy olvasás 1 másodpercenként. Az olvasott értéket kiküldtem PORTD-re (portonként van egy LED, így a 8 bites érték egyszerűen látható volt) Ezen nem nagyon lehet mit elrontani, ha pár éve benne vagy a programozásban. Ott is változó időközönként elveszett a kommunikáció. AVR-nél olyan volt, mint ha valami tüske okozná a hibát, mert ha akartam elő tudtam idézni. PIC-nél már nem mélyültem bele, ott idegesebb lettem. Ezért kérdeztem rá, hogy létezhet-e olyan i2c-s eszköz, ami esetleg ennyire érzékeny lehet pár centis vezetékre, és zavart összeszedve KO lesz a reset-ig. A panelt már bontottam hétfőn, és sajnos nem tudom már analizátorral megnézni. Igen, ez hiba volt tőlem, elismerem! Viszont nem hagy nyugodni, hogy szoftveres módban nem sikerült, mivel úgy az IC összes funkciója kihasználható, ezért gondolkodok egy mikrovezérlővel közösített panel tervezésén. Hozzáteszem, a neten kutakodva nem találtam senkit, aki külön panelra tervezte volna. Ezért bizakodom. Ha esetleg nem lenne jó, akkor ott már jöhet az analizátor. Köszi a választ!
A hozzászólás módosítva: Okt 15, 2019
Szia!
Az i2c csapoknál használsz felhúzó ellenállást? Anélkül instabil a dolog.
Szia!
A WM8805 -öt én is szeretem, szoftveresen használom, de ez az ami működött nekem hardveresen is, ellentétben a CS8416-al amivel nem boldogultam. Én is közös panelen használom, igaz STM8-al. Amiket írsz abból azt következtetem ki, hogy sok újat nem tudok mondani, mert kipróbáltál sokmindent. Nekem a bootnál volt gondom, amikor az WM8805 resetb lábát nem kötöttem a mikrovezérlőhöz hanem külső felhúzással oldottam meg és mikor elindult az IC volt, hogy hardver módban indult. Azt nem tapasztaltam, hogy később átállt volna, igaz én nem sokat kommunikálok az IC-vel konfig után. Azt írja az adatlap, hogy az SW kontroll és a módja, hogy 2 vagy 3 wire az bootkor kerül csak kiértékelésre, azaz ez nem okozhat később kapcsolatvesztést. Én 3.3v-al kommunikáltam vele, az AVR 5v-on szokott, a magas szint 2v felett van, de mivel i2c azt úgyis külső felhúzással éred el gondolom. Akkor a kommunikációd timeout-ra fut? Mert ha igen és tüske lenne, akkor a következő kommunikáció már lehetne akár sikeres is, de azt írod, hogy utána csak reset oldja meg. Csak a WM8805-öt reseteled vagy az egész panelt? A hang továbbra is jön, csak az i2c -n nem kommunikál? Az i2c kommunikációban van start stop és timeout, ha hibás adat megy valami zavar miatt, akkor már a címzés elmászhat, azaz nem is veszi magára a dolgot az IC, ha a címzés mégis jó lenne, akkor is a zavar hibás stop kódot generálna, akkor sem értelmezi a kommunikációt. Ha mégis hibás konfig menne ki az IC-ig, akkor is elmászna a hang vagy ilyesmi, de a kommunikáció nem szűnne meg. Én kivezettem az SDA SCL-t és azon keresztül teszteltem, mivel a hangerőt is i2c-s potméterrel állítom, de nem tapasztaltam emiatt olyan kommunikációvesztést mint amit írsz, igaz nekem a végleges megoldásnál már egybe van mint írtam, tesztelni pedig nem teszteltem túl sokáig.
Szia,
Találkoztam olyan AVR I2C library -vel, ahol nem volt kezelve a timeout és a végtelenségig várt pl. egy iterrupt-ra. Ha nem esett be akkor ott is csak a reset vagy a wdt oldotta meg a dolgot.
Szia!
A WM8805 reset lába a mikrovezérlőhöz volt kötve. Én is 3,3V-al kommunikáltam. Természetesen felhúzó ellenállás is volt, hogy válaszoljak az előtted szólóhoz is. A CPU reset megoldotta a gondot, de azzal együtt a WM8805 is resetet kapott a reset lábán keresztül. A hang maradt, csak onnantól nem tudtam szoftveresen bemenetet váltani... Többet így hírtelen nem tudok mondani, mert mint írtam a panel bontásra került. Viszont már megterveztem az új panelt, péntek estére kész lesz, amin a WM8805 és a ATMEGA328 együtt lesz. Kicsit azért aggasztó, hogy neked gond nélkül ment külső kivezetéssel is, mert én Arduino mini-vel, PIC esetén meg Mikroe-s fejlesztőpanellal is próbáltam átkötő vezetékkel. Hardveres módban amúgy szépen működik. Hétfőn ezért bontottam a panelt, hogy helyette a mellékelt képen lévő hardveres változat elkészüljön. Csak két bemenet lett, és a kapcsoló hátul van. Mostani eszemmel máshogy csináltam volna meg a bemenetkapcsolást hardveres módban, és akkor a kapcsolónak sem kéne hátul lennie... Bár engem az kevésbél zavar. Véglegesnek készült, de haver is biztatott, hogy ne adjuk fel, ezért teszek még egy próbát a szoftveressel. Természetesen ha nem lesz jó, akkor részletesebben tudok majd válaszolni az egyéb kérdésekre. Mindenképp jelezni fogok péntek után. Köszi a választ!
jól néz ki, igaz a funkciókat csak tippelni tudom.
Látom odafigyelsz a kondikra, azok a wima kondikat én is nagyon szerettem, de sokat kísérleteztem és nem találtam nagy eltérést az olcsó SMD-khez képest, de tény, hogy nagyon jól mutatnak. Az enyémről is mutatok képet, az enyém kétoldalas panel, van mono erősítő TAP3110 a centernek és egy mono analóg kimenet az aktív mélynek. Tervben egy másik amin lesz sztereo erősítő és relé az analóg kimenetre, hogy ne pukkanjon ha bekapcsolom és OLED display, de talán majd a téli estéken fogom azt megtervezni meg levasalni a nyákot.
Elkészült az új panel a tegnapi nap folyamán. Tökéletesen működik! Az AVR-es program változatlan maradt. A különbség az előző nyákhoz képest, hogy nincs tüskés kivezetés az i2c-nek, az MCU egy panelon van a WM8805-el. Az előző panelnál az átvezető kábel lehetett a gond. Nem tudom hogy a minősége okozhatta, vagy a hosszára volt érzékeny, de többel is kipróbáltam 1 hete. Azzal a kábellal is, ami a képen látszik, és a karakteres kijelzőt köti össze. A másik különbség, hogy a WM8805-ös DVDD 3,3V-os tápjával közös az MCU-val. Múltkor csak a GND volt közösítve. Nem hiszem hogy ez okozhatta volna, de ez még, ami különbség.
Igen, szeretem a Wima kondikat. Sajna nem mindenhol lehet beszerezni... Bizonyos értékeket csak a nagykerből tudok. SMD-vel is építettem már, jó tudni hogy nincs nagy eltérés. A te paneled is jól nézz ki. Köszönöm a hozzászólásokat! A hozzászólás módosítva: Okt 19, 2019
Jól látom, hogy moduláris felépítésű a rendszered? Az i2s megy a másik panelba tüskesoron? És ott képződik a hang? Vagyis ott van a dac?
Igen. Azért készült így, hogy ha valamit később változtatni akarok, akkor ne az egészet keljen. A DAC panelon két darab WM8740 foglal helyet külön a két csatornának. Később ez WM8741-re lesz cserélve. A főpanelon egy i2s - Right Justified konverter van shift regiszterekből felépítve. Úgy csináltam meg, hogy közvetlen i2s jelet is tudjon fogadni a DAC panel, ne csak RJ-t. (jumperrel választható) A DAC utáni műveleti erősítő is a főpanelon van a DAC panel alatt. Az USB egység jövője még kérdéses. Jelenleg egy PCM2706 van benne, de az csak 48Khz-et tud 16 biten. Ezt később XMOS-ra vagy Amanero USB/i2s modulra cserélném egy adapter panellal, amin egy i2s isolátor lenne. A WM8805 marad ebben a formájában, ahogy délelőtt elküldtem. Azt nem szándékozom fejleszteni. A fő táp sönt stabilizátoros lesz, de még tervezés alatt. Jelenleg két darab zselés aksiról használom a tesztek alatt. A minőségéről jelenleg annyit, hogy az ESI Maya44-nél jobban szól. Dinamikusabb, részletesebb, és tisztább. Tápban minden panelnál csak audiohoz gyártott elkokat használok. Én a Nichicon Muse szériát választottam. A DAC utáni műveleti erősítő OPA2134. Nem szükséges kicsatoló kondi az IC után, így a hangot nem befolyásolja sem drága, sem olcsó fólia kondi.
Sajnos a főpanelt újra kell gyártani a WM8805-ös panel nagyobb mérete miatt. A főpanelon a normál tokos IC-k lehet hogy SMD-kre lesznek cserélve, és a gyorsabb 74VHCT szériát választom a sima HC helyett. A hozzászólás módosítva: Okt 19, 2019
Azt gondolom értem mit akarsz, és nagyon szép a kivitelezés is, gratula. A digitális oldalon lehet túlzás az audio elco, de értem, hogy ezen ne múljon. Én usb i2s átalakításra a legolcsóbb kínai ic-t használtam, de szeretem, ha filléres alkatrészekből ki lehet valamit hozni. Ugyan tesztekkel alátámasztani nem tudom, de azt gondolom digitális oldalon ez nem jelent minőségromlást. Pláne, ha az i2s-t le is izolálod. Én is csináltam ilyet, mert a bt modulomból ami tudott i2s outot, csak így sikerült a zajt eltűntetnem. Van egy cseh oldal, gondolom te is belefutottál, ott van izolációra is példa, én a silabs ic-t ajánlom. Azt termékmintaként le is küldik amcsiktól, nem faszariságból, hanem mert pár nap alatt ittvan.
Érdekel majd a vége, szívesen veszem ha megosztod. Persze ha lesz olyan stádium |
Bejelentkezés
Hirdetés |