Correct State Clearing (#511)

This commit is contained in:
Michael Miller
2021-08-07 17:05:33 -07:00
committed by GitHub
parent fbe11816da
commit 7ddd954973
2 changed files with 36 additions and 28 deletions

View File

@@ -207,23 +207,33 @@ esp_err_t i2sSetClock(uint8_t bus_num, uint8_t div_num, uint8_t div_b, uint8_t d
return ESP_OK; return ESP_OK;
} }
void i2sSetPins(uint8_t bus_num, int8_t out, bool invert) { void i2sSetPins(uint8_t bus_num, int8_t out, bool invert)
if (bus_num >= I2S_NUM_MAX) { {
if (bus_num >= I2S_NUM_MAX)
{
return; return;
} }
if (out >= 0) { int8_t outOld = I2S[bus_num].out;
if (I2S[bus_num].out != out) {
if (I2S[bus_num].out >= 0) { // disable old pin
gpio_matrix_out(I2S[bus_num].out, 0x100, invert, false); if (outOld >= 0)
{
gpio_matrix_out(outOld, 0x100, false, false);
pinMode(outOld, INPUT);
} }
if (out >= 0)
{
I2S[bus_num].out = out; I2S[bus_num].out = out;
pinMode(out, OUTPUT); pinMode(out, OUTPUT);
int i2sSignal; int i2sSignal;
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) #if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
// (I2S_NUM_MAX == 2) // (I2S_NUM_MAX == 2)
if (bus_num == 1) { if (bus_num == 1)
{
i2sSignal = I2S1O_DATA_OUT23_IDX; i2sSignal = I2S1O_DATA_OUT23_IDX;
} }
else else
@@ -234,11 +244,10 @@ void i2sSetPins(uint8_t bus_num, int8_t out, bool invert) {
gpio_matrix_out(out, i2sSignal, invert, false); gpio_matrix_out(out, i2sSignal, invert, false);
} }
} else if (I2S[bus_num].out >= 0) { else
gpio_matrix_out(I2S[bus_num].out, 0x100, invert, false); {
I2S[bus_num].out = -1; I2S[bus_num].out = -1;
} }
} }
bool i2sWriteDone(uint8_t bus_num) { bool i2sWriteDone(uint8_t bus_num) {

View File

@@ -169,8 +169,7 @@ public:
yield(); yield();
} }
gpio_matrix_out(_pin, 0x100, false, false); i2sSetPins(_bus.I2sBusNumber, -1, false);
pinMode(_pin, INPUT);
free(_data); free(_data);
free(_i2sBuffer); free(_i2sBuffer);