Teensy 3.2/3.5/3.6/4.0 use Serial1 or 2
Arduino\hardware\teensy\avr\cores\teensy3\HardwareSerial.h
Arduino\hardware\teensy\avr\cores\teensy4\HardwareSerial.h
// uncomment to enable 9 bit formats
#define SERIAL_9BIT_SUPPORT
Change Serial1/2 TX RX buffer size,ex:
SERIAL1_TX_BUFFER_SIZE to 128
SERIAL1_RX_BUFFER_SIZE to 128
API Serial
begin(9600, SERIAL_9O1); // Jeti is 9O2, but 9O1 (1 stop bit only) is ok
flush(), available()
Read 9bits:
int val = (pExSerial->read() & 0x1ff);
Write 9bits:
write9bit(uint32_t data)
Half/Duplex single wire per software:
if (serialNumber == 1) {
#if defined(__IMXRT1062__)
uartCtrl = &LPUART6_CTRL;
LPUART6_CTRL |= (LPUART_CTRL_LOOPS | LPUART_CTRL_RSRC);
IOMUXC_LPUART6_TX_SELECT_INPUT = 1;
#else
uartCtrl = &UART0_C3;
UART0_C1 |= (UART_C1_LOOPS | UART_C1_RSRC);
#endif
}
if (serialNumber == 2) {
#if defined(__IMXRT1062__)
uartCtrl = &LPUART4_CTRL;
LPUART4_CTRL |= (LPUART_CTRL_LOOPS | LPUART_CTRL_RSRC);
IOMUXC_LPUART4_TX_SELECT_INPUT = 2;
#else
uartCtrl = &UART1_C3;
UART1_C1 |= (UART_C1_LOOPS | UART_C1_RSRC);
#endif
}
void set_tx_mode(void) {
#if defined(__IMXRT1062__)
*uartCtrl |= LPUART_CTRL_TXDIR;
#else
*uartCtrl |= UART_C3_TXDIR;
#endif
}
void set_rx_mode(void) {
#if defined(__IMXRT1062__)
*uartCtrl &= ~LPUART_CTRL_TXDIR;
#else
*uartCtrl &= ~UART_C3_TXDIR;
#endif
}