Есть многим знакомая платка STM32F4DISCOVERY. На ней есть I2S DAC CS43L22 Так вот выяснилось, что I2S модуль контроллера STM32F407 не может корректно работать с этим кодеком !!! Причина оказалась в том, что сигнал MCK у микроконтроллера начинает тикать только в момент передачи аудио выборок, то есть одновременно вместе с сигналами SCK, SD и WS !!! Отдельно запустить MCK в режиме free running нельзя !!! Но, в даташите на кодек CS43L22 явно указано, что частота MCK должна включаться заранее, а именно в момент инициализации, а отключаться только через опр. время после завершения передачи аудио данных!!! Оно конечно работает, звук играет и все такое, но я столкнулся со след проблемами которые не могу решить:
1) При воспроизведении самого первого аудио файла пропадает почти пол секунды из его начала !!! (я это связываю с тем, что так как частота MCK включается одновременно с поступлением данных, то кодек CS43L22 не сразу настраивается на эту частоту)
2) При окончании проигрывания слышен белый шум, на довольно сильной громкости, причем в одном канале громкость его существенно больше. (замечу что при проигрывании файла громкость одинаковая в обоих каналах). Этот шум не устраняется даже подачей команд MUTE, или уменьшением громкости, помогает только сброс ресетом и последующая переинициализация, что меня не устраивает !!!
Возникает вопрос, о чем думали разработчики когда ставили этот кодек на отладочную плату?
|