Skip to content

Commit 3ca9802

Browse files
authored
Merge pull request #8571 from lookfwd/fix_8570
Adds I2S mclk support to audiobusio.I2SOut for the Espressif port #8570
2 parents b7b6287 + 3921520 commit 3ca9802

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

ports/espressif/common-hal/audiobusio/I2SOut.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,13 @@
4949
void common_hal_audiobusio_i2sout_construct(audiobusio_i2sout_obj_t *self,
5050
const mcu_pin_obj_t *bit_clock, const mcu_pin_obj_t *word_select,
5151
const mcu_pin_obj_t *data, const mcu_pin_obj_t *main_clock, bool left_justified) {
52-
if (main_clock != NULL) {
53-
mp_raise_NotImplementedError_varg(MP_ERROR_TEXT("%q"), MP_QSTR_main_clock);
54-
}
5552
port_i2s_allocate_init(&self->i2s, left_justified);
5653

5754
i2s_std_config_t i2s_config = {
5855
.clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(48000),
5956
.slot_cfg = I2S_STD_MSB_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO),
6057
.gpio_cfg = {
61-
.mclk = I2S_GPIO_UNUSED,
58+
.mclk = main_clock != NULL ? main_clock->number : I2S_GPIO_UNUSED,
6259
.bclk = bit_clock->number,
6360
.ws = word_select->number,
6461
.dout = data->number,
@@ -68,6 +65,7 @@ void common_hal_audiobusio_i2sout_construct(audiobusio_i2sout_obj_t *self,
6865
CHECK_ESP_RESULT(i2s_channel_init_std_mode(self->i2s.handle, &i2s_config));
6966
self->bit_clock = bit_clock;
7067
self->word_select = word_select;
68+
self->mclk = main_clock;
7169
self->data = data;
7270
claim_pin(bit_clock);
7371
claim_pin(word_select);
@@ -97,6 +95,11 @@ void common_hal_audiobusio_i2sout_deinit(audiobusio_i2sout_obj_t *self) {
9795
}
9896
self->word_select = NULL;
9997

98+
if (self->mclk) {
99+
reset_pin_number(self->mclk->number);
100+
}
101+
self->mclk = NULL;
102+
100103
if (self->data) {
101104
reset_pin_number(self->data->number);
102105
}

ports/espressif/common-hal/audiobusio/I2SOut.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ typedef struct {
4040
const mcu_pin_obj_t *bit_clock;
4141
const mcu_pin_obj_t *word_select;
4242
const mcu_pin_obj_t *data;
43+
const mcu_pin_obj_t *mclk;
4344
} audiobusio_i2sout_obj_t;
4445

4546
#endif

0 commit comments

Comments
 (0)