GPIO43 current sink capacity?
Posted: Fri Oct 31, 2025 8:05 am
Hi forum.
Own hardware, using ESP32-S3-N16R8V
I have a problem using GPIO43. I am aware of all the tweeks using GPIO43+44. I have the correct output on the pins, but there is a problem with the current sinking capacity of GPIO43 (GPIO44 is fine).
I wanted to use these pins as second I2C. And its the last avaiable pins in my design. I use a costum board, and in this test nothing is connected to the outputs, other than a pull-up resistor. So nothing other than my scope connected.
At first I had a 1.8kohm resistor as pullup, thats the standard I normally use. And the I2C perifials did not respond to anything. I disconnected them, and put on my scope. SDA on GPIO44 is fine, but CLK on GPIO43 only sinks to around 1V.
I tried a higher pullup, but ended up removing them completely, and only use the internal pullup resistors. That lowered the clock low to around 0.4-0.5V with nothing connected. Connecting the perifials, they only partly work, and causes reboot. Probably cause clocks are missed. Moving the perifials on my first I2C bus (GPIO 14 & 21) the work just fine.
I made this test, and it perfectly replicates the problem.
GPIO44 goes perfectly to really clost to 0
GPIO43 ony goes down to around 0.4-0.5V.
Only scope and internal pullup
I also took a brand new board, with an unprogrammed ESP32-S3, and the standard output have samt symptoms, wher TxD dont go all the way to 0, but low values are 0.4-0.5V.
Is this a known hardware issue? Is there a fix? Or do I need to redesign my hardware (hope not), and swop some pins, using GPIO43 where this will not cause a problem.
Happy programming
Attached output. I2C. Only pullup is internally, no external. Note CLK (0V is lowest grid line).
Own hardware, using ESP32-S3-N16R8V
I have a problem using GPIO43. I am aware of all the tweeks using GPIO43+44. I have the correct output on the pins, but there is a problem with the current sinking capacity of GPIO43 (GPIO44 is fine).
I wanted to use these pins as second I2C. And its the last avaiable pins in my design. I use a costum board, and in this test nothing is connected to the outputs, other than a pull-up resistor. So nothing other than my scope connected.
At first I had a 1.8kohm resistor as pullup, thats the standard I normally use. And the I2C perifials did not respond to anything. I disconnected them, and put on my scope. SDA on GPIO44 is fine, but CLK on GPIO43 only sinks to around 1V.
I tried a higher pullup, but ended up removing them completely, and only use the internal pullup resistors. That lowered the clock low to around 0.4-0.5V with nothing connected. Connecting the perifials, they only partly work, and causes reboot. Probably cause clocks are missed. Moving the perifials on my first I2C bus (GPIO 14 & 21) the work just fine.
I made this test, and it perfectly replicates the problem.
Code: Select all
io_conf = {};
io_conf.intr_type = GPIO_INTR_DISABLE; // GPIO_INTR_POSEDGE; // or GPIO_INTR_ANYEDGE
io_conf.mode = GPIO_MODE_OUTPUT;
io_conf.pull_up_en = GPIO_PULLUP_ENABLE;
io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
// Combine all pins with bitwise OR
io_conf.pin_bit_mask =
(1ULL << GPIO_NUM_43) |
(1ULL << GPIO_NUM_44);
gpio_config(&io_conf);
gpio_set_level(GPIO_NUM_43, 0);
gpio_set_level(GPIO_NUM_44, 0);
gpio_set_drive_capability(GPIO_NUM_43, GPIO_DRIVE_CAP_3);
gpio_set_drive_capability(GPIO_NUM_44, GPIO_DRIVE_CAP_3);
GPIO43 ony goes down to around 0.4-0.5V.
Only scope and internal pullup
I also took a brand new board, with an unprogrammed ESP32-S3, and the standard output have samt symptoms, wher TxD dont go all the way to 0, but low values are 0.4-0.5V.
Is this a known hardware issue? Is there a fix? Or do I need to redesign my hardware (hope not), and swop some pins, using GPIO43 where this will not cause a problem.
Happy programming
Attached output. I2C. Only pullup is internally, no external. Note CLK (0V is lowest grid line).