Skip to content

Commit b9fdae7

Browse files
authored
UART: Change default Serial1/2 pins and move definition to header (espressif#8800)
1 parent 9dd9bde commit b9fdae7

File tree

2 files changed

+108
-84
lines changed

2 files changed

+108
-84
lines changed

Diff for: cores/esp32/HardwareSerial.cpp

+6-83
Original file line numberDiff line numberDiff line change
@@ -22,92 +22,15 @@
2222
#define ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE -1
2323
#endif
2424

25-
#ifndef SOC_RX0
26-
#if CONFIG_IDF_TARGET_ESP32
27-
#define SOC_RX0 3
28-
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
29-
#define SOC_RX0 44
30-
#elif CONFIG_IDF_TARGET_ESP32C3
31-
#define SOC_RX0 20
32-
#elif CONFIG_IDF_TARGET_ESP32C6
33-
#define SOC_RX0 17
34-
#elif CONFIG_IDF_TARGET_ESP32H2
35-
#define SOC_RX0 23
36-
#endif
37-
#endif
38-
39-
#ifndef SOC_TX0
40-
#if CONFIG_IDF_TARGET_ESP32
41-
#define SOC_TX0 1
42-
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
43-
#define SOC_TX0 43
44-
#elif CONFIG_IDF_TARGET_ESP32C3
45-
#define SOC_TX0 21
46-
#elif CONFIG_IDF_TARGET_ESP32C6
47-
#define SOC_TX0 16
48-
#elif CONFIG_IDF_TARGET_ESP32H2
49-
#define SOC_TX0 24
50-
#endif
51-
#endif
52-
5325
void serialEvent(void) __attribute__((weak));
5426
void serialEvent(void) {}
5527

5628
#if SOC_UART_NUM > 1
57-
58-
#ifndef RX1
59-
#if CONFIG_IDF_TARGET_ESP32
60-
#define RX1 9
61-
#elif CONFIG_IDF_TARGET_ESP32S2
62-
#define RX1 18
63-
#elif CONFIG_IDF_TARGET_ESP32C3
64-
#define RX1 18
65-
#elif CONFIG_IDF_TARGET_ESP32S3
66-
#define RX1 15
67-
#elif CONFIG_IDF_TARGET_ESP32C6
68-
#define RX1 4
69-
#elif CONFIG_IDF_TARGET_ESP32H2
70-
#define RX1 0
71-
#endif
72-
#endif
73-
74-
#ifndef TX1
75-
#if CONFIG_IDF_TARGET_ESP32
76-
#define TX1 10
77-
#elif CONFIG_IDF_TARGET_ESP32S2
78-
#define TX1 17
79-
#elif CONFIG_IDF_TARGET_ESP32C3
80-
#define TX1 19
81-
#elif CONFIG_IDF_TARGET_ESP32S3
82-
#define TX1 16
83-
#elif CONFIG_IDF_TARGET_ESP32C6
84-
#define TX1 5
85-
#elif CONFIG_IDF_TARGET_ESP32H2
86-
#define TX1 1
87-
#endif
88-
#endif
89-
9029
void serialEvent1(void) __attribute__((weak));
9130
void serialEvent1(void) {}
9231
#endif /* SOC_UART_NUM > 1 */
9332

9433
#if SOC_UART_NUM > 2
95-
#ifndef RX2
96-
#if CONFIG_IDF_TARGET_ESP32
97-
#define RX2 16
98-
#elif CONFIG_IDF_TARGET_ESP32S3
99-
#define RX2 19
100-
#endif
101-
#endif
102-
103-
#ifndef TX2
104-
#if CONFIG_IDF_TARGET_ESP32
105-
#define TX2 17
106-
#elif CONFIG_IDF_TARGET_ESP32S3
107-
#define TX2 20
108-
#endif
109-
#endif
110-
11134
void serialEvent2(void) __attribute__((weak));
11235
void serialEvent2(void) {}
11336
#endif /* SOC_UART_NUM > 2 */
@@ -381,25 +304,25 @@ void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, in
381304
case UART_NUM_0:
382305
if (rxPin < 0 && txPin < 0) {
383306
// do not change RX0/TX0 if it has already been set before
384-
rxPin = _rxPin < 0 ? SOC_RX0 : _rxPin;
385-
txPin = _txPin < 0 ? SOC_TX0 : _txPin;
307+
rxPin = _rxPin < 0 ? (int8_t)SOC_RX0 : _rxPin;
308+
txPin = _txPin < 0 ? (int8_t)SOC_TX0 : _txPin;
386309
}
387310
break;
388311
#if SOC_UART_NUM > 1 // may save some flash bytes...
389312
case UART_NUM_1:
390313
if (rxPin < 0 && txPin < 0) {
391314
// do not change RX1/TX1 if it has already been set before
392-
rxPin = _rxPin < 0 ? RX1 : _rxPin;
393-
txPin = _txPin < 0 ? TX1 : _txPin;
315+
rxPin = _rxPin < 0 ? (int8_t)RX1 : _rxPin;
316+
txPin = _txPin < 0 ? (int8_t)TX1 : _txPin;
394317
}
395318
break;
396319
#endif
397320
#if SOC_UART_NUM > 2 // may save some flash bytes...
398321
case UART_NUM_2:
399322
if (rxPin < 0 && txPin < 0) {
400323
// do not change RX2/TX2 if it has already been set before
401-
rxPin = _rxPin < 0 ? RX2 : _rxPin;
402-
txPin = _txPin < 0 ? TX2 : _txPin;
324+
rxPin = _rxPin < 0 ? (int8_t)RX2 : _rxPin;
325+
txPin = _txPin < 0 ? (int8_t)TX2 : _txPin;
403326
}
404327
break;
405328
#endif

Diff for: cores/esp32/HardwareSerial.h

+102-1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,107 @@ typedef enum {
9696
UART_PARITY_ERROR
9797
} hardwareSerial_error_t;
9898

99+
100+
#ifndef ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE
101+
#define ARDUINO_SERIAL_EVENT_TASK_STACK_SIZE 2048
102+
#endif
103+
104+
#ifndef ARDUINO_SERIAL_EVENT_TASK_PRIORITY
105+
#define ARDUINO_SERIAL_EVENT_TASK_PRIORITY (configMAX_PRIORITIES-1)
106+
#endif
107+
108+
#ifndef ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE
109+
#define ARDUINO_SERIAL_EVENT_TASK_RUNNING_CORE -1
110+
#endif
111+
112+
// UART0 pins are defined by default by the bootloader.
113+
// The definitions for SOC_* should not be changed unless the bootloader pins
114+
// have changed and you know what you are doing.
115+
116+
#ifndef SOC_RX0
117+
#if CONFIG_IDF_TARGET_ESP32
118+
#define SOC_RX0 (gpio_num_t)3
119+
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
120+
#define SOC_RX0 (gpio_num_t)44
121+
#elif CONFIG_IDF_TARGET_ESP32C3
122+
#define SOC_RX0 (gpio_num_t)20
123+
#elif CONFIG_IDF_TARGET_ESP32C6
124+
#define SOC_RX0 (gpio_num_t)17
125+
#elif CONFIG_IDF_TARGET_ESP32H2
126+
#define SOC_RX0 (gpio_num_t)23
127+
#endif
128+
#endif
129+
130+
#ifndef SOC_TX0
131+
#if CONFIG_IDF_TARGET_ESP32
132+
#define SOC_TX0 (gpio_num_t)1
133+
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
134+
#define SOC_TX0 (gpio_num_t)43
135+
#elif CONFIG_IDF_TARGET_ESP32C3
136+
#define SOC_TX0 (gpio_num_t)21
137+
#elif CONFIG_IDF_TARGET_ESP32C6
138+
#define SOC_TX0 (gpio_num_t)16
139+
#elif CONFIG_IDF_TARGET_ESP32H2
140+
#define SOC_TX0 (gpio_num_t)24
141+
#endif
142+
#endif
143+
144+
// Default pins for UART1 are arbitrary, and defined here for convenience.
145+
146+
#if SOC_UART_NUM > 1
147+
#ifndef RX1
148+
#if CONFIG_IDF_TARGET_ESP32
149+
#define RX1 (gpio_num_t)26
150+
#elif CONFIG_IDF_TARGET_ESP32S2
151+
#define RX1 (gpio_num_t)4
152+
#elif CONFIG_IDF_TARGET_ESP32C3
153+
#define RX1 (gpio_num_t)18
154+
#elif CONFIG_IDF_TARGET_ESP32S3
155+
#define RX1 (gpio_num_t)15
156+
#elif CONFIG_IDF_TARGET_ESP32C6
157+
#define RX1 (gpio_num_t)4
158+
#elif CONFIG_IDF_TARGET_ESP32H2
159+
#define RX1 (gpio_num_t)0
160+
#endif
161+
#endif
162+
163+
#ifndef TX1
164+
#if CONFIG_IDF_TARGET_ESP32
165+
#define TX1 (gpio_num_t)27
166+
#elif CONFIG_IDF_TARGET_ESP32S2
167+
#define TX1 (gpio_num_t)5
168+
#elif CONFIG_IDF_TARGET_ESP32C3
169+
#define TX1 (gpio_num_t)19
170+
#elif CONFIG_IDF_TARGET_ESP32S3
171+
#define TX1 (gpio_num_t)16
172+
#elif CONFIG_IDF_TARGET_ESP32C6
173+
#define TX1 (gpio_num_t)5
174+
#elif CONFIG_IDF_TARGET_ESP32H2
175+
#define TX1 (gpio_num_t)1
176+
#endif
177+
#endif
178+
#endif /* SOC_UART_NUM > 1 */
179+
180+
// Default pins for UART2 are arbitrary, and defined here for convenience.
181+
182+
#if SOC_UART_NUM > 2
183+
#ifndef RX2
184+
#if CONFIG_IDF_TARGET_ESP32
185+
#define RX2 (gpio_num_t)4
186+
#elif CONFIG_IDF_TARGET_ESP32S3
187+
#define RX2 (gpio_num_t)19
188+
#endif
189+
#endif
190+
191+
#ifndef TX2
192+
#if CONFIG_IDF_TARGET_ESP32
193+
#define TX2 (gpio_num_t)25
194+
#elif CONFIG_IDF_TARGET_ESP32S3
195+
#define TX2 (gpio_num_t)20
196+
#endif
197+
#endif
198+
#endif /* SOC_UART_NUM > 2 */
199+
99200
typedef std::function<void(void)> OnReceiveCb;
100201
typedef std::function<void(hardwareSerial_error_t)> OnReceiveErrorCb;
101202

@@ -208,7 +309,7 @@ class HardwareSerial: public Stream
208309
// Used to set RS485 modes such as UART_MODE_RS485_HALF_DUPLEX for Auto RTS function on ESP32
209310
// UART_MODE_UART = 0x00 mode: regular UART mode
210311
// UART_MODE_RS485_HALF_DUPLEX = 0x01 mode: half duplex RS485 UART mode control by RTS pin
211-
// UART_MODE_IRDA = 0x02 mode: IRDA UART mode
312+
// UART_MODE_IRDA = 0x02 mode: IRDA UART mode
212313
// UART_MODE_RS485_COLLISION_DETECT = 0x03 mode: RS485 collision detection UART mode (used for test purposes)
213314
// UART_MODE_RS485_APP_CTRL = 0x04 mode: application control RS485 UART mode (used for test purposes)
214315
bool setMode(SerialMode mode);

0 commit comments

Comments
 (0)