Page 1 of 1

GPIO36 and 39 in ESP32-WROVER-E don’t work

Posted: Sat Oct 09, 2021 5:48 pm
by samsam
There is some hardware problem with GPIO36,39(SENSOR_V*) on ESP32-WROVER-E and cant be used as inputs :(
I checked the schematic of this module (v1.4 Datasheet), don’t see any capacitors attached to those pins (as they were to blame in some other topics for the same problem, but for other modules).

Is there any solution to make those 2 pins 36,39 (SENSOR_V*) working as general-purpose inputs?

I check and the rest of input only pins 32,33,34,35 and they working without any problems (except that need external R)

Thanks

Re: GPIO36 and 39 in ESP32-WROVER-E don’t work

Posted: Sun Oct 10, 2021 2:53 am
by rudi ;-)
samsam wrote:
Sat Oct 09, 2021 5:48 pm
There is some hardware problem with GPIO36,39(SENSOR_V*) on ESP32-WROVER-E and cant be used as inputs :(
https://www.esp32.com/viewtopic.php?t=14087#p54962

it is also possible to read the internal hall effect sensor via ADC1 by calling dedicated function hall_sensor_read(). Note that even the hall sensor is internal to ESP32, reading from it uses channels 0 and 3 of ADC1 (GPIO 36 and 39). Do not connect anything else to these pins and do not change their configuration. Otherwise it may affect the measurement of low value signal from the sensor.
info


GPI: GPIO34-39 can only be set as input mode and do not have software-enabled pullup or pulldown functions.
info



did you test the adc function on this SENSOR_VP SENSOR_VN pins? do they not work as ADC input pins?
btw: 36, 39 has on few boards caps on
i am not sure does the WROVER-E has caps on this pins - from Datasheet it is saying not outside on first look.


https://www.esp32.com/viewtopic.php?t=12120
https://www.esp32.com/viewtopic.php?f=2&t=8594

Re: GPIO36 and 39 in ESP32-WROVER-E don’t work

Posted: Sun Oct 10, 2021 4:33 am
by samsam
I didn't try GPIO36 and 39 in ADC mode as I need IOs only as discrete inputs. Unfortunately my oscilloscope died some time ago and didn't fix it yet, but from what I can see from the code I was running and a multimeter readout: on those pins appears very short spikes to 0 on a regular basis (I pull-up with 47K to 3.3 V, but tried and with 10K and it is the same result). Spikes seems are very short, because the multimeter cant catch them, though it has and frequency mode. Interrupts for high to low are triggered on those pins on a regular basis (without any pressing of the attached button), so there is something internally that induce variable signal on those 2 (only) pins.
If the problem is the built in hall effect sensor, is it possible to disable/ disconnect it from those pins? I anyway for this application dont need hall effect sensor, but I am quite short on digital IOs :( ?

Re: GPIO36 and 39 in ESP32-WROVER-E don’t work

Posted: Sun Oct 10, 2021 2:59 pm
by WiFive

Re: GPIO36 and 39 in ESP32-WROVER-E don’t work

Posted: Wed Oct 13, 2021 9:22 pm
by samsam
Could you, please, elaborate more on the comments you gave link for, because are quite vague:

@note Please do not use the interrupt of GPIO36 and GPIO39 when using ADC or Wi-Fi with sleep mode enabled.
* Please refer to the comments of `adc1_get_raw`.
* Please refer to section 3.11 of 'ECO_and_Workarounds_for_Bugs_in_ESP32' for the description of this issue.
* As a workaround, call adc_power_acquire() in the app. This will result in higher power consumption (by ~1mA),
* but will remove the glitches on GPIO36 and GPIO39.

1. Does it mean that cant use any interrupt on GPIO36|39?
2. I am not using any adc functions or any peripheral mentioned in ECO 3.11, but how could check if adc or some of those peripheral are not enabled by default or from any of the examples parts of which I used to build my application (at least test searching doesn't return me anything)?
3. For WiFi I used the examples from station_example_main.c + examples\wifi\wps\main\wps.c - cant find either anything on "sleep" search there.
4. 3.11 of ECO says bug is only one pulling down for 80ns when powering some of the mentioned devices, but such pulling down I observe on a regular interval?
5. is adc_power_acquire() workaround only for making adc working or and for GPIO?
Thanks