( asch | 2024. 05. 28., k – 10:02 )

Szerkesztve: 2024. 05. 28., k – 10:04

Én azzal kezdeném, hogy ennél az I2S-nél a végső órajel (ami alapján a DAC működik) miből áll elő, és hogy az I2S lib mit csinál? Az I2S jelforma elég egyszerű, a Wiki találat alapján is implementálható lenne talán. Eleve kérdés, hogy szoftveresen, vagy hardveresen állítja-e elő a csipped? És a másik kérdés, hogy milyen időzítési pontosságot igényet, tehát hogy van-e bufferelve a másik végén, és hogy miből áll végül elő a kimeneti órajel? Úgy érzékelem a leírása alapján, hogy a WS vonal egyben a kimenet órajele is lehetne.

(Régi megfigyelésem, hogy az Arduino libek nem jól hordozhatóak platformok között - tehát csak néhány csipen működik jól, vagy csak bizonyos körülmények között működnek, vagy nem stabilak, stb. Nem lehet megúszni, hogy belenézz, hogy mit csinál és adaptáld a saját igényeidhez.)

Ha nincs hardveres I2S támogatás a csipben, akkor én úgy valósítanám meg, hogy egy PWM-re felprogramozható timer adná a WS jelet pontosan az elvárt frekvenciára hangolva, és ezzel párhuzamosan egy interruptot is adna, amivel triggerelnék egy SPI átvitelt. Mert úgy tűnik, hogy egy okosan beállított SPI (ami minden csipen van), plusz a vele szinkronban járó WS jel adja ki az I2S protokoll.

Az SPI részét meg lehet csinálni teljesen szoftveresen is persze.