Кодек SSM2602. Настройки простые. Так как он slave, то указаны внешние источники TF, RF и clock T. Clock К указан равным клоку T.
Кодек стерео, но работает в режиме DSP. Т.е. короткий Sync и дальше 2X16 бита для обоих каналов.
Код
AT91C_BASE_SSC1->SSC_CR=0x8000;//software reset
AT91C_BASE_SSC1->SSC_CMR=BOARD_MCK/(32*16000/2); for any case
//Slave Mode
//Rx
AT91C_BASE_SSC1->SSC_RCMR=0x521;
AT91C_BASE_SSC1->SSC_RFMR=0x1F;
//Tx
AT91C_BASE_SSC1->SSC_TCMR=0x502;
AT91C_BASE_SSC1->SSC_TFMR=0x3F;
//interrupt
AT91C_BASE_SSC1->SSC_IER=0x44;
//PDC
AT91C_BASE_SSC1->SSC_RCR=I2S_LEN/2;//receive counter
AT91C_BASE_SSC1->SSC_RNCR=I2S_LEN/2;//receive next counter
AT91C_BASE_SSC1->SSC_TCR=I2S_LEN/2;//tx counter
AT91C_BASE_SSC1->SSC_TNCR=I2S_LEN/2;//next tx counter;
AT91C_BASE_SSC1->SSC_RPR=(unsigned int )0x21e00000;//&rx_i2s[0];//receive buffer
AT91C_BASE_SSC1->SSC_RNPR=(unsigned int )0x21e10000;//&rx_i2s[I2S_LEN/2];//next receive buffer
AT91C_BASE_SSC1->SSC_TPR=(unsigned int )0x21e20000;//&tx_i2s[0];//tx buffer
AT91C_BASE_SSC1->SSC_TNPR=(unsigned int )0x21e30000;//&tx_i2s[I2S_LEN/2];//next tx buffer
AT91C_BASE_SSC1->SSC_PTCR=0x101;//Enable Rx Tx
AT91C_BASE_SSC1->SSC_CR=0x101;
Кэш. Но очень все странно. У меня на TMS тоже было полно кэша. И прямой доступ тоже был. Но он как-то не приносил такого опыта. ОН не переносил только самомодифициующийся код. Что было понятно сразу и не вызывало вопросов.