I am working on an ESP32-S3 project and need to interface multiple peripheral devices using UART and I2C protocols. However, the datasheet does not clearly specify which GPIO pins correspond to specific UART and I2C ports, which is causing some uncertainty.
I have assigned the following GPIOs for communication and would like confirmation on whether this configuration will work correctly:
GPIO19 - I2C - SDA
GPIO20 - I2C - SCL
GPIO10 - UART - TX
GPIO11 - UART - RX
GPIO17 - UART - TX
GPIO18 - UART - RX
Also what If I swap GPIO10 TX with GPIO11 RX in assignment
Sry for my doubts i have never uploaded code to chip i usually i use dev boards .So can you tell me how do you upload the code from your system to the chip
You pull the IO0 Pin to Ground then Reset the ESP32 by pulling EN Pin to Ground. This prodecure put ESP32 to BootLoad Mode. Then you upload the compile bin file thorugh RX0/TX0 pin.
I am using push button to pull-down pins.
After upload complete, Reset the ESp32 again to start running.
You just have to supply 3.3v Gnd Rx and Tx. You can use USB to TTL converter or any thing else. Your PC will right the BIN file to ESP32 thorugh TTL Protocol.
For your concerns
As long as you’re not using GPIO17 and GPIO18 for debugging (via the USB serial port), your pin assignments should work well. If you need UART0 for debugging, consider using other available GPIOs like GPIO16, GPIO14, or others for your UART connections.
Do remember that whilst you can use the default pins for interfaces, on the ESP32S3 you can easily re-assign the pins used by the UART,SPI,I2C and MMX interfaces.