Схему включения взял из даташита. После инициализации SSM2603 на ее выходах устанавливается напряжение отличное от Vcc/2, причем в правом и левом каналах разное. При этом на выводе Vmid все в порядке. Если на вывод PBDAT подавать отличные от 0 данные, то они какбы складываются с этим непонятным оффсетом. Если результат сложения выходит за допустимые пределы, то он переполняеся так, как если сложение происходит в цифре (типа: 0xFFFFFF + 5 = 4). Т.е. такое ощущение, что SSM-ка перед ЦАП-ом прибавляет к пришедшим данным какое-то число.
Пока разбирался, выяснил, что отличное от Vcc/2 напряжение появляется после подключения к выоду сигнала от DAC. Если DAC отключить, и включать всякие bypass или sidetone, то смещение такое как надо.
От режима работы цифрового интерфейса (master/slave, кол-во бит), не зависит.
Вот пример инициализации.
Код
// Power on CLKOUT, OSC, DAC. no power OUT, ADC, MIC, LINEIN.
Ssm2603_WriteReg(0x06, 0x010);
// Configure other registers.
Ssm2603_WriteReg(0x02, 0x179); // dac volume 0dB
Ssm2603_WriteReg(0x04, 0x012); //dacsel, mutemic.
Ssm2603_WriteReg(0x05, 0x000);
Ssm2603_WriteReg(0x07, 0x04A); // master 24bit I2s
Ssm2603_WriteReg(0x08, 0x080); // 48k @ 12.288MHz
// Wait time for charging Vmid Capasitor.
wait_ms(1000);
// Set ACTIVE bit in reg R9
Ssm2603_WriteReg(0x09, 0x001);
wait_ms(1000); // на всякий случай :)
// !!! Сейчас на выходе Vcc/2 как и положено.
// Set OUT bit in R6 to 0
Ssm2603_WriteReg(0x06, 0x007);
// !!! Напряжение на выходах "отпрыгнуло" от Vcc/2 вниз на разные значения.
Может уважаемый All сталкивался с такой проблемой и знает как ее победить? Ато у меня уже иссякли идеи