• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Источник аудиоданных I2S // интересный вопрос

mihanick

New member
Доброго времени суток!
Есть идея реализовать bluetooth - передатчик аудиоданных.
Для этого я использую микрофон INMP441с I2S интерфейсом.
Задача состоит в том, что по умолчанию микрофон передает данные (SD), но управляющие сигналы (SCK, WS) приходят от esp32, таким образом, мастером в этой схеме является микроконтроллер, а не микрофон. Мне же необходимо (это обязательное условие), чтобы микрофон являлся мастером-источником (передавал как данные, так и тактовые сигналы), а esp32 - только приемником данных.

Итак, что нужно сделать, чтобы источник аудио стал мастером в схеме с esp32?
Прошу совета или любой полезной информации по реализации данного решения.
Заранее благодарен.

P.S. возможно использовать что-нибудь кроме микрофона (суть - аудиоданные от мастера по I2S)
 

pvvx

Активный участник сообщества
Где вы вычитали, что убогие древние дизайны ESP32 от Espressif Systems могут работать в режиме slave на I2S?
 

pvvx

Активный участник сообщества
ESP32-C3 includes a standard I2S interface. This interface can operate as a master or a slave in full-duplex
mode or half-duplex mode, and can be configured for 8-bit, 16-bit, 24-bit, or 32-bit serial communication. BCK
clock frequency, from 10 kHz up to 40 MHz, is supported.
The I2S interface supports TDM PCM, TDM MSB alignment, TDM standard, and PDM TX interface. It connects
to the GDMA controller.
Так что копайтесь с ESP32-C3.
 

pvvx

Активный участник сообщества
ESP32-C3 или ESP32-S3.
И то учтите, что для тупого чипа от Espressif Systems, дискретизация должна быть не более 48 кГц, или радуйтесь глюкам...
 

mihanick

New member
@pvvx
4.1.12 I2S Interface
Two standard I2S interfaces are available in ESP32. They can be operated in master or slave mode, in full duplex
and half-duplex communication modes, and can be configured to operate with an 8-/16-/32-/48-/64-bit
resolution as input or output channels. BCK clock frequency, from 10 kHz up to 40 MHz, is supported. When
one or both of the I2S interfaces are configured in the master mode, the master clock can be output to the
external DAC/CODEC.
это выписка из даташита на esp32, соответственно тут и указано, что убогие дизайны esp32 могут работать в режиме slave на i2s.
Касательно частоты дискретизации 48 кГц как раз то, что нужно.
 

pvvx

Активный участник сообщества
Значит не работают. В первых доках у Espressif много чего сказано, но потом откинуто, т.к. баги в дизайне.
А уж поддержка даже работающих частей в ПО происходит с годами...
 

pvvx

Активный участник сообщества
Касательно частоты дискретизации 48 кГц как раз то, что нужно.
Тогда в чем вопрос?
Берете доку ESP-IDF и принимаете данные с I2S потоком в 300 килобайт в сек, но куда?
С учетом, что WiFi имеет затыки в приемо-передаче из-за массы условий, вам нужен буфер не менее мегабайта... Иначе это какая-то игрушка с опцией для галочки.
 

pvvx

Активный участник сообщества
Вот не видел никогда “Audio колонки WiFi”, а камеры со звуком по WiFi имеют ужасные задержки и квакания из-за нелинейности распределения времени на клиентов в WiFi и всегда используют буферизацию потока.
Остается вариант полученные audio данные пихать в Bluetooth. Но текущие реализации c ESP пока ещё совсем кривенькие – со временем происходят какие-то рассогласования частот ADC-DAC или переполнения стека и всё срывается в непрерывное квакание и далее в перезагрузку.
Т.е. на ESP сплошные игрушки и нет ни одного рабочего варианта, да не только в Audio...
 

mihanick

New member
@pvvx я понял вашу точку зрения касательно использования esp в данном вопросе, но таково уж техническое задание. Вы пишете про wi-fi, однако я не упоминал про намерения его использовать.
На данный момент нашел способ получить аудио через USB-I2S конвертер на чипе PCM2707c, он и нужные характеристики поддерживает и сам будет являться источником тактового сигнала для данных.
 

pvvx

Активный участник сообщества
но таково уж техническое задание.
А куда ещё можно запихать поток аудиоданных в ESP32, кроме WiFi и Bluetooth?
И если это "техническое задание", то кому вы собрались гнать халтуру?
Продающиеся беспроводные микрофоны используют свою радио передачу или Bluetooth. Но не WiFi.
Есть мелкий частный случай - Ok Google. Там возможна запись в буфер малого куска с последующей передачей по WiFi. Но это экзотика и убогая реализация.
 

pvvx

Активный участник сообщества
PCM270x имеет SYSCK всего 12MHz (да и 16 бит всего и до 48 кГц) и для большинства нормальных audio ADC на 24 бита это очень мало. Как потом синхронизовать систему ADC-DAC?
 
Сверху Снизу