pada DSK6455, untuk pengaksesan AIC23 Codec terdapat 2 cara (tergantung pada DSK). biasanya digunakan 2 McBSP (multichannel buffered serial port) yaitu McBSP 0 dan 1. untuk McBSP0 untuk jalur control dan McBSP1 untuk jalur data. namun pada konfigurasi DSK yang lain dapat juga jalur kontrol biasanya digunakan I2C (inter integrated circuit).
untuk mendownload datasheetnya bisa di download disini
unutk pengaksesan dan setting dari AIC23 codec bisa dilakukan pada register kontrol seperti pada gambar di bawah ini
dan jika telah ditentukan nilai pada register di atas, maka nilai tersebut dapat dimasukkan untuk setting codec seperti di bawah ini
DSK6455_AIC23_Config configline = {
0x001f, // 0 DSK6455_AIC23_LEFTINVOL Left line input channel volume 0x001f, // 1 DSK6455_AIC23_RIGHTINVOL Right line input channel volume
0x00d8, // 2 DSK6455_AIC23_LEFTHPVOL Left channel headphone volume
0x00d8, // 3 DSK6455_AIC23_RIGHTHPVOL Right channel headphone volume
0x0011, // 4 DSK6455_AIC23_ANAPATH Analog audio path control
0x0001, // 5 DSK6455_AIC23_DIGPATH Digital audio path control
0x0000, // 6 DSK6455_AIC23_POWERDOWN Power down control
0x0043, // 7 DSK6455_AIC23_DIGIF Digital audio interface format
0x00a2, // 8 DSK6455_AIC23_SAMPLERATE Sample rate control
0x0001 // 9 DSK6455_AIC23_DIGACT Digital interface activation
};
tipe variabel bentukan yang digunakan yaitu DSK6455_AIC23_Config
karena tipe bentukannya berupa array, maka diperulakan pointer, sehingga ketika menggunakannya digunakan '&'
contoh program pada AIC23
// persiapan variabel
int sampel=512;
Int16 terimakiri[sampel],terimakanan[sampel];
Int16 keluarkiri[sampel],keluarkanan[sampel];
DSK6455_AIC23_CodecHandle hCodecline;
int i;
/* inisialisasi modul pada DSK6455 */
DSK6455_init();
hCodecline = DSK6455_AIC23_openCodec(0, &configline);
/* perhatikan pada penggunaan codec handle diatas, digunakan tanda '&' untuk pointer karena bentuknya array. pada prosedur diatas digunakan opencodec untuk membuka path dan menginisialisasi CODEC*/
while (1) {
for (i=0; i<512;i++) {
while (!DSK6455_AIC23_read32(hCodecline,(Uint32 *)&terimakiri[i]));
// untuk mengambil data hasil kuantisasi pada AIC23 codec
while(!DSK6455_AIC23_write32(hCodecline,keluarkiri[i]));
// untuk mengeluarkan data yang akan diubah dalam bentuk analog
while (!DSK6455_AIC23_read32(hCodecline,(Uint32 *)&terimakanan[i]));
while(!DSK6455_AIC23_write32(hCodecline,keluarkanan[i]));
// secara default, urutan pengambilan dan pengeluaran data selalu dimulai dari left channel diikuti dengan right channel
};
// proses buffering dan pemindahan buffer
for (i=0;i<512;i++) {
keluarkiri[i]=terimakiri[i];
keluarkanan[i]=terimakanan[i];
};
}