• Damien George's avatar
    tests/extmod_hardware: Add tests for machine.UART.IRQ_RX/RXIDLE/BREAK. · 09d070aa
    Damien George authored
    These all require hardware connections, so live in a different directory.
    
    Except for the IRQ_BREAK test of ESP32 devices a single UART with loopback
    is sufficient.
    
    General:
        SAMD21: Due to the limited flash size only SAMD21 devices with external
        flash support uart.irq().
    
    IRQ_BREAK:
        ESP32 needs different UART devices for creating and sensing a break.
        Lacking a second UART the test is skipped for ESP32S2 and ESP32C3.  RP2
        does not pass the test reliable at 115200 baud, reason to be found.
        Thus the upper limit is set to 57600 Baud.
    
        Coverage:
            esp32  pass when different UART devices are used.
            rp2    pass up to 57600 baud
    
    IRQ_RX:
        SAMD21: Being a slow device it needs data to be sent byte-by-byte at
        9600 baud, since the IRQ callback is scheduled delayed and then the
        flags do not match any more.  The data matches since it is queued in
        the FIFO resp. ringbuffer.
    
        CC3200: The test cannot be performed since no calls are accepted in the
        IRQ handler like u.read(). Skipped.
    
        Coverage:
            cc3200 fail due to major differences in the implementation.
            esp32  pass
            nrf    pass
            renesas-ra pass
            samd   pass see the notes.
            stm32  pass
    
    IRQ_RXIDLE:
        STM32: With PyBoard the IRQ is called several times, but only once with
        the flag IRQ_RXIDLE set.
    
        Coverage:
            esp32    pass
            mimxrt   pass
            renesas-ra pass
            rp2      pass
            samd     pass for both SAMD21 and SAMD51
            stm32    fail. see notes.
    Signed-off-by: default avatarDamien George <damien@micropython.org>
    Signed-off-by: default avatarrobert-hh <robert@hammelrath.com>
    09d070aa
machine_uart_irq_rx.py 1.94 KB