• Внешний USB-ЦАП-Аудиопроцессор CDD-010 можно купить

RDC2-0059 ( SSM3582 ),напрямую к Raspberry Pi в стерео режиме в i2s

reverendzah

Active member
как я понял не совсем подтяжка к I2C. при определенной конфигурации плата встает в слэйв режим и требует управления через эти пины. Если все нормально и звук идет с помехами тогда остаются наводки через питание ...можно попробовать сменить блок питания
 

sir066

Member
Ну это точно не питание. От этого источника другие усилители работают нормально. У меня плата именно что стоит в режиме управления i2c, без записи в регистр 0x10 = 0x17 она вообще только шипит, после записи 0x17 (установка дискретизации 16 бит) - звук есть, но там явно что то подмешивается. Меня вообще не интересует работа в standalone режиме, хочется получить звук в режиме управления i2c. Там явно какая то мелочь, нужно просто правильно установить все регистры.
 

reverendzah

Active member
Подождите мгновение...у вас управление через i2c...но до этого цитирую " А при чем тут схема? Raspberry Pi Zero W и RDC2-0059 ".И более ничего.Скорее всего идет по наводке на SDA и SCL попробуйте подтянуть их к земле дополнительно резисторами.
 

sir066

Member
Вроде вчерне победил. Ставим

addr2 = Pull-down
addr1 = Open
RasPi GPIO2 - SDA
RasPi GPIO3 - SCL

Усилитель виден по адресу 0x10, в динаимках шум при запуска mplayer. После прописывания с RasPi

i2cset -y1 0x10 0xa 0x17

получаем нормальный звук. Правда непонятно моно или стерео. И непонятно почему адрес платы 0x10, этой не его адресная конфигурация.

i2cset -y1 0x10 0x7 0x80 (или что то еще вместо 0x80) меняет громкость.

В общем, оно работает, но хочется более полного понимания.
 

reverendzah

Active member
на звук влияет volumio возможно при запуске перегруз по громкости. в volumio можно поставить в настройках максимальную громкость пониже и уровень по громкости запуска
 

sir066

Member
Шум если не записать в регистр 0xa значение 0x17, это установка 16 бит дискретизации. После записи шума нет вообще, звук чистый.
У меня не volumio, просто Raspbian и dtoverlay=hifiberry-dac как драйвер i2s. RasPi это просто стенд, у меня в проекте источник это кодек vs1053b, он умеет только 16 бит. Непонятна сейчас только логика управления по i2c.
 

reverendzah

Active member
Я до конца тоже не разобрался. Мне непонятно при какой конфигурации RDC2-0059 является мастером а при какой слэйвом
 

sir066

Member
Что такое 1x17? "0x" это префикс шестнадцатиричного числа в командах Linux и языке C. Что такое 0x17 понятно, а 1x17?
 

reverendzah

Active member
насколько я помню в I2c при неопределенном заранее включении мастера и слейва оба устройства будут попеременно посылать друг другу 1 и 0 пока одно не встанет мастером а второе слейвом нужно поробовать командно назначить
 

sir066

Member
Вообще то на странице 27 даташита в разделе "i2c Control" просто явно написано " The SSM3582Ais always a slave on the bus, and cannot initiate a data transfer. ". Так что я не понимаю о каком мастер и слейве Вы говорите. Есть Standalone mode, но это нечто другое, этот режим явно предполагает, что SDL и SDA жестко подтянуты или к 0 или к 1. Никакого управления по i2c в Standalone hardware control mode таким образом нет (страница 30), как бы, по определению, хотя можно предположить, что если переключить чип на ходу на реальную шину i2c она может появиться.

И я еще раз хочу повторить, нет никаких проблем с i2c, устройство прекрасно видно, регистры читаются и меняются, мало того, на изменение некоторых из них плата замечательно реагирует, так например запись в 0x7 меняет громкость. И на запись 0x17 в регистр 0xa плата реагирует адекватно, иногда при этом получается нормальный звук. Правда на проверку я обнаружил, что на оба динамика идет левый канал, запись в 0xa не 0x17, а 0x16 проблемы не решает, равно как и установка 4го бита в 0x4 (он и такм изначально нулевой, то есть stereo), тот же звук левого канала.

Но в основном проблема в тоv, что все работает как то не совсем по даташиту. Так например запись 0 или 1 в младший бит регистра 0x4 который Software master power-down вообще не на что не влияет, плата или продолжает играть если изначально играла или звука нет ни так ни так, что не записывать в этот бит.
 
Последнее редактирование:

sir066

Member
А вот на бит 2 в том же 0x4 который Left channel powered down плата бодренько реагирует и включает и отключает звук.

И самое главное, я пока не смог получить какой либо звук в положении addr1 и addr2 документированном для управления по I2c (не Standalone mode), что то получается только если addr1 или addr2 поставить в Open, а эти позиции осмыслены только для Standalone. Регистры при addr1=0 и addr2=0 имеют те же значения, что и при addr1=Open addr2=0, но в первом случае звука нет, во втором - есть.

То есть я просто в полном недоумении пока. Не знаю как это понимать.
 

reverendzah

Active member
Получается по логике плата всегда работает в моно режиме или двойного моно и не выходит джамперами в другой режим. Насчет того что она только вслейве работает и никак иначе я уже говорил что у меня большие сомнения, иначе она бы не могла работать без внешнего управления. Мое мнение что проблема каким то образом связана с SDL и SDA у меня навотка шла именно по ним когда я пытался управлять по I2c это точно.
 

reverendzah

Active member
хорошо а если попробовать перевести плату в требуемый режим допустим стерео через I2c раз на остальные изменения регистров она реагирует
 

sir066

Member
Ну а что я делаю? Если выставить все регистры строго в то же состояние, что и при открытом джампере звука нет и все попытки его получить пока проваливаются. Менял уже все что можно. Видимо что то я не так ставлю. Просто интересно смог ли кто нибудь еще получить от платы (вообще любой на этом чипе) какой то звук в конфигурации, ну например, addr1=0 и addr2=0 (адрес 0x10) и активном i2c?
 

reverendzah

Active member
да я получал но шла наводка по SDL и SDA .я не стал подтягивать резисторами по 10 КОм забил меня устраивает и регулировки через Volumio
Хорошо а если предположить что плата не сбрасывает из памяти предыдущие настройки ,если не ошибаюсь то это можно сделать замыканием пинов под SDL и SDA
 

sir066

Member
Наводки по SDL и SDA это все фантазии, я думаю, они у меня есть при одном расположении адресных джамперов и отсутствуют при других, при этом в цепи SDL и SDA ничего не меняется, этот шум, насколько я понял, возникает в случае несоответствия битности возникает или из за тогого что подмешивается какой то левый таймслот. Заметил, что когда есть шум тогда реально идет стерео, а когда нет - только левый канал. Понятно, что никакие наводки на один канал влиять не могут. Мне нужно получить устойчивую работу на 16 битах, потому и мучаемся.
 
Последнее редактирование:

sir066

Member
В общем, на текущий момент абсолютно воспроизводимая ситуация выглядит так.

RasPi GPIO2 - SDA
RasPi GPIO3 - SCL

1. Джамперы.

addr1 = Open
addr2 = 0 (аналогично и при addr = PullDown)

Сильный шум в динамиках. Далее после

i2cset -y1 0x10 0xa 0x17

Получаем кристально чистый звук, но только левый канал в обеих динамиках.

2. Если ставим джамперы

addr1 = Open
addr2 = 0

i2cset -y1 0x10 0xa 0x17

имеем стерео звук, но с сильным шумом в обеих каналах.

Во всех случаях плата видна на адресе 0x10. SDL и SDA подтянуты резисторами 4.7К к 3.3в на RasPi.

3. Если ставим джамперы

addr1 = 0
addr2 = 0

Плата видна, адрес 0x10, все читается и пишется, но звук не получается получить ни при каких значениях в регистрах (пока). Значения как в случае 1 и 2 (они одинаковые, кстати, и дефолтные по даташиту кроме 0x17 в регистре 0xa) выставлял (они такие и есть).
 
Последнее редактирование:
Верх