esp32[s3]: Add ES8311 support for esp32s3-lcd-ev board
This commit is contained in:
parent
ac4b5395f1
commit
b25c4ec963
4 changed files with 228 additions and 0 deletions
111
boards/xtensa/esp32s3/esp32s3-lcd-ev/configs/audio/defconfig
Normal file
111
boards/xtensa/esp32s3/esp32s3-lcd-ev/configs/audio/defconfig
Normal file
|
|
@ -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
|
||||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -45,6 +45,10 @@
|
|||
|
||||
#define I2C_PORT 0
|
||||
|
||||
#ifdef CONFIG_AUDIO_ES8311
|
||||
# define SPEAKER_ENABLE_GPIO 4
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
@ -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");
|
||||
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue