ESP32 I2S

来自Jack's Lab
跳转到: 导航, 搜索

1 Overview

Two I2S channels of ESP32



2 Hacking

2.1 Pin

Need to call the gpio_matrix_out()/gpio_matrix_in() to setup the gpio matrix:

/*
  * @brief set gpio input to a signal, one gpio can input to several signals.
  * @param uint32_t gpio : gpio number, 0~0x27
  * @param uint32_t signal_idx : signal index.
  * @param bool inv : the signal is inv or not
  * @return None
  */
void gpio_matrix_in(uint32_t gpio, uint32_t signal_idx, bool inv);

/*
  * @brief set signal output to gpio, one signal can output to several gpios.
  * @param uint32_t gpio : gpio number, 0~0x27
  * @param uint32_t signal_idx : signal index.
  *                        signal_idx == 0x100, cancel output put to the gpio
  * @param bool out_inv : the signal output is inv or not
  * @param bool oen_inv : the signal output enable is inv or not
  */
void gpio_matrix_out(uint32_t gpio, uint32_t signal_idx, bool out_inv, bool oen_inv);


The signal_idx of I2S is in components/esp32/include/soc/gpio_sig_map.h:

#define I2S0O_BCK_IN_IDX			23
#define I2S0O_BCK_OUT_IDX			23
#define I2S1O_BCK_IN_IDX			24
#define I2S1O_BCK_OUT_IDX			24
#define I2S0O_WS_IN_IDX			25
#define I2S0O_WS_OUT_IDX			25
#define I2S1O_WS_IN_IDX			26
#define I2S1O_WS_OUT_IDX			26
#define I2S0I_BCK_IN_IDX			27
#define I2S0I_BCK_OUT_IDX			27
#define I2S0I_WS_IN_IDX			28
#define I2S0I_WS_OUT_IDX			28
#define I2S0I_DATA_IN0_IDX			140
#define I2S0O_DATA_OUT0_IDX			140
#define I2S0I_DATA_IN1_IDX			141
#define I2S0O_DATA_OUT1_IDX			141
#define I2S0I_DATA_IN2_IDX			142
#define I2S0O_DATA_OUT2_IDX			142
#define I2S0I_DATA_IN3_IDX			143
#define I2S0O_DATA_OUT3_IDX			143
#define I2S0I_DATA_IN4_IDX			144
#define I2S0O_DATA_OUT4_IDX			144
#define I2S0I_DATA_IN5_IDX			145
#define I2S0O_DATA_OUT5_IDX			145
#define I2S0I_DATA_IN6_IDX			146
#define I2S0O_DATA_OUT6_IDX			146
#define I2S0I_DATA_IN7_IDX			147
#define I2S0O_DATA_OUT7_IDX			147
#define I2S0I_DATA_IN8_IDX			148
#define I2S0O_DATA_OUT8_IDX			148
#define I2S0I_DATA_IN9_IDX			149
#define I2S0O_DATA_OUT9_IDX			149
#define I2S0I_DATA_IN10_IDX			150
#define I2S0O_DATA_OUT10_IDX			150
#define I2S0I_DATA_IN11_IDX			151
#define I2S0O_DATA_OUT11_IDX			151
#define I2S0I_DATA_IN12_IDX			152
#define I2S0O_DATA_OUT12_IDX			152
#define I2S0I_DATA_IN13_IDX			153
#define I2S0O_DATA_OUT13_IDX			153
#define I2S0I_DATA_IN14_IDX			154
#define I2S0O_DATA_OUT14_IDX			154
#define I2S0I_DATA_IN15_IDX			155
#define I2S0O_DATA_OUT15_IDX			155
#define I2S0O_DATA_OUT16_IDX			156
#define I2S0O_DATA_OUT17_IDX			157
#define I2S0O_DATA_OUT18_IDX			158
#define I2S0O_DATA_OUT19_IDX			159
#define I2S0O_DATA_OUT20_IDX			160
#define I2S0O_DATA_OUT21_IDX			161
#define I2S0O_DATA_OUT22_IDX			162
#define I2S0O_DATA_OUT23_IDX			163
#define I2S1I_BCK_IN_IDX			164
#define I2S1I_BCK_OUT_IDX			164
#define I2S1I_WS_IN_IDX			165
#define I2S1I_WS_OUT_IDX			165
#define I2S1I_DATA_IN0_IDX			166
#define I2S1O_DATA_OUT0_IDX			166
#define I2S1I_DATA_IN1_IDX			167
#define I2S1O_DATA_OUT1_IDX			167
#define I2S1I_DATA_IN2_IDX			168
#define I2S1O_DATA_OUT2_IDX			168
#define I2S1I_DATA_IN3_IDX			169
#define I2S1O_DATA_OUT3_IDX			169
#define I2S1I_DATA_IN4_IDX			170
#define I2S1O_DATA_OUT4_IDX			170
#define I2S1I_DATA_IN5_IDX			171
#define I2S1O_DATA_OUT5_IDX			171
#define I2S1I_DATA_IN6_IDX			172
#define I2S1O_DATA_OUT6_IDX			172
#define I2S1I_DATA_IN7_IDX			173
#define I2S1O_DATA_OUT7_IDX			173
#define I2S1I_DATA_IN8_IDX			174
#define I2S1O_DATA_OUT8_IDX			174
#define I2S1I_DATA_IN9_IDX			175
#define I2S1O_DATA_OUT9_IDX			175
#define I2S1I_DATA_IN10_IDX			176
#define I2S1O_DATA_OUT10_IDX			176
#define I2S1I_DATA_IN11_IDX			177
#define I2S1O_DATA_OUT11_IDX			177
#define I2S1I_DATA_IN12_IDX			178
#define I2S1O_DATA_OUT12_IDX			178
#define I2S1I_DATA_IN13_IDX			179
#define I2S1O_DATA_OUT13_IDX			179
#define I2S1I_DATA_IN14_IDX			180
#define I2S1O_DATA_OUT14_IDX			180
#define I2S1I_DATA_IN15_IDX			181
#define I2S1O_DATA_OUT15_IDX			181
#define I2S1O_DATA_OUT16_IDX			182
#define I2S1O_DATA_OUT17_IDX			183
#define I2S1O_DATA_OUT18_IDX			184
#define I2S1O_DATA_OUT19_IDX			185
#define I2S1O_DATA_OUT20_IDX			186
#define I2S1O_DATA_OUT21_IDX			187
#define I2S1O_DATA_OUT22_IDX			188
#define I2S1O_DATA_OUT23_IDX			189
#define I2S0I_H_SYNC_IDX			190
#define I2S0I_V_SYNC_IDX			191
#define I2S0I_H_ENABLE_IDX			192
#define I2S1I_H_SYNC_IDX			193
#define I2S1I_V_SYNC_IDX			194
#define I2S1I_H_ENABLE_IDX			195











个人工具
名字空间

变换
操作
导航
工具箱