Все еще проще чем вы думаете - g45/m10 может управлять линией NRST поэтому никаких GPIO не нужно, к тому же ALC203 недостаточно просто установить сброс на линии reset.
ALC203 Data Sheet, 9.3 Reset, p. 37
Все это есть в бутсрапе с SD
Но почему-то все равно нестабильный сброс (похоже я не правильно понял даташит g45), в этом же бутсрапе есть сброс кодека для платы m10 - надо попробовать оттуда списать.
Ага, читал даташит, то, что NRST управляемый знаю. Я просто грешил на момент включения питания - там на линии может оказаться всё что угодно, пока не запустился микроконтроллер. Ну и дребезг кнопки, повторю, еще никто не отменял.
Да и у вас всё правильно сделано, по документации... А что выпендривается - фиг его знает сколько аппаратных глюков там, еще не обнаруженных.
P.S. Спасибо за помощь! Аудиокодек мне то не очень нужен, всё равно свою плату развожу без него, а вот загрузка с SD очень кстати!
The AC97 controller should drive SYNC and SDATA_OUT low during the period of RESET# assertion to guarantee that the
ALC203 has reset successfully.
Да, еще, по моим наблюдениям, если в первый раз сброс кодека не удался, то и последующие попытки ни к чему не приводят. Если же сброс удался, то он потом реагирует на команды стабильно, сбрасывается без проблем. Может быть из-за того, что на этих выводах присутствует какой-то "мусор", например, при включении питания?
Дело в том, что у кодека есть такая особенность - входить в "специфическое" состояние (какой то режим работы) при определенных уровнях на его описываемых выше пинах при активном сбросе.
В этом и есть корень "бед".
В бутстрапе (не SD-шном) я намеренно выставлял "правильные уровни" и это привело систему в норму (при этом сброс я не трогал).
С появлением SD бутстрапа, тема с "инициализацией" кодека опять стала актуальной, sasamy с большей ответсвенностью отнесся (за что отдельное спасибо) к сбросу AC97, но как говорит - все-равно иногда не срабатывает.
Я пока детально звук с SD бутстрапом не тестировал (в safe режиме AC97 в штатных бинарниках отключен), смотрел осциллографом - импульс сброса присутствует и довольно значительный, мне кажется, нужно увеличить интевал времени после выставления уровней на пинах AC97 и перед сбросом и уменьшить длительность самого сброса, позже буду экспериментировать.
На платах новой ревизии я добавил возможность сброса AC97 через GPIO, но штатная сборка плат идет со сбросом через RESET.
Сегодня на разных платах пытался "поймать момент" не запуска AC97 с NAND бутстрапом - запускается стабильно, да и за все время тестирования плат не припомню случая, чтобы проигрыш звучал не при первой же перезагрузке ...
Сегодня на разных платах пытался "поймать момент" не запуска AC97 с NAND бутстрапом - запускается стабильно, да и за все время тестирования плат не припомню случая, чтобы проигрыш звучал не при первой же перезагрузке ...
Ясно. Я так и предполагал, насчёт запрещенных состояний аудиокодека. На всякий случай попробую с лабораторным блоком питания. Сейчас то используется обычный импульсный, но что-то этот китай мне не нравится... Тоже, по возможности, поэкспериментирую с времянками сброса.