Skip to content

Commit 4533ddb

Browse files
committed
Enable Uart config argument
1 parent e8f90bc commit 4533ddb

File tree

2 files changed

+34
-42
lines changed

2 files changed

+34
-42
lines changed

cores/nRF5/HardwareSerial.h

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -20,49 +20,41 @@
2020
#define HardwareSerial_h
2121

2222
#include <inttypes.h>
23+
#include <nrf.h>
2324

2425
#include "Stream.h"
2526

26-
#define HARDSER_PARITY_EVEN (0x1ul)
27-
#define HARDSER_PARITY_ODD (0x2ul)
28-
#define HARDSER_PARITY_NONE (0x3ul)
29-
#define HARDSER_PARITY_MASK (0xFul)
27+
// below configs are not supported by nRF52
28+
// #define SERIAL_5N1
29+
// #define SERIAL_6N1
30+
// #define SERIAL_7N1
31+
// #define SERIAL_5N2
32+
// #define SERIAL_6N2
33+
// #define SERIAL_7N2
34+
// #define SERIAL_5E1
35+
// #define SERIAL_6E1
36+
// #define SERIAL_7E1
37+
// #define SERIAL_5E2
38+
// #define SERIAL_6E2
39+
// #define SERIAL_7E2
40+
// #define SERIAL_5O1
41+
// #define SERIAL_6O1
42+
// #define SERIAL_7O1
43+
// #define SERIAL_8O1
44+
// #define SERIAL_5O2
45+
// #define SERIAL_6O2
46+
// #define SERIAL_7O2
47+
// #define SERIAL_8O2
3048

31-
#define HARDSER_STOP_BIT_1 (0x10ul)
32-
#define HARDSER_STOP_BIT_1_5 (0x20ul)
33-
#define HARDSER_STOP_BIT_2 (0x30ul)
34-
#define HARDSER_STOP_BIT_MASK (0xF0ul)
35-
36-
#define HARDSER_DATA_5 (0x100ul)
37-
#define HARDSER_DATA_6 (0x200ul)
38-
#define HARDSER_DATA_7 (0x300ul)
39-
#define HARDSER_DATA_8 (0x400ul)
40-
#define HARDSER_DATA_MASK (0xF00ul)
41-
42-
#define SERIAL_5N1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_NONE | HARDSER_DATA_5)
43-
#define SERIAL_6N1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_NONE | HARDSER_DATA_6)
44-
#define SERIAL_7N1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_NONE | HARDSER_DATA_7)
45-
#define SERIAL_8N1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_NONE | HARDSER_DATA_8)
46-
#define SERIAL_5N2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_NONE | HARDSER_DATA_5)
47-
#define SERIAL_6N2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_NONE | HARDSER_DATA_6)
48-
#define SERIAL_7N2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_NONE | HARDSER_DATA_7)
49-
#define SERIAL_8N2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_NONE | HARDSER_DATA_8)
50-
#define SERIAL_5E1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_EVEN | HARDSER_DATA_5)
51-
#define SERIAL_6E1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_EVEN | HARDSER_DATA_6)
52-
#define SERIAL_7E1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_EVEN | HARDSER_DATA_7)
53-
#define SERIAL_8E1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_EVEN | HARDSER_DATA_8)
54-
#define SERIAL_5E2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_EVEN | HARDSER_DATA_5)
55-
#define SERIAL_6E2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_EVEN | HARDSER_DATA_6)
56-
#define SERIAL_7E2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_EVEN | HARDSER_DATA_7)
57-
#define SERIAL_8E2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_EVEN | HARDSER_DATA_8)
58-
#define SERIAL_5O1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_ODD | HARDSER_DATA_5)
59-
#define SERIAL_6O1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_ODD | HARDSER_DATA_6)
60-
#define SERIAL_7O1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_ODD | HARDSER_DATA_7)
61-
#define SERIAL_8O1 (HARDSER_STOP_BIT_1 | HARDSER_PARITY_ODD | HARDSER_DATA_8)
62-
#define SERIAL_5O2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_ODD | HARDSER_DATA_5)
63-
#define SERIAL_6O2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_ODD | HARDSER_DATA_6)
64-
#define SERIAL_7O2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_ODD | HARDSER_DATA_7)
65-
#define SERIAL_8O2 (HARDSER_STOP_BIT_2 | HARDSER_PARITY_ODD | HARDSER_DATA_8)
49+
#ifdef NRF52832_XXAA
50+
#define SERIAL_8N1 (UARTE_CONFIG_PARITY_Excluded << UARTE_CONFIG_PARITY_Pos)
51+
#define SERIAL_8E1 (UARTE_CONFIG_PARITY_Included << UARTE_CONFIG_PARITY_Pos)
52+
#elif NRF52840_XXAA
53+
#define SERIAL_8N1 ((UARTE_CONFIG_STOP_One << UARTE_CONFIG_STOP_Pos) | (UARTE_CONFIG_PARITY_Excluded << UARTE_CONFIG_PARITY_Pos))
54+
#define SERIAL_8N2 ((UARTE_CONFIG_STOP_Two << UARTE_CONFIG_STOP_Pos) | (UARTE_CONFIG_PARITY_Excluded << UARTE_CONFIG_PARITY_Pos))
55+
#define SERIAL_8E1 ((UARTE_CONFIG_STOP_One << UARTE_CONFIG_STOP_Pos) | (UARTE_CONFIG_PARITY_Included << UARTE_CONFIG_PARITY_Pos))
56+
#define SERIAL_8E2 ((UARTE_CONFIG_STOP_Two << UARTE_CONFIG_STOP_Pos) | (UARTE_CONFIG_PARITY_Included << UARTE_CONFIG_PARITY_Pos))
57+
#endif
6658

6759
class HardwareSerial : public Stream
6860
{

cores/nRF5/Uart.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ void Uart::begin(unsigned long baudrate)
6464
begin(baudrate, (uint8_t)SERIAL_8N1);
6565
}
6666

67-
void Uart::begin(unsigned long baudrate, uint16_t /*config*/)
67+
void Uart::begin(unsigned long baudrate, uint16_t config)
6868
{
6969
// skip if already begun
7070
if ( _begun ) return;
@@ -75,9 +75,9 @@ void Uart::begin(unsigned long baudrate, uint16_t /*config*/)
7575
if (uc_hwFlow == 1) {
7676
nrfUart->PSEL.CTS = uc_pinCTS;
7777
nrfUart->PSEL.RTS = uc_pinRTS;
78-
nrfUart->CONFIG = (UARTE_CONFIG_PARITY_Excluded << UARTE_CONFIG_PARITY_Pos) | UARTE_CONFIG_HWFC_Enabled;
78+
nrfUart->CONFIG = config | (UARTE_CONFIG_HWFC_Enabled << UARTE_CONFIG_HWFC_Pos);
7979
} else {
80-
nrfUart->CONFIG = (UARTE_CONFIG_PARITY_Excluded << UARTE_CONFIG_PARITY_Pos) | UARTE_CONFIG_HWFC_Disabled;
80+
nrfUart->CONFIG = config | (UARTE_CONFIG_HWFC_Disabled << UARTE_CONFIG_HWFC_Pos);
8181
}
8282

8383
uint32_t nrfBaudRate;

0 commit comments

Comments
 (0)