1111#include "driver/i2s.h"
1212
1313#define I2S0_TAG "i2s-0"
14+ #define I2S1_TAG "i2s-1"
1415
1516#ifdef CONFIG_ENABLE_AUDIO_PROMPT
1617static i2s_config_t i2s_output_config = {
@@ -25,8 +26,10 @@ static i2s_config_t i2s_output_config = {
2526 .dma_buf_len = 128 ,
2627 .channel_format = I2S_CHANNEL_FMT_RIGHT_LEFT , // 2-channels
2728};
29+ #endif
2830
29- void i2s0_init (void )
31+ #if (CONFIG_AUDIO_OUTPUT_I2S_NUM == 0 )
32+ static void i2s0_init (void )
3033{
3134 ESP_ERROR_CHECK (i2s_driver_install (I2S_NUM_0 , & i2s_output_config , 0 , NULL ));
3235
@@ -46,12 +49,68 @@ void i2s0_init(void)
4649 );
4750}
4851
52+ static void i2s0_deinit (void )
53+ {
54+ ESP_ERROR_CHECK (i2s_driver_uninstall (I2S_NUM_0 ));
55+
56+ ESP_LOGI (I2S0_TAG , "deinitialized." );
57+ }
58+ #endif
59+
60+ #if (CONFIG_AUDIO_OUTPUT_I2S_NUM == 1 )
61+ static void i2s1_init (void )
62+ {
63+ ESP_ERROR_CHECK (i2s_driver_install (I2S_NUM_1 , & i2s_output_config , 0 , NULL ));
64+
65+ i2s_pin_config_t pin_config = {
66+ .bck_io_num = CONFIG_I2S_BCLK_PIN ,
67+ .ws_io_num = CONFIG_I2S_LRCK_PIN ,
68+ .data_out_num = CONFIG_I2S_DOUT_PIN ,
69+ .data_in_num = -1 , // Not used
70+ };
71+ ESP_ERROR_CHECK (i2s_set_pin (I2S_NUM_1 , & pin_config ));
72+
73+ ESP_LOGI (I2S1_TAG , "initialized, bck: %d, ws: %d, dout: %d, din: %d" ,
74+ pin_config .bck_io_num ,
75+ pin_config .ws_io_num ,
76+ pin_config .data_out_num ,
77+ pin_config .data_in_num
78+ );
79+ }
80+
81+ static void i2s1_deinit (void )
82+ {
83+ ESP_ERROR_CHECK (i2s_driver_uninstall (I2S_NUM_1 ));
84+
85+ ESP_LOGI (I2S1_TAG , "deinitialized." );
86+ }
87+ #endif
88+
89+ #ifdef CONFIG_ENABLE_AUDIO_PROMPT
90+ void i2s_output_init (void )
91+ {
92+ #if (CONFIG_AUDIO_OUTPUT_I2S_NUM == 0 )
93+ i2s0_init ();
94+ #else
95+ i2s1_init ();
96+ #endif
97+ }
98+
99+ void i2s_output_deinit (void )
100+ {
101+ #if (CONFIG_AUDIO_OUTPUT_I2S_NUM == 0 )
102+ i2s0_deinit ();
103+ #else
104+ i2s1_deinit ();
105+ #endif
106+ }
107+
49108void i2s_output_set_sample_rate (int rate )
50109{
51110 if (rate != i2s_output_config .sample_rate ) {
52111 i2s_output_config .sample_rate = rate ;
53- i2s_zero_dma_buffer (0 );
54- i2s_set_sample_rates (0 , i2s_output_config .sample_rate );
112+ i2s_zero_dma_buffer (CONFIG_AUDIO_OUTPUT_I2S_NUM );
113+ i2s_set_sample_rates (CONFIG_AUDIO_OUTPUT_I2S_NUM , i2s_output_config .sample_rate );
55114 }
56115}
57116#endif
0 commit comments