-
Notifications
You must be signed in to change notification settings - Fork 7.6k
ESP32-S3 UART Issue on IO19 & IO20 – Data Corruption #11283
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@mightChamp - Does it enable USB CDC when buiding the test example? |
No, I didn't Enable USB CDC when building the test example. |
Have you tried gpio_dump_io_configuration() Below is an example of how to dump the configuration of GPIO4, GPIO18, and GPIO26: And later on the page
|
@mightChamp - some answers:
Yes, it can be used for any compatible purpose and peripheral.
No specific configuration. I have tested it using a Could you please provide some detailed explanation about how to reproduce this issue? |
Sorry for the delayed response. We are performing OTA updates via GSM, where the GSM module sends the binary file data over UART (Pins 19 and 20). The update library then writes this data to flash for the firmware upgrade. Each time, we receive all data bytes; however, the MD5 checksum of the file does not match. Interestingly, when we switch the UART pins to 17 and 18 and perform the same OTA process, the MD5 checksum always matches. We have thoroughly checked the hardware and found no issues on that front. |
I think that it could be a possible level problem. You can also try adding this to the code: void setup(){
Serial.begin(115200);
// pinMode will force enabling the internal pullup resistor (IDF 5.3.2 Change)
pinMode(19, INPUT_PULLUP);
Serial1.begin(115200,SERIAL_8N1,19,20);
}
void loop(){
while(Serial.available())Serial1.write(Serial.read());
while(Serial1.available())Serial.write(Serial1.read());
} |
Apologies, I forgot to mention earlier that I'm using 4.7K external pull-up resistors on both IO19 and IO20. However, while using pull-ups on GPIO17 and GPIO18 works fine with no UART data corruption, switching to IO19 and IO20 leads to data corruption issues. |
Thanks for the information. I need your help in order to replicate the issue consistently. Please provide a way to replicate it, with a sketch, python scripts and a procedure description (or anything else). |
Another question: is it a ESP32-S3 devkit or some other board?
|
I am using ESP32-S3-WROOM-1 Module(not any devkit) Solder on PCB. And I am using Arduino Core 3.2.0. For issue replicate sketch, I will try to provide soon. |
Board
ESP32-S3
Device Description
esp32-s3 wroom 1 Module
Hardware Configuration
IO19 and IO20 as Uart RX and TX respectively
Version
v3.2.0
IDE Name
Arduino IDE
Operating System
Windows 11
Flash frequency
40Mhz
PSRAM enabled
no
Upload speed
921600
Description
We are attempting to use IO19 and IO20 as UART pins (115200 baud rate) but are encountering unexpected issues. While UART communication works flawlessly on IO17 and IO18 with no data corruption, switching to IO19 and IO20 results in byte corruption.
please clarify the following:
Can GPIO19 and GPIO20 (USB pins) be reliably used for UART communication, as well as for general input and output?
Are there any specific software configurations or additional code modifications required to enable proper UART functionality on these pins?
Sketch
Debug Message
Other Steps to Reproduce
No response
I have checked existing issues, online documentation and the Troubleshooting Guide
The text was updated successfully, but these errors were encountered: