Как стать автором
Обновить

Комментарии 21

Очень похоже на то что младший/старший байты в слове местами перепутаны. У вас получается что когда звук укладывается в младшие 8 бит то всё нормально, а на деле эти младшие 8 бит АЦП интерпретируются как старшие и кажется что звучит всё отлично. А когда подаёшь полную громкость, в младшем байте будет нечто похожее на переходы от 0 до 255, что интерпретируется АЦП как то что вы видите на осциллографе. Попробуйте байты потока поменять местами.
У вас получается что когда звук укладывается в младшие 8 бит то всё нормально, а на деле эти младшие 8 бит АЦП интерпретируются как старшие и кажется что звучит всё отлично.
У автора преобразователь ток/напряжение на резисторе, который оперт об землю.
И это у ЦАП, у которого сигнальный ток втекает в землю (в отличие, например от РСМ179х, у которого ток вытекает из аналогового питания).

Автор не понял зачем в даташите нарисованы треугольнички за микросхемой, чем отличается ЦАП с выходом по току и напряжению, и почему первые должны работать на нулевое сопротивление ( а уж никак не на резистор «2к»).
И почему положительный вход i/u опирается на этот самый переменный резистор.

Поэтому судить о том, что происходит с сигналом на выходе (скорее всего он дико искажен) судить невозможно.
Думал над этим. У aplay есть возможность перевернуть байты (LSB и MSB флаги) это не изменяет картину, а даже ухудшает ее.
Как уже сказал walti, у вас проблема не в I2S, а в совершенно некорректно сделанной аналоговой части. Операционники на стандартной схеме включения не зря нарисованы.
Этот ЦАП выдает ток, а не напряжение, о чем однозначно сказано в даташите:
«The output current of the DAC is a sink current.»
Резистором, конечно, можно превратить ток в напряжение, но тут вот какая проблема:
Диапазон выходного напряжения у этого ЦАПа — ±25 mV, а тока — 2.3 mA.
Что получится когда ЦАП попытается выдать эти 2.3 mA на вашу нагрузку в 2 килоома?
Примерно в тысячу раз большее напряжение чем допустимо для ЦАПа.
Так-что даже на 1% громкости вы его перегружаете в 10 раз.
Первоначально собирался вариант именно с ОУ, но потом схема была упрощена после изучения аудио форумов и различных схем сравнение характеристик микросхемы. Я понимаю, что это вариант не лучший, но сделал так в угоду простоте схемы (в конечном устройстве мало места). Проверю, конечно, еще раз, но думаю проблема не в этом, а именно в цифровой части.
Активный преобразоатель i/u на ОУ отличается от пассивного на резисторе тем, что на входе пассивного напряжение меняется с изменением тока, а на входе активного — нет, ноль поддерживает ОУ. Именно потому и может и быть перегрузка выхода ЦАП, что источник тока внутри ЦАП не может поддерживать постоянный ток при изменении напряжения более, чем он рассчитан.
Искажения, которые возникают у меня не связаны с применённой схемой пассивного преобразователя ток-напряжение. Если посчитать по datasheet'у максимальный ток выхода 2.3 мА, у меня стоит два резистора один 2 кОм, второй подстроечный на 2 кОм. При среднем значении подстроечника в 1 кОм, общее сопротивление будет равно 666 Ом, значит максимальное напряжение 0.0023*666=1.53, а это нормально при питании 3.3 В. Ну и повторюсь, изначально у меня стояли ОУ на выходе и искажения были абсолютно такие же.
andrew_atreides
Все несовсем так.
Для того, что бы небыло ошибки генератор тока должен работать с нулевой девиацией напряжения. Преобразователь на ОУ, на своем инвертирующем входе будет стараться держать потенциал равный неинвертирующему входу, т.е. напряжению равному Vref в данной схеме.
С таким номиналом резистора, включенным к тому же не к Vref, микросхема может вести себя непредсказуемо, в том числе и так как описано
Я понимаю как работает ОУ. Сегодня попробовал поднять питание до 5 В и уменьшить нагрузочные сопротивления до 750 Ом. Выставил среднюю точку подстроечником и ровным счетом ничего не поменялось. Как и тогда, когда у меня стоял ОУ на выходе.
Знакомо. Я даже PCM5102 не сразу завел, там на форуме есть мои стенания.
Теперь другая проблема: заставить shairport-sync воспроизводить звук через i2s
звук из интернет-радио выводится нормально
А PCM5102 воспроизводит нормально звук на полной громкости?
такая аналоговая часть в случае 1543 вполне работоспособна. у тебя косяк с форматами данных, но чтобы этот косяк выловить — нужен двухканальный осциллограф (смотреть соотношение фронтов сигналов на входах 1543)
Пытался выловить, проблема в том, что надо как-то заставить слать Омегу на I2S вывод точно известные значения. Пока я не разобрался как это лучше сделать. Есть другой вариант. Взять логически анализатор, считать несколько байтов с I2S и попробовать построить по данным график и сравнить его с аналоговым выходом.
andrew_atreides
Проверьте положение сигнала WS относительно DATA, пересинхронизируйте его BCK.
www.ti.com/lit/ds/symlink/df1704.pdf
стр.7
в даташите ничего не сказано про минимальную тактовую, попробовать заслать чем угодно, какой нибудь ардуиной или что там под рукой, GPIO например?
Идея правильная. Я на днях попробую другой мини ПК или МК подключить.
вот такая штука может помочь:
gist.github.com/ghedo/963382
Жаль фото нет.
Керамика по питанию TDA на обратной стороне платы?
Да. Парочка в параллель SMD стоит, вроде на 1 мкФ.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории