Kirjoitin C ++ -kirjaston nimeltä v3c-raspi. Voit ladata sen osoitteesta SourceForge.
Kirjoitin esimerkkiohjelman, joka yrittää tehdä juuri haluamasi, nimeltään " i2s ".
Valitettavasti se kokee" ohjelma-anomalian "missä tahansa hetkessä muutamaan sekuntiin sen alkamisen jälkeen - näyttää siltä, että jokin muu käyttää dma-kanavaa 0 ja jättää roskat lohkon osoiterekisteriin.
Voisin saada Raspberry Pi: n käsittelemään noin 16 miljoonaa DMA-ohjauslohkoa sekunnissa (toisessa testissä).
i2s-mikrofonit, joita aion käyttää, ovat analogiset laitteet ADMP441, jotka tuottaa 24-bittistä ääntä.
48 kHz: n bittikellotaajuus on 48000 x 32 = 1,536 MHz. Koodi vaihtaa kelloa myös dma: n avulla, joten kaksinkertaistamme taajuuden 3,072 MHz: iin.
Lisää PWM-taukoja ja kaksinkertaistat ohjauslohkojen lukumäärän uudelleen 6,144 miljoonaan, silti selvästi 16 miljoonan sisällä, jonka voisin päästä ulos RPI: stä.
Ilmoitin virheestä juuri tästä asiasta Raspbianille, mutta ei vastauksia y et.
Olen ratkaissut suurimman osan ongelmista - katso linux-rpi-ytimen postituslista 2013-marraskuu, viesti 000734.
Se on rajoitettu noin 2 miljoonaan näytteeseen sekunnissa, joten sinä pystyi sieppaamaan 22,1 kHz: n näytteitä 8 stereoparista.