Skip to content

Commit

Permalink
esp32[s3]: Add ES8311 support for esp32s3-lcd-ev board
Browse files Browse the repository at this point in the history
  • Loading branch information
eren-terzioglu authored and acassis committed Feb 8, 2025
1 parent ac4b539 commit b25c4ec
Show file tree
Hide file tree
Showing 4 changed files with 228 additions and 0 deletions.
111 changes: 111 additions & 0 deletions boards/xtensa/esp32s3/esp32s3-lcd-ev/configs/audio/defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#
# This file is autogenerated: PLEASE DO NOT EDIT IT.
#
# You can use "make menuconfig" to make any modifications to the installed .config file.
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
# modifications.
#
# CONFIG_ARCH_LEDS is not set
# CONFIG_AUDIO_FORMAT_MP3 is not set
# CONFIG_AUDIO_FORMAT_SBC is not set
# CONFIG_ESP32S3_I2S0_RX is not set
# CONFIG_NSH_ARGCAT is not set
# CONFIG_NSH_CMDOPT_HEXDUMP is not set
CONFIG_ALLOW_BSD_COMPONENTS=y
CONFIG_ARCH="xtensa"
CONFIG_ARCH_BOARD="esp32s3-lcd-ev"
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_BOARD_ESP32S3_LCD_EV=y
CONFIG_ARCH_CHIP="esp32s3"
CONFIG_ARCH_CHIP_ESP32S3=y
CONFIG_ARCH_CHIP_ESP32S3WROOM2N16R8V=y
CONFIG_ARCH_INTERRUPTSTACK=2048
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_XTENSA=y
CONFIG_AUDIO=y
CONFIG_AUDIO_ES8311=y
CONFIG_AUDIO_EXCLUDE_BALANCE=y
CONFIG_AUDIO_EXCLUDE_FFORWARD=y
CONFIG_AUDIO_EXCLUDE_TONE=y
CONFIG_AUDIO_I2S=y
CONFIG_AUDIO_I2SCHAR=y
CONFIG_AUDIO_NUM_BUFFERS=8
CONFIG_BOARD_LOOPSPERMSEC=16717
CONFIG_BUILTIN=y
CONFIG_DEBUG_FULLOPT=y
CONFIG_DEBUG_SYMBOLS=y
CONFIG_DRIVERS_AUDIO=y
CONFIG_DRIVERS_IEEE80211=y
CONFIG_DRIVERS_WIRELESS=y
CONFIG_ESP32S3_I2C0=y
CONFIG_ESP32S3_I2C0_SCLPIN=18
CONFIG_ESP32S3_I2C0_SDAPIN=17
CONFIG_ESP32S3_I2S0=y
CONFIG_ESP32S3_I2S0_BCLKPIN=9
CONFIG_ESP32S3_I2S0_DOUTPIN=8
CONFIG_ESP32S3_I2S0_MCLK=y
CONFIG_ESP32S3_I2S0_MCLKPIN=16
CONFIG_ESP32S3_I2S0_WSPIN=45
CONFIG_ESP32S3_I2S=y
CONFIG_ESP32S3_SPIFLASH=y
CONFIG_ESP32S3_SPIFLASH_SPIFFS=y
CONFIG_ESP32S3_UART0=y
CONFIG_ESP32S3_WIFI=y
CONFIG_EXAMPLES_RANDOM=y
CONFIG_FS_PROCFS=y
CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_I2S_DMADESC_NUM=4
CONFIG_IDLETHREAD_STACKSIZE=3072
CONFIG_INIT_ENTRYPOINT="nsh_main"
CONFIG_INIT_STACKSIZE=3072
CONFIG_INTELHEX_BINARY=y
CONFIG_IOB_NBUFFERS=124
CONFIG_IOB_THROTTLE=24
CONFIG_LINE_MAX=64
CONFIG_NETDB_DNSCLIENT=y
CONFIG_NETDEV_LATEINIT=y
CONFIG_NETDEV_PHY_IOCTL=y
CONFIG_NETDEV_WIRELESS_IOCTL=y
CONFIG_NETUTILS_CJSON=y
CONFIG_NET_BROADCAST=y
CONFIG_NET_ETH_PKTSIZE=1518
CONFIG_NET_ICMP_SOCKET=y
CONFIG_NET_STATISTICS=y
CONFIG_NET_TCP=y
CONFIG_NET_TCP_DELAYED_ACK=y
CONFIG_NET_TCP_WRITE_BUFFERS=y
CONFIG_NET_UDP=y
CONFIG_NET_UDP_WRITE_BUFFERS=y
CONFIG_NSH_ARCHINIT=y
CONFIG_NSH_BUILTIN_APPS=y
CONFIG_NSH_FILEIOSIZE=512
CONFIG_NSH_READLINE=y
CONFIG_NXPLAYER_HTTP_STREAMING_SUPPORT=y
CONFIG_NXPLAYER_MAINTHREAD_STACKSIZE=4096
CONFIG_PREALLOC_TIMERS=4
CONFIG_PTHREAD_MUTEX_TYPES=y
CONFIG_RAM_SIZE=114688
CONFIG_RAM_START=0x20000000
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_WAITPID=y
CONFIG_SMP=y
CONFIG_SMP_NCPUS=2
CONFIG_SPIFFS_NAME_MAX=128
CONFIG_START_DAY=6
CONFIG_START_MONTH=12
CONFIG_START_YEAR=2011
CONFIG_SYSLOG_BUFFER=y
CONFIG_SYSTEM_DHCPC_RENEW=y
CONFIG_SYSTEM_NSH=y
CONFIG_SYSTEM_NXPLAYER=y
CONFIG_SYSTEM_PING=y
CONFIG_TIMER=y
CONFIG_TLS_NELEM=4
CONFIG_TLS_TASK_NELEM=4
CONFIG_UART0_SERIAL_CONSOLE=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_WAPI=y
CONFIG_WIRELESS_WAPI_CMDTOOL=y
CONFIG_WIRELESS_WAPI_INITCONF=y
CONFIG_WIRELESS_WAPI_STACKSIZE=4096
7 changes: 7 additions & 0 deletions boards/xtensa/esp32s3/esp32s3-lcd-ev/include/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,11 @@
# define BOARD_CLOCK_FREQUENCY 80000000
#endif

/* Peripherals definitions **************************************************/

#ifdef CONFIG_AUDIO_ES8311
# define ES8311_I2C_FREQ 100000
# define ES8311_I2C_ADDR 0x18
#endif

#endif /* __BOARDS_XTENSA_ESP32S3_ESP32S3_LCD_EV_INCLUDE_BOARD_H */
29 changes: 29 additions & 0 deletions boards/xtensa/esp32s3/esp32s3-lcd-ev/src/esp32s3-lcd-ev.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@

#define I2C_PORT 0

#ifdef CONFIG_AUDIO_ES8311
# define SPEAKER_ENABLE_GPIO 4
#endif

/****************************************************************************
* Public Types
****************************************************************************/
Expand Down Expand Up @@ -194,5 +198,30 @@ int board_ioexpander_output(int pin, bool level);
int board_ioexpander_initialize(void);
#endif

/****************************************************************************
* Name: esp32s3_es8311_initialize
*
* Description:
* This function is called by platform-specific, setup logic to configure
* and register the ES8311 device. This function will register the driver
* as /dev/audio/pcm[x] where x is determined by the I2S port number.
*
* Input Parameters:
* i2c_port - The I2C port used for the device
* i2c_addr - The I2C address used by the device
* i2c_freq - The I2C frequency used for the device
* i2s_port - The I2S port used for the device
*
* Returned Value:
* Zero is returned on success. Otherwise, a negated errno value is
* returned to indicate the nature of the failure.
*
****************************************************************************/

#ifdef CONFIG_AUDIO_ES8311
int esp32s3_es8311_initialize(int i2c_port, uint8_t i2c_addr, int i2c_freq,
int i2s_port);
#endif

#endif /* __ASSEMBLY__ */
#endif /* __BOARDS_XTENSA_ESP32S3_ESP32S3_LCD_EV_SRC_ESP32S3_LCD_EV_H */
81 changes: 81 additions & 0 deletions boards/xtensa/esp32s3/esp32s3-lcd-ev/src/esp32s3_bringup.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@

#include <errno.h>
#include <nuttx/fs/fs.h>
#include <arch/board/board.h>

#include "esp32s3_gpio.h"

#ifdef CONFIG_ESP32S3_TIMER
# include "esp32s3_board_tim.h"
Expand All @@ -54,6 +57,14 @@
# include "esp32s3_wifi_adapter.h"
#endif

#ifdef CONFIG_ESP32S3_I2C
# include "esp32s3_i2c.h"
#endif

#ifdef CONFIG_ESP32S3_I2S
# include "esp32s3_i2s.h"
#endif

#ifdef CONFIG_ESP32S3_RT_TIMER
# include "esp32s3_rt_timer.h"
#endif
Expand Down Expand Up @@ -101,6 +112,11 @@
int esp32s3_bringup(void)
{
int ret;
#if (defined(CONFIG_ESP32S3_I2S0) && !defined(CONFIG_AUDIO_CS4344) && \
!defined(CONFIG_AUDIO_ES8311)) || defined(CONFIG_ESP32S3_I2S1)
bool i2s_enable_tx;
bool i2s_enable_rx;
#endif

#if defined(CONFIG_ESP32S3_EFUSE)
ret = esp32s3_efuse_initialize("/dev/efuse");
Expand Down Expand Up @@ -170,6 +186,71 @@ int esp32s3_bringup(void)
}
#endif

#ifdef CONFIG_ESP32S3_I2S
# ifdef CONFIG_ESP32S3_I2S0
# ifdef CONFIG_AUDIO_ES8311

/* Configure ES8311 audio on I2C0 and I2S0 */

esp32s3_configgpio(SPEAKER_ENABLE_GPIO, OUTPUT);
esp32s3_gpiowrite(SPEAKER_ENABLE_GPIO, true);

ret = esp32s3_es8311_initialize(ESP32S3_I2C0, ES8311_I2C_ADDR,
ES8311_I2C_FREQ, ESP32S3_I2S0);
if (ret != OK)
{
syslog(LOG_ERR, "Failed to initialize ES8311 audio: %d\n", ret);
}

# else
# ifdef CONFIG_ESP32S3_I2S0_TX
i2s_enable_tx = true;
# else
i2s_enable_tx = false;
# endif /* CONFIG_ESP32S3_I2S0_TX */

# ifdef CONFIG_ESP32S3_I2S0_RX
i2s_enable_rx = true;
# else
i2s_enable_rx = false;
# endif /* CONFIG_ESP32S3_I2S0_RX */

/* Configure I2S generic audio on I2S0 */

ret = board_i2sdev_initialize(ESP32S3_I2S0, i2s_enable_tx, i2s_enable_rx);
if (ret < 0)
{
syslog(LOG_ERR, "Failed to initialize I2S0 driver: %d\n", ret);
}

# endif /* CONFIG_AUDIO_ES8311 */
# endif /* CONFIG_ESP32S3_I2S0 */

# ifdef CONFIG_ESP32S3_I2S1
# ifdef CONFIG_ESP32S3_I2S1_TX
i2s_enable_tx = true;
# else
i2s_enable_tx = false;
# endif /* CONFIG_ESP32S3_I2S1_TX */

# ifdef CONFIG_ESP32S3_I2S1_RX
i2s_enable_rx = true;
# else
i2s_enable_rx = false;
# endif /* CONFIG_ESP32S3_I2S1_RX */

/* Configure I2S generic audio on I2S1 */

ret = board_i2sdev_initialize(ESP32S3_I2S1, i2s_enable_tx, i2s_enable_rx);
if (ret < 0)
{
syslog(LOG_ERR, "Failed to initialize I2S%d driver: %d\n",
CONFIG_ESP32S3_I2S1, ret);
}

# endif /* CONFIG_ESP32S3_I2S1 */
#endif /* CONFIG_ESP32S3_I2S */

#ifdef CONFIG_INPUT_BUTTONS
/* Register the BUTTON driver */

Expand Down

0 comments on commit b25c4ec

Please sign in to comment.