Skip to content

Commit 3fc60e7

Browse files
committed
UART: Change default Serial1/2 pins and move definition to header
1 parent f218209 commit 3fc60e7

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 */
@@ -370,25 +293,25 @@ void HardwareSerial::begin(unsigned long baud, uint32_t config, int8_t rxPin, in
370293
case UART_NUM_0:
371294
if (rxPin < 0 && txPin < 0) {
372295
// do not change RX0/TX0 if it has already been set before
373-
rxPin = _rxPin < 0 ? SOC_RX0 : _rxPin;
374-
txPin = _txPin < 0 ? SOC_TX0 : _txPin;
296+
rxPin = _rxPin < 0 ? (int8_t)SOC_RX0 : _rxPin;
297+
txPin = _txPin < 0 ? (int8_t)SOC_TX0 : _txPin;
375298
}
376299
break;
377300
#if SOC_UART_NUM > 1 // may save some flash bytes...
378301
case UART_NUM_1:
379302
if (rxPin < 0 && txPin < 0) {
380303
// do not change RX1/TX1 if it has already been set before
381-
rxPin = _rxPin < 0 ? RX1 : _rxPin;
382-
txPin = _txPin < 0 ? TX1 : _txPin;
304+
rxPin = _rxPin < 0 ? (int8_t)RX1 : _rxPin;
305+
txPin = _txPin < 0 ? (int8_t)TX1 : _txPin;
383306
}
384307
break;
385308
#endif
386309
#if SOC_UART_NUM > 2 // may save some flash bytes...
387310
case UART_NUM_2:
388311
if (rxPin < 0 && txPin < 0) {
389312
// do not change RX2/TX2 if it has already been set before
390-
rxPin = _rxPin < 0 ? RX2 : _rxPin;
391-
txPin = _txPin < 0 ? TX2 : _txPin;
313+
rxPin = _rxPin < 0 ? (int8_t)RX2 : _rxPin;
314+
txPin = _txPin < 0 ? (int8_t)TX2 : _txPin;
392315
}
393316
break;
394317
#endif

Diff for: cores/esp32/HardwareSerial.h

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

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

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

0 commit comments

Comments
 (0)