насчет дуплекса не скажу, а если хотите стерео, то почитайте аппноту. в ней сказано, что для стерео необходимо задействовать два канала I2S. никто особо не просил стерео, поэтому сделали только моно захват.
Изменения следующие - использовал Right-aligned, MSB, тогда не нужна задержка в 1 такт, соответственно STTDLY в 0. После этого шум с 2-го канала исчез.
На самом деле захват в стерео не работает, несмотря на то, что выходной файл имеет 2 канала по 16 бит. Похоже на то, что захват идет только с одного канала, причем возможно переключение каналов прямо на лету. При записи с микрофона этот эффект никак не проявляется, а вот со входа LINE-IN - при подаче только одного канала идет либо запись "полноценного" стерео, либо вообще ничего.
Судя по коду вы использовали режим Left-aligned. Но это не принципиально, т.к. I2S в нашем случае отличается только начальной задержкой, которая в драйвере учтена.
Проблема с посторонним шумом была с фронтом тактового сигнала, по которому производится считывание данных от кодека. Здесь вы правы - считывание и запись должны производится по одному и тому же фронту.
Хотя, теоретически все должно работать правильно именно так, как было изначально в драйвере: запись производится по заднему фронту тактового сигнала, а чтение - по переднему. Должна же быть задержка распространения сигнала в кодеке!
Самое интересное то, что когда мы занимались отладкой этого драйвера никакого постороннего шума не было...