diff options
Diffstat (limited to 'tests/wipy/uart.py')
-rw-r--r-- | tests/wipy/uart.py | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/tests/wipy/uart.py b/tests/wipy/uart.py new file mode 100644 index 0000000000..82bbe8a38b --- /dev/null +++ b/tests/wipy/uart.py @@ -0,0 +1,87 @@ +''' +UART test fro the CC3200 based boards. +UART0 and UART1 must be connected together for this test to pass. +''' + +from pyb import UART +from pyb import Pin +import os + +machine = os.uname().machine +if 'LaunchPad' in machine: + uart_id_range = range(0, 2) + uart_pins = [[('GP12', 'GP13'), ('GP12', 'GP13', 'GP7', 'GP6')], [('GP16', 'GP17'), ('GP16', 'GP17', 'GP7', 'GP6')]] +elif 'WiPy' in machine: + uart_id_range = range(0, 2) + uart_pins = [[('GP12', 'GP13'), ('GP12', 'GP13', 'GP7', 'GP6')], [('GP16', 'GP17'), ('GP16', 'GP17', 'GP7', 'GP6')]] +else: + raise Exception('Board not supported!') + +for uart_id in uart_id_range: + uart = UART(uart_id, 38400) + print(uart) + uart.init(baudrate=57600, stop=1, parity=None, pins=uart_pins[uart_id][0]) + uart.init(baudrate=9600, stop=2, parity=0, pins=uart_pins[uart_id][1]) + uart.init(baudrate=115200, parity=1, pins=uart_pins[uart_id][0]) + uart.sendbreak() + +# assign GP1, GP2, GP3 and GP4 back to GPIO mode +Pin('GP1', mode=Pin.IN) +Pin('GP2', mode=Pin.IN) +Pin('GP3', mode=Pin.IN) +Pin('GP4', mode=Pin.IN) + +# now it's time for some loopback tests between the uarts +uart0 = UART(0, 1000000, pins=uart_pins[0][0]) +print(uart0) +uart1 = UART(1, 1000000, pins=uart_pins[1][0]) +print(uart1) + +print(uart0.write(b'123456') == 6) +print(uart1.read() == b'123456') + +print(uart1.write(b'123') == 3) +print(uart0.read(1) == b'1') +print(uart0.read(2) == b'23') +print(uart0.read() == b'') + +uart0.write(b'123') +buf = bytearray(3) +print(uart1.readinto(buf, 1) == 1) +print(buf) +print(uart1.readinto(buf) == 2) +print(buf) + +uart0.write(b'123') +print(uart1.any() > 0) +print(uart1.readline() == b'123') +print(uart1.any() == 0) + +uart0.write(b'1234567890') +print(uart1.readall() == b'1234567890') + +# tx only mode +Pin('GP13', mode=Pin.IN) +uart0 = UART(0, 1000000, pins=('GP12', None)) +print(uart0.write(b'123456') == 6) +print(uart1.read() == b'123456') +print(uart1.write(b'123') == 3) +print(uart0.read() == b'') + +# rx only mode +Pin('GP12', mode=Pin.IN) +uart0 = UART(0, 1000000, pins=(None, 'GP13')) +print(uart0.write(b'123456') == 6) +print(uart1.read() == b'') +print(uart1.write(b'123') == 3) +print(uart0.read() == b'123') + +# next ones must raise +try: + UART(0, 9600, parity=2, pins=('GP12', 'GP13', 'GP7')) +except Exception: + print('Exception') +try: + UART(0, 9600, parity=2, pins=('GP12', 'GP7')) +except Exception: + print('Exception') |