Приветствую участников форума!
Хочу отправлять данные с процессора на кодек по I2S. Взял за основу basic-at73c213-ssc-i2s-project для отладочной платы at91sam9260-ek. С исходными параметрами интерфейса (частота дискретизации 48 кГц, 16 бит на отсчёт, 2 канала) проект на моей плате запустился. Мне нужна частота дискретизации 8 кГц, 16 бит на отсчёт, 1 канал.
Попробовал следующие комбинации:
24 кГц, 16 бит на отсчёт, 2 канала - интерфейс запустился;
24 кГц, 32 бит на отсчёт, 1 канал - интерфейс запустился;
12 кГц, 16 бит на отсчёт, 2 канала - интерфейс запустился;
12 кГц, 32 бит на отсчёт, 1 канал - интерфейс запустился;
12 кГц, 8 бит на отсчёт, 2 канала - интерфейс запустился;
12 кГц, 16 бит на отсчёт, 1 канал - интерфейс не запустился.
8 кГц, 16 бит на отсчёт, 1 канал - интерфейс не запустился.
То есть я в два раза уменьшал битрейт (произведение частоты дискретизации, числа бит на отсчёт и количества каналов): сначала за счёт уменьшения частоты дискретизации, потом за счёт сокращения длины отсчёта или количества каналов. Остальные параметры не менял.
При неудачных попытках в регистре SSC0_SR бит TXSYN=0, то есть передатчик I2S не синхронизировался.
Попробовал в качестве исходной частоты для интерфейса использовать частоту на выводе TK. Для этого сделал кодек ведущим и сформировал у него на выходе TK нужную частоту ( 8000 * 16 * 1 = 128 кГц). Интерфейс тоже не запустился. Использую кодек tlv320aic3100.
В связи с этим три вопроса:
1) Что я делаю не так в исходном варианте (процессор - ведущий)? Исходная частота делится в нужное количество раз, интерфейс конфигурируется правильно, иначе бы вообще не запускался.
2) Когда ведущий - кодек, нужно ли мне кроме TK настраивать TF как выход?
3) Нужно ли мне в PIO настраивать TK (и, возможно, TF) как входы? В настройках интерфейса указал, что чаастоту передатчика беру с вывода TK.
У кого-нибудь был опыт работы с I2S? Помогите разобраться, пожалуйста.