Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-NUC976
SK-NUC976 и аудиокодек
MaxiHunter
Добавлено 10.12.2017 22:26 Сообщение: 11
MaxiHunter
0

Пункты: 2257
Регистрация: 13.03.2011
Цитата
что конкретно устанавлявается - какой формат, дамп регистров можете показать ?

А нет какого-то универсального способа сделать дамп?) или нужно где-то в модуле делать дамп вручную?
Вообще устанавливается формат 16bit LE 44100 master=0, а так же записывается sysclk, но что именно записывается смогу показать чуть позже...
Цитата
там вообще-то должен быть красивый прямоугольный меандр

Хм............ Тогда довольно странно. Вряд ли это настройка нувотона..... а точно должен быть меандр?
Спуститься к концу Подняться к началу
Персональная информация
Losha
Добавлено 22.12.2017 12:25 Сообщение: 12
Losha
1

Пункты: 3418
Регистрация: 27.08.2012
Цитата
Хм............ Тогда довольно странно. Вряд ли это настройка нувотона..... а точно должен быть меандр?

Это смотря чем смотреть. Щупы с большой емкостью могут меандр высокой частоты в синус превратить. У меня тоже "синус" на входе кодека, но все работает.

В моей схеме по рекомендации производителя кодека на сигналаы LRCK и BCK поставлены емкости по 20 пФ, а на MCLK резистор 47 Ом.

Если процессор выдает данные, а кодек их не воспринимает, то тут возможны следующие варианты:
1. Кодек неправильно сконфигурирован. Нужно смотреть регистры. Проще всего вставить вывод дампа (или ключевых регистров) прямо в код драйвера.
2. Кодек игнорирует настройки. Так было в моем случае. Кодек просто не воспринимал установки пока на него не будет подана тактовая. Пришлось использовать другой сигнал тактирования (который присутствует постоянно) и использовать PLL.
3. Кодек неисправен.

Больше пока идей нет.
Спуститься к концу Подняться к началу
Персональная информация
MaxiHunter
Добавлено 05.01.2018 22:39 Сообщение: 13
MaxiHunter
0

Пункты: 2257
Регистрация: 13.03.2011
Цитата
В моей схеме по рекомендации производителя кодека на сигналаы LRCK и BCK поставлены емкости по 20 пФ, а на MCLK резистор 47 Ом.

В моей такой рекомендации нет...
В любом случае спасибо за разъяснения! буду колупать в сторону настроек кодека.
Спуститься к концу Подняться к началу
Персональная информация
MaxiHunter
Добавлено 05.01.2018 22:43 Сообщение: 14
MaxiHunter
0

Пункты: 2257
Регистрация: 13.03.2011
Добрался-таки до регистров.
Регистры после сброса и иницаилизации драйвера:
Код

reg 0x3: 0x21
reg 0x4: 0xFD
reg 0x5: 0x36
reg 0x6: 0x7
reg 0x7: 0x16
reg 0x8: 0x18
reg 0x9: 0xFF
reg 0xA: 0x0
reg 0xB: 0x0
reg 0xC: 0x0
reg 0xD: 0x0
reg 0xE: 0x0
reg 0xF: 0x0
reg 0x10: 0x0
reg 0x11: 0x0
reg 0x12: 0x0
reg 0x13: 0x0
reg 0x14: 0x0
reg 0x15: 0x71
reg 0x16: 0xB
reg 0x17: 0x70
reg 0x18: 0x57
reg 0x19: 0x0
reg 0x1A: 0x42
reg 0x1B: 0x6
reg 0x1C: 0x6
reg 0x1D: 0x80

Регистры после попытки воспроизведения wav 16bit LE 44100. WM8804 в пассивном режиме:
Код

reg 0x3: 0x21
reg 0x4: 0xFD
reg 0x5: 0x36
reg 0x6: 0x7
reg 0x7: 0x16
reg 0x8: 0x98
reg 0x9: 0xFF
reg 0xA: 0x0
reg 0xB: 0xFFFFFFFF
reg 0xC: 0x0
reg 0xD: 0x0
reg 0xE: 0x0
reg 0xF: 0x0
reg 0x10: 0x0
reg 0x11: 0x0
reg 0x12: 0x0
reg 0x13: 0x0
reg 0x14: 0x0
reg 0x15: 0x71
reg 0x16: 0xB
reg 0x17: 0x70
reg 0x18: 0x57
reg 0x19: 0x0
reg 0x1A: 0x42
reg 0x1B: 0x2
reg 0x1C: 0x2
reg 0x1D: 0x80
Спуститься к концу Подняться к началу
Персональная информация
MaxiHunter
Добавлено 06.01.2018 01:50 Сообщение: 15
MaxiHunter
0

Пункты: 2257
Регистрация: 13.03.2011
Честно говоря вообще какая-то ерунда получается. Не выставляется длинна слова (регистр 0х16), а так же регистр состояния (рег. 0х1Е).
С последним, не вообще ясно. Есть функция "wm8804_set_bias_level" которая переключает состояния. При инициализации, он записывает в регистр "standby", при этом ядро вываливалось при загрузке с сообщением о том, что оно не может принять никакое значенение кроме "off". Что я благополучно и заменил...
Я так понимаю, если у нас standby, то alsa сама должна выставлять состояние на on тогда когда это нужно, но этого не происходит.
Вообщем, получается что у меня кодек находится постоянно в состоянии powerdown, а я еще хочу добиться от него данных.
Спуститься к концу Подняться к началу
Персональная информация
MaxiHunter
Добавлено 08.01.2018 01:08 Сообщение: 16
MaxiHunter
0

Пункты: 2257
Регистрация: 13.03.2011
Код
WARNING: at sound/soc/soc-core.c:1114 soc_probe_codec+0x248/0x308()
codec wm8804.0-003b can not start from non-off bias with idle_bias_off==1
Modules linked in:
CPU: 0 PID: 1 Comm: swapper Not tainted 3.10.107 #135

Вот как это побороть? ведь, явно что где-то здесь собака порылась....
Собственоо строчка где происходит вылет.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 09.01.2018 20:59 Редактировалось 09.01.2018 21:02 Сообщение: 17
sasamy
4.70

Пункты: 76994
Регистрация: 14.08.2009
Цитата

wm8804_set_bias_level
...
ядро вываливалось при загрузке с сообщением о том, что оно не может принять никакое значенение кроме "off".


не вижу такого в коде

https://elixir.free-electrons.com/linux/v3.10.107/source/sound/soc/codecs/wm8804.c#L469

Цитата

WARNING: at sound/soc/soc-core.c:1114
...
Вот как это побороть? ведь, явно что где-то здесь собака порылась....


это просто предупреждение - оно ни на что не влияет

https://elixir.free-electrons.com/linux/v3.10.107/source/sound/soc/soc-core.c#L1111
Спуститься к концу Подняться к началу
Персональная информация
MaxiHunter
Добавлено 04.07.2018 00:33 Сообщение: 18
MaxiHunter
0

Пункты: 2257
Регистрация: 13.03.2011
собственно, продолжаются мои скитания в поисках правильного решения по впиливаю кодека wm8804. Мои догадки состоят в следующем:
После загрузки драйверов ALSA вводит в состояние bias_off всю аудиоподсистему, я это вижу по сообщениям:
Код
snd_soc_dapm_set_bias_level : set bias leevel=2
snd_soc_dapm_set_bias_level : set bias leevel=1
snd_soc_dapm_set_bias_level : set bias leevel=0

Но по идее, когда я пытаюсь воспроизвести что-то, оно должно включать его обратно... или я чего-то непонимаю.
Это объясняет, то что звука из wm8804 нет, хотя iis поток идет, это видно осцилографом. Так же эта теория подтверждается выдержкой из даташита, в котором говорится о том, что в hardware control mode все функциональные блоки включаются после сброса(я вижу что светится оптический передатчик и приемник захватывает сигнал), тогда как в software control mode все выключено и нужно включать все в ручную(опт. передатчик не светится).
Вообще плохо понимаю как должна работать ALSA. Но оживить пока не получилось, я даже пытался поднять устройство на probe и в set_bias_level ниделать ничего, но тоже не вышло...что-то здесь глубже или я вообще не туда смотрю.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-NUC976