Цитата(HeOHuKC @ May 31 2010, 01:42)

Сто раз проверял сигналы на SSC порту логическим анализатором, все данные идут, частоты совпадают.
Ну если так, то, может, и не в SSC дело?
Цитата(HeOHuKC @ May 31 2010, 01:42)

Может кто поделится примером, для кодеков с внешним тактированием.
Если под кодеком с внешним тактированием понимается кодек в режиме slave, то пожалуйста. Замечательно поет через CS4344:
CODE
void ssc_start_i2s(void)
{
audio_pll_sw(1); // Switch to I2S clock
AT91C_BASE_PMC->PMC_PCER = 1UL << AT91C_ID_SSC;
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST;
AT91C_BASE_SSC->SSC_CMR = 16; // MCK / 32
// PERIOD: 32, STTDLY: 1, START: falling edge on TF, CKO: continuous, CKS: TK
AT91C_BASE_SSC->SSC_TCMR = (15 << 24) | (1 << 16) | AT91C_SSC_START_FALL_RF | AT91C_SSC_CKO_CONTINOUS | AT91C_SSC_CKS_DIV;
// FSOS: negative pulse on TF, DATNB: 1, MSB first, 16 bits
AT91C_BASE_SSC->SSC_TFMR = AT91C_SSC_FSOS_NEGATIVE | (15 << 16) | (1 << 8) | AT91C_SSC_MSBF | 15;
AT91C_BASE_SSC->SSC_TPR = (u_int)&audio_tx_buffer[0][0];
AT91C_BASE_SSC->SSC_TCR = AUDIO_BUFFER_SAMPLES_PER_CH * 2;
AT91C_BASE_SSC->SSC_TNPR = (u_int)&audio_tx_buffer[1][0];
AT91C_BASE_SSC->SSC_TNCR = AUDIO_BUFFER_SAMPLES_PER_CH * 2;
AT91C_BASE_SSC->SSC_PTCR = AT91C_PDC_TXTEN;
AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SSC] = PRIOR_SSC;
AT91C_BASE_AIC->AIC_SVR[AT91C_ID_SSC] = (u_int)ssc_irq_handler;
AT91C_BASE_AIC->AIC_IECR = 1UL << AT91C_ID_SSC;
AT91C_BASE_SSC->SSC_IER = AT91C_SSC_ENDTX;
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_TXEN;
*AT91C_PMC_SCER = AT91C_PMC_PCK1; // Enable MCLK
}