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,38 +207,47 @@ esp_err_t i2sSetClock(uint8_t bus_num, uint8_t div_num, uint8_t div_b, uint8_t d
return ESP_OK;
}
void i2sSetPins(uint8_t bus_num, int8_t out, bool invert) {
if (bus_num >= I2S_NUM_MAX) {
void i2sSetPins(uint8_t bus_num, int8_t out, bool invert)
{
if (bus_num >= I2S_NUM_MAX)
{
return;
}
if (out >= 0) {
if (I2S[bus_num].out != out) {
if (I2S[bus_num].out >= 0) {
gpio_matrix_out(I2S[bus_num].out, 0x100, invert, false);
}
I2S[bus_num].out = out;
pinMode(out, OUTPUT);
int8_t outOld = I2S[bus_num].out;
int i2sSignal;
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
// (I2S_NUM_MAX == 2)
if (bus_num == 1) {
i2sSignal = I2S1O_DATA_OUT23_IDX;
}
else
#endif
{
i2sSignal = I2S0O_DATA_OUT23_IDX;
}
gpio_matrix_out(out, i2sSignal, invert, false);
}
} else if (I2S[bus_num].out >= 0) {
gpio_matrix_out(I2S[bus_num].out, 0x100, invert, false);
I2S[bus_num].out = -1;
// disable old pin
if (outOld >= 0)
{
gpio_matrix_out(outOld, 0x100, false, false);
pinMode(outOld, INPUT);
}
if (out >= 0)
{
I2S[bus_num].out = out;
pinMode(out, OUTPUT);
int i2sSignal;
#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3)
// (I2S_NUM_MAX == 2)
if (bus_num == 1)
{
i2sSignal = I2S1O_DATA_OUT23_IDX;
}
else
#endif
{
i2sSignal = I2S0O_DATA_OUT23_IDX;
}
gpio_matrix_out(out, i2sSignal, invert, false);
}
else
{
I2S[bus_num].out = -1;
}
}
bool i2sWriteDone(uint8_t bus_num) {

View File

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