circuitpython/tests/wipy/uart.py

165 lines
3.9 KiB
Python
Raw Normal View History

2021-03-15 09:57:36 -04:00
"""
UART test for the CC3200 based boards.
UART0 and UART1 must be connected together for this test to pass.
2021-03-15 09:57:36 -04:00
"""
2015-09-27 07:45:48 -04:00
from machine import UART
from machine import Pin
import os
import time
2015-09-27 07:45:48 -04:00
mch = os.uname().machine
2021-03-15 09:57:36 -04:00
if "LaunchPad" in mch:
uart_id_range = range(0, 2)
2021-03-15 09:57:36 -04:00
uart_pins = [
[("GP12", "GP13"), ("GP12", "GP13", "GP7", "GP6")],
[("GP16", "GP17"), ("GP16", "GP17", "GP7", "GP6")],
]
elif "WiPy" in mch:
uart_id_range = range(0, 2)
2021-03-15 09:57:36 -04:00
uart_pins = [
[("GP12", "GP13"), ("GP12", "GP13", "GP7", "GP6")],
[("GP16", "GP17"), ("GP16", "GP17", "GP7", "GP6")],
]
else:
2021-03-15 09:57:36 -04:00
raise Exception("Board not supported!")
# just in case we have the repl duplicated on any of the uarts
os.dupterm(None)
for uart_id in uart_id_range:
uart = UART(uart_id, 38400)
print(uart)
uart.init(57600, 8, None, 1, pins=uart_pins[uart_id][0])
uart.init(baudrate=9600, stop=2, parity=UART.EVEN, pins=uart_pins[uart_id][1])
uart.init(baudrate=115200, parity=UART.ODD, stop=0, pins=uart_pins[uart_id][0])
uart = UART(baudrate=1000000)
uart.sendbreak()
uart = UART(baudrate=1000000)
uart = UART()
print(uart)
2021-03-15 09:57:36 -04:00
uart = UART(baudrate=38400, pins=("GP12", "GP13"))
print(uart)
2021-03-15 09:57:36 -04:00
uart = UART(pins=("GP12", "GP13"))
print(uart)
2021-03-15 09:57:36 -04:00
uart = UART(pins=(None, "GP17"))
print(uart)
2021-03-15 09:57:36 -04:00
uart = UART(baudrate=57600, pins=("GP16", "GP17"))
print(uart)
# 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)
2021-03-15 09:57:36 -04:00
print(uart0.write(b"123456") == 6)
print(uart1.read() == b"123456")
2021-03-15 09:57:36 -04:00
print(uart1.write(b"123") == 3)
print(uart0.read(1) == b"1")
print(uart0.read(2) == b"23")
print(uart0.read() == None)
2021-03-15 09:57:36 -04:00
uart0.write(b"123")
buf = bytearray(3)
print(uart1.readinto(buf, 1) == 1)
print(buf)
print(uart1.readinto(buf) == 2)
print(buf)
# try initializing without the id
uart0 = UART(baudrate=1000000, pins=uart_pins[0][0])
2021-03-15 09:57:36 -04:00
uart0.write(b"1234567890")
time.sleep_ms(2) # because of the fifo interrupt levels
print(uart1.any() == 10)
2021-03-15 09:57:36 -04:00
print(uart1.readline() == b"1234567890")
print(uart1.any() == 0)
2021-03-15 09:57:36 -04:00
uart0.write(b"1234567890")
print(uart1.read() == b"1234567890")
# tx only mode
2021-03-15 09:57:36 -04:00
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() == None)
# rx only mode
2021-03-15 09:57:36 -04:00
uart0 = UART(0, 1000000, pins=(None, "GP13"))
print(uart0.write(b"123456") == 6)
print(uart1.read() == None)
2021-03-15 09:57:36 -04:00
print(uart1.write(b"123") == 3)
print(uart0.read() == b"123")
# leave pins as they were (rx only mode)
uart0 = UART(0, 1000000, pins=None)
2021-03-15 09:57:36 -04:00
print(uart0.write(b"123456") == 6)
print(uart1.read() == None)
2021-03-15 09:57:36 -04:00
print(uart1.write(b"123") == 3)
print(uart0.read() == b"123")
2017-05-29 03:08:14 -04:00
# no pin assignment
uart0 = UART(0, 1000000, pins=(None, None))
2021-03-15 09:57:36 -04:00
print(uart0.write(b"123456789") == 9)
print(uart1.read() == None)
2021-03-15 09:57:36 -04:00
print(uart1.write(b"123456789") == 9)
print(uart0.read() == None)
print(Pin.board.GP12)
print(Pin.board.GP13)
# check for memory leaks...
2021-03-15 09:57:36 -04:00
for i in range(0, 1000):
uart0 = UART(0, 1000000)
uart1 = UART(1, 1000000)
# next ones must raise
try:
2021-03-15 09:57:36 -04:00
UART(0, 9600, parity=None, pins=("GP12", "GP13", "GP7"))
except Exception:
2021-03-15 09:57:36 -04:00
print("Exception")
try:
2021-03-15 09:57:36 -04:00
UART(0, 9600, parity=UART.ODD, pins=("GP12", "GP7"))
except Exception:
2021-03-15 09:57:36 -04:00
print("Exception")
uart0 = UART(0, 1000000)
uart0.deinit()
try:
uart0.any()
except Exception:
2021-03-15 09:57:36 -04:00
print("Exception")
try:
uart0.read()
except Exception:
2021-03-15 09:57:36 -04:00
print("Exception")
try:
2021-03-15 09:57:36 -04:00
uart0.write("abc")
except Exception:
2021-03-15 09:57:36 -04:00
print("Exception")
try:
2021-03-15 09:57:36 -04:00
uart0.sendbreak("abc")
except Exception:
2021-03-15 09:57:36 -04:00
print("Exception")
try:
UART(2, 9600)
except Exception:
2021-03-15 09:57:36 -04:00
print("Exception")
for uart_id in uart_id_range:
uart = UART(uart_id, 1000000)
uart.deinit()
# test printing an unitialized uart
print(uart)
# initialize it back and check that it works again
uart.init(115200)
print(uart)
uart.read()