diff --git a/README.md b/README.md index 62d58345..5509adc5 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,21 @@ XMT - 3.3V Use the `squeezelite-esp32-I2S-4MFlash-sdkconfig.defaults` configuration file. +### ESP32 LyraT Mini v1.2 + +This board is one of the [audio developpement board](https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/dev-boards/get-started-esp32-lyrat-mini.html) designed by espressif for their ESP-ADF (Espressif Audio Development Framework). It uses ESP32-WROVER-E as it core and ES8311 as DAC. +A jack connector can be used or an HP output. +It also contains 2 LEDS (one green, one blue) and 8 Buttons. Those buttons are not supported for now. +An ADC is also present on the board, but not used in squeezelite use case. + +As for now, audio playback and LEDs are working. + +Use the `squeezelite-esp32-I2S-4MFlash-sdkconfig.defaults` configuration file. + +- i2c_config: `scl=25,sda=18,speed=400000,port=1` +- dac_config: `model=es8311,bck=5,ws=25,do=26,sda=18,scl=23,i2c=24` +- set_GPIO: `22=green,27=red,19=jack` + ### SqueezeAmpToo ! And the super cool project https://github.com/rochuck/squeeze-amp-too @@ -184,11 +199,11 @@ Default and only "host" is 1 as others are used already by flash and spiram. The ### DAC/I2S The NVS parameter "dac_config" set the gpio used for i2s communication with your DAC. You can define the defaults at compile time but nvs parameter takes precedence except for named configurations ``` -bck=,ws=,do=[,mck=0|1|2][,mute=[:0|1][,model=TAS57xx|TAS5713|AC101|WM8978|ES8388|I2S][,sda=,scl=[,i2c=]] +bck=,ws=,do=[,mck=0|1|2][,mute=[:0|1][,model=TAS57xx|TAS5713|AC101|WM8978|ES8388|ES8311|I2S][,sda=,scl=[,i2c=]] ``` if "model" is not set or is not recognized, then default "I2S" is used. The option "mck" is used for some codecs that require a master clock (although they should not). By default GPIO0 is used as MCLK and only recent builds (post mid-2023) can use 1 or 2. Also be aware that this cannot coexit with RMII Ethernet (see ethernet section below). I2C parameters are optional and only needed if your DAC requires an I2C control (See 'dac_controlset' below). Note that "i2c" parameters are decimal, hex notation is not allowed. -So far, TAS57xx, TAS5713, AC101, WM8978 and ES8388 are recognized models where the proper init sequence/volume/power controls are sent. For other codecs that might require an I2C commands, please use the parameter "dac_controlset" that allows definition of simple commands to be sent over i2c for init, power, speaker and headset on and off using a JSON syntax: +So far, TAS57xx, TAS5713, AC101, WM8978, ES8388 and ES8311 are recognized models where the proper init sequence/volume/power controls are sent. For other codecs that might require an I2C commands, please use the parameter "dac_controlset" that allows definition of simple commands to be sent over i2c for init, power, speaker and headset on and off using a JSON syntax: ```json { : [ , , ... ], : [ , , ... ], diff --git a/components/squeezelite/external/dac_external.c b/components/squeezelite/external/dac_external.c index 66777bef..93047d07 100644 --- a/components/squeezelite/external/dac_external.c +++ b/components/squeezelite/external/dac_external.c @@ -51,6 +51,19 @@ static const struct { {\"reg\":26,\"val\":0}, {\"reg\":27,\"val\":0}, {\"reg\":25,\"val\":50}, {\"reg\":38,\"val\":0}, \ {\"reg\":39,\"val\":184}, {\"reg\":42,\"val\":184}, {\"reg\":46,\"val\":30}, {\"reg\":47,\"val\":30}, \ {\"reg\":48,\"val\":30}, {\"reg\":49,\"val\":30}, {\"reg\":2,\"val\":170}]}" }, + { "es8311", true, + "{\"init\":[ \ + {\"reg\":1,\"val\":48}, {\"reg\":2,\"val\":0}, {\"reg\":3,\"val\":16}, {\"reg\":22,\"val\":36}, \ + {\"reg\":4,\"val\":16}, {\"reg\":5,\"val\":0}, {\"reg\":11,\"val\":0}, {\"reg\":12,\"val\":0}, \ + {\"reg\":16,\"val\":31}, {\"reg\":17,\"val\":127}, {\"reg\":0,\"val\":128}, {\"reg\":0,\"val\":128}, \ + {\"reg\":1,\"val\":63}, {\"reg\":1,\"val\":63}, {\"reg\":2,\"val\":0}, {\"reg\":5,\"val\":0}, \ + {\"reg\":3,\"val\":16}, {\"reg\":4,\"val\":16}, {\"reg\":7,\"val\":0}, {\"reg\":8,\"val\":255}, \ + {\"reg\":6,\"val\":3}, {\"reg\":1,\"val\":63}, {\"reg\":6,\"val\":3}, {\"reg\":19,\"val\":16}, \ + {\"reg\":27,\"val\":10}, {\"reg\":28,\"val\":106}, {\"reg\":9,\"val\":12}, {\"reg\":10,\"val\":12}, \ + {\"reg\":9,\"val\":12}, {\"reg\":10,\"val\":12}, {\"reg\":50,\"val\":178}, {\"reg\":9,\"val\":12}, \ + {\"reg\":10,\"val\":12}, {\"reg\":23,\"val\":191}, {\"reg\":14,\"val\":2} ,{\"reg\":18,\"val\":0}, \ + {\"reg\":20,\"val\":26}, {\"reg\":20,\"val\":26}, {\"reg\":13,\"val\":1}, {\"reg\":21,\"val\":64}, \ + {\"reg\":55,\"val\":72}, {\"reg\":69,\"val\":0}, {\"reg\":50,\"val\":200}]}" }, { NULL, false, NULL } };