Use this forum to chat about hardware specific topics for the ESP8266 (peripherals, memory, clocks, JTAG, programming)

User avatar
By kenn
#21802 To stir the pot a bit...

In all the literature I've seen, including this one ;) yes they show the same as the Olimex truth table above - that both GPIO0 and GPIO2 are expected to be 1 at bootup for normal (Flash) operation.

But two observations:

1 - There's no truth-table entry anywhere I've looked for what would happen if GPIO0 is 1 and GPIO2 is 0 at boot. When I get home I'll try it on one of my sacrificial ESP-01s

2 - No-one's mentioned whether the ESP8266 has internal pullups, which are more common these days. I can't lay my hands immediately on a doc which exhaustively details what internal pullup/downs are available , but from this official hardware doc i saw the following (page 35):

By default the Flash is empty. Therefore, the following procedures should be followed when you
burn the programs into the Flash:
• Before burning, set the module to work under UART Download mode;
• Pull IO15 and IO0 to low-voltage level, leave IO2 dangled;
• Burning the programs into Flash;
• Burning the program into Flash using flash downloading tools;
• After burning the programs into Flash, pull down IO15 to low-voltage level, keep IO2 dangled,
and pull up IO0 to high-voltage level. The module is then shifted from UART Download mode to
the Flash Boot mode;
• The initialisation would read and run programs from Flash after it is powered on.


This kind of suggests to me that an external pullup on GPIO2 isn't mandatory. Which is not to say that including one wouldn't be good practice.

Image

Carry on...
User avatar
By j0hncc
#21806 Yes and there is also the official doc of the Pin Function Table in which annotates GPIO2 "wpu" which would seem to mean "with pull up"?
You do not have the required permissions to view the files attached to this post.
User avatar
By martinayotte
#21814 Hi Kenn,

kenn wrote:1 - There's no truth-table entry anywhere I've looked for what would happen if GPIO0 is 1 and GPIO2 is 0 at boot.


As I said yesterday, I've tried it with GPIO2 at LOW : it doesn't boot any more.
I presume this case is maybe for future modes that doesn't exist yet or they are not documented yet.
User avatar
By martinayotte
#21816 Hi John,

j0hncc wrote:Yes and there is also the official doc of the Pin Function Table in which annotates GPIO2 "wpu" which would seem to mean "with pull up"?


That's is maybe true, although I think "wpu" means more "weak pull up", and they are really "week" ;) since when I've used both GPIO0/GPIO2 as an I2C bus, there were really not strong enough to have the I2C bus working properly, so I used 4K7. (maybe internal ones are 47K or even 100K)