1
\$\begingroup\$

I am desiging a PCB that includes an ESP32. I have question about strapping pins of the ESP32-WROOM-32E. My design is suitable below picture only for GPIO 0,GPIO 12,GPIO2 pins.

Unfortunately, I have to connect GPIO15 (MTDO) to GND with my pull down resistor (30kOhm) to disable a few elements initially passive for power consumption. Also, all pins are full. Will this be a problem for booting? I read the section of strapping pins of datasheet, but I did not understand it. In my opinon it is not enough information.

Is silencing the boot message an obstacle to boot? The boot message is not important for me. Can I connect this pin with pull down resistor?

There is same situtation for GPIO5. I'm asking the same question for GPIO 5,too.

Do you think any problem when booting for me?

enter image description here

\$\endgroup\$
2
  • \$\begingroup\$ Couldn't you pull the lines low in code, just after startup? that would eliminate the need for pull-downs. The strapping pins are just sampled at the startup. \$\endgroup\$ Jun 8, 2022 at 19:01
  • \$\begingroup\$ @TirdadSadriNejad thx for quickly response. After a certain time ESP32 goes to deep-sleep mode. GPIO15 and GPIO5 disable to power consuming sensors. So, I dont want to floating/open point. Because this sitution may be affect my power consumption in deep sleep.So,I think that I have to connect pull down resistor.do you think i think wrong? \$\endgroup\$
    – FAFİ
    Jun 8, 2022 at 19:11

3 Answers 3

1
\$\begingroup\$

You can free up GPIO12 so it is just an I/O pin, and not used to determine the flash voltage. This is done by reprogramming the one-time configuration ROM using the espefuse utility, e.g. if the USB link to the ESP32 is on COM4:

espefuse.py --port COM4 set_flash_voltage 3.3V

You can verify the settings using:

espefuse.py --port COM4 summary

I've only done this with GPIO12, but the summary does include a list of parameters that can be changed, which might be useful for your problem.

\$\endgroup\$
1
\$\begingroup\$

Today , I tried that connect to GPIO15 and GPIO5 GND with 26.7kOhm pull down resistor. I had no problems booting.

When booting, voltage levels of GPIO15 and GPIO5 decreased to about 1.7Volts.In my opininon, It behaves as a basic voltage divider. This also show that, These pins really pull up resistor during boot.

After boot i.e after reset ,I was able to configure as a logic 1 or logic 0.I had no problem. But, When I dont configure these pins, These pins stay default value as about 1.7V.

Later, When during a deep sleep, I controlled these pins. ESP32 really pulls down to these pins.I had no problem.

At now, I have question mark about during a deep sleep.Does esp32 draw unexpected current due to pull up resistors when it sleeps ? For example : little output sink current from GPIO15 or GPIO5.

I read datasheet more. I found the document I highlighted in yellow below. I am confused. I just wanted to put my mind at ease and I want to ask you. I want to clarify this before I send it to manufactoring.

@jayben @bobflux

enter image description here

\$\endgroup\$
3
  • \$\begingroup\$ So the hold feature worked? Great! Now the next question, which the datasheet did not answer, is: if you disabled the pullups in software, does it hold that too? I think the only way to know is to measure its power consumption during sleep... \$\endgroup\$
    – bobflux
    Jun 9, 2022 at 12:42
  • \$\begingroup\$ Yes, worked :) After I research little more, like you said that I measure power consumption during deep sleep. @bobflux \$\endgroup\$
    – FAFİ
    Jun 10, 2022 at 9:38
  • \$\begingroup\$ Excellent news! \$\endgroup\$
    – bobflux
    Jun 10, 2022 at 10:20
0
\$\begingroup\$

I had a look at the datasheet...

enter image description here

So it seems you can do the following:

  • Leave the default pullups
  • Boot the ESP32, at which point it will sample the correct values
  • Use the Pad Hold when going to deep sleep to set those pins to 0
  • At this point it will hold these GPIOs to 0 while sleeping, which will do what you want

If you don't use this feature, I'm not entirely sure what will happen during deep sleep. You should check if the default pullups become enabled again when it goes to deep sleep. If this is the case, they will fight your pulldowns and cause unwanted current draw.

Note if you are using one of the convenient boards with pin headers, these may have pullups. And quite oten, the regulator is a crummy AMS1117 which has high idle current.

\$\endgroup\$
5
  • \$\begingroup\$ thanks your information @bobflux . I thought that. But GPIO5 has not RTC_IO properties. So, When it goes to deep sleep, I can not set GPIO level. Your comments are suitable for only GPIO15 that has RTC_IO properties. Am I right? \$\endgroup\$
    – FAFİ
    Jun 8, 2022 at 22:11
  • \$\begingroup\$ Also, I don't use ready-board on market and crummy AMSS1117. My favourite is RT8059GJ5 in this topic. :) @bobflux \$\endgroup\$
    – FAFİ
    Jun 8, 2022 at 22:22
  • \$\begingroup\$ I'm not sure it's only the RTC pads. The documentation is in the usual style of espressif (lol) so it's totally unclear, but it seems to say it works for all pads. Why not try it? Look for RTC_CNTL_DG_PAD_FORCE_HOLD in the technical reference manual. It's only one bit, so I guess it sets all the pins to hold. There's also an autohold feature, but they don't say what it does. \$\endgroup\$
    – bobflux
    Jun 8, 2022 at 22:54
  • \$\begingroup\$ Nice little switcher, bookmarked! I remove AMS1117 from ESP32 modules and replace with LDL1117 which has the same pinout and actually works. \$\endgroup\$
    – bobflux
    Jun 8, 2022 at 22:59
  • \$\begingroup\$ I will try today and i will write you. I'll also put pull down resistor to GPIO15 and GPIO5 ve I will try to boot. \$\endgroup\$
    – FAFİ
    Jun 9, 2022 at 7:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.