| TC_UART_0001 | UART0_REG_RW - Check reset values of UART0 CTRL, STS, BCTRL, FCS, TXD and RXD
- Walking 1s, 0s, 5s and As pattern test on CTRL, STS, BCTRL and FCS
- Soft reset through CTRL, then re-check all reset values
- Random-data write/read on CTRL, STS, BCTRL and FCS
- Byte, half-word and word accesses (hsize/pstrb check)
- Invalid accesses (RXD write, RXD read, random unmapped addresses in the UART block) in reset scenarios C_RESET2-C_RESET7; each is expected to raise a HardFault and system reset, after which the test continues
| P1 | Jyeshta | PASS 1/1 | 01-Sep-2026 00:09:21 | auto no wiring 1 min – 2 min |
| TC_UART_0002 | UART1_REG_RW - Check reset values of UART1 CTRL, STS, BCTRL, FCS, TXD and RXD
- Walking 1s, 0s, 5s and As pattern test on CTRL, STS, BCTRL and FCS
- Soft reset through CTRL, then re-check all reset values
- Random-data write/read on CTRL, STS, BCTRL and FCS
- Byte, half-word and word accesses (hsize/pstrb check)
- Invalid accesses (RXD write, RXD read, random unmapped addresses in the UART block) in reset scenarios C_RESET2-C_RESET7; each is expected to raise a HardFault and system reset, after which the test continues
| P1 | Jyeshta | PASS 1/1 | 01-Sep-2026 00:09:31 | auto no wiring execution tbd |
| TC_UART_0003 | UART_EXT_LOOPBACK_IOSET0 - UART0 TX is connected to UART1 RX and UART1 TX to UART0 RX
- UART0 sends a 64-word pattern seeded 0x55, UART1 sends one seeded 0xAA
- RX on both UARTs is interrupt based (RX data and RX timeout interrupts)
- Full sweep of baud rate, data width, parity and stop bits
- Result per configuration is logged on the soft UART
| P1 | Jyeshta | PASS 390/390 | 01-Sep-2026 00:08:45 | auto UART_LOOP_IOSET0 execution tbd |
| TC_UART_0004 | UART_EXT_LOOPBACK_IOSET1 - UART0 TX is connected to UART1 RX and UART1 TX to UART0 RX
- UART0 sends a 64-word pattern seeded 0x55, UART1 sends one seeded 0xAA
- RX on both UARTs is interrupt based (RX data and RX timeout interrupts)
- Full sweep of baud rate, data width, parity and stop bits
- Result per configuration is logged on the soft UART
| P1 | Jyeshta | PASS 390/390 | 01-Sep-2026 00:08:55 | auto UART_LOOP_IOSET1 execution tbd |
| TC_UART_0005 | UART_EXT_LOOPBACK_IOSET2 - UART0 TX is connected to UART1 RX and UART1 TX to UART0 RX
- UART1 uses its alternate pins, TX on GPIO_0 (SWDIO pin) and RX on GPIO_7
- Test waits for GPIO_4 to stay high for 500 ms before starting, so the debugger can be detached
- Pin mux is restored to default at the end of the test
- UART0 sends a 64-word pattern seeded 0x55, UART1 sends one seeded 0xAA
- RX on both UARTs is interrupt based (RX data and RX timeout interrupts)
- Full sweep of baud rate, data width, parity and stop bits
- Result per configuration is logged on the soft UART
| P1 | Jyeshta | PASS 390/390 | 07-Sep-2026 19:28:27 | manual UART_LOOP_IOSET2 execution tbd |
| TC_UART_0006 | UART_EXT_DUAL_FDX - UART0 and UART1 are each connected to a PC USB-UART adapter; uart_pc.py runs on the PC
- UART0 sends a 64-byte sequence seeded 0x55, UART1 one seeded 0xAA
- uart_pc.py answers each port with the inverse payload as soon as the first byte arrives, forcing simultaneous TX and RX
- PC checks the SoC data and replies with a 65th byte, & for pass or ! for fail
- RX on both UARTs is interrupt based; results are logged on the soft UART
| P1 | Jyeshta | PASS 432/432 | 01-Sep-2026 00:09:11 | host UART_PC_DUAL execution tbd |
| TC_UART_0007 | UART_OVERRUN_INTERRUPT - UART0 and UART1 send 9 words to each other over the loopback wiring
- RX data interrupt is disabled and the RX FIFO is not read, so the FIFO overruns
- Overrun interrupt is enabled; the ISR records the overrun for each UART
| P1 | Chandana | PASS 1/1 | 01-Sep-2026 00:08:37 | auto UART_LOOP_IOSET0 execution tbd |
| TC_UART_0008 | UART_TX_INTERRUPT - UART0 and UART1 each transmit 64 words, refilling the TX FIFO only from the TX interrupt
- Receiving side uses the RX data interrupt as in TC_UART_0003
| P1 | Jyeshta | In development | - | auto UART_LOOP_IOSET0 execution tbd |
| TC_UART_0009 | UART_BAUD_ACCURACY - Transmit a continuous 0x55 pattern on the TX pin of each UART at each baud rate in the list
- Rates cover whole-number divisors (9600, 115200, 460800) and a fractional divisor (384000 needs 2.4 on 14.7456 MHz)
- Measure the bit time on the TX line with a scope or logic analyser
- Run on the internal oscillator and with an external 14.7456 MHz clock on EXT_CLK
| P1 | unassigned | Not implemented | - | manual UART_BAUD_MEAS execution tbd |
| TC_UART_0010 | UART_RX_STATUS_INTERRUPTS - PARITY_ERROR - transmitter sends even parity into a receiver set for odd parity, then odd into even
- FRAMING_ERROR - transmitter sends back-to-back frames with 1 stop bit into a receiver set for 2 stop bits
- BREAK - transmitter sends a break condition
- RX_TIMEOUT - transmitter sends fewer words than the RX watermark and stops; the timeout is timed with SysTick
- START_OF_FRAME - transmitter sends single frames with idle gaps between them
- Each condition is run UART0 -> UART1 and then UART1 -> UART0
| P2 | unassigned | Not implemented | - | auto UART_LOOP_IOSET0 execution tbd |
| TC_UART_0012 | UART_FIFO - Each check below is run on UART0 and then on UART1
- Fill the TX FIFO with the transmitter disabled and check the TX count at each level
- Receive known numbers of words and check the RX count
- Flush each FIFO and check its count returns to zero
- Step the RX and TX watermarks through their range and check the watermark interrupts
| P2 | unassigned | Not implemented | - | auto UART_LOOP_IOSET0 execution tbd |
| TC_UART_0015 | UART_HALF_DUPLEX - Single-wire half-duplex exchange with the TWS earbud at the baud rate the customer will use
- Repeated for each UART's single-wire pin and each internal pull-up setting
- For each run, increase the baud rate until communication fails to find the highest working rate
- Capture the waveform and record rise and fall times for each run
| P1 | Jyeshta | In development | - | manual UART_HDX_EARBUD execution tbd |
| TC_UART_0017 | UART_DEEPSLEEP_WAKEUP - Enable UART RX as a deep-sleep wake source and enter deep sleep
- PC sends a frame to the sleeping SoC
- SoC wakes, receives the frame and logs the result
- Done once with the wake frame on UART0 and once on UART1
| P1 | Jyeshta | In development | - | host UART_PC_DUAL execution tbd |
| TC_UART_0018 | UART_LOAD_STRESS - THROUGHPUT - time the TC_UART_0003 transfer with TX/RX interrupts while the CPU reads and writes 1 KB of SRAM in a loop (X), then with the CPU idle in while(1) (Y); raise the baud rate until data is corrupted
- SOAK - UART0 <-> UART1 loopback with pseudo-random data for 1 hour while the CPU keeps the SRAM traffic running
| P2 | unassigned | Not implemented | - | auto UART_LOOP_IOSET0 execution tbd |
| TC_UART_0020 | UART_MODE_OPTIONS - MSB_FIRST - UART0 transmits MSb-first while UART1 receives LSb-first, then both ends MSb-first
- POLARITY_INVERTED - invert polarity on one end only, then on both ends
- CLK_MUX_BYPASS - run the loopback with the glitch-free mux in use and with the bypass enabled, changing the setting while idle between transfers
- Each mode is run UART0 -> UART1 and then UART1 -> UART0
| P2 | unassigned | Not implemented | - | auto UART_LOOP_IOSET0 execution tbd |
| TC_UART_0021 | UART_HW_FLOW_CONTROL - Connect UART0 RTS/CTS to UART1 CTS/RTS
- Hold off the receiver and check the transmitter stops while CTS is deasserted
- Run UART0 -> UART1 and then UART1 -> UART0
| P2 | unassigned | Not implemented | - | auto UART_FLOW_CTRL execution tbd |