chore(swan_r5):tests used to smoke test the board functionality
This commit is contained in:
parent
2a05b22f42
commit
9d27d249cf
|
@ -0,0 +1,20 @@
|
||||||
|
import board
|
||||||
|
import busio
|
||||||
|
|
||||||
|
i2c = busio.I2C(board.SCL, board.SDA)
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
# Wait for I2C lock
|
||||||
|
while not i2c.try_lock():
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Scan for devices on the I2C bus
|
||||||
|
print("Scanning I2C bus")
|
||||||
|
for x in i2c.scan():
|
||||||
|
print(hex(x))
|
||||||
|
count += 1
|
||||||
|
|
||||||
|
print("%d device(s) found on I2C bus" % count)
|
||||||
|
|
||||||
|
# Release the I2C bus
|
||||||
|
i2c.unlock()
|
|
@ -0,0 +1,56 @@
|
||||||
|
|
||||||
|
import board
|
||||||
|
import busio
|
||||||
|
import digitalio
|
||||||
|
|
||||||
|
cs = digitalio.DigitalInOut(board.SS)
|
||||||
|
cs.direction = digitalio.Direction.OUTPUT
|
||||||
|
cs.value = True
|
||||||
|
|
||||||
|
BME680_SPI_REGISTER = 0x73
|
||||||
|
BME680_CHIPID_REGISTER = 0xD0
|
||||||
|
BME680_CHIPID = 0x61
|
||||||
|
SPI_HERZ = 0x500000
|
||||||
|
|
||||||
|
spi = busio.SPI(board.SCK, MISO=board.MISO, MOSI=board.MOSI)
|
||||||
|
|
||||||
|
def readByte(addr):
|
||||||
|
value = -1
|
||||||
|
while not spi.try_lock():
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
spi.configure(baudrate=500000, phase=0, polarity=0)
|
||||||
|
|
||||||
|
cs.value = False
|
||||||
|
result = bytearray(1)
|
||||||
|
result[0] = addr | 0x80
|
||||||
|
spi.write(result)
|
||||||
|
spi.readinto(result)
|
||||||
|
value = result[0]
|
||||||
|
return value
|
||||||
|
finally:
|
||||||
|
spi.unlock()
|
||||||
|
cs.value = True
|
||||||
|
|
||||||
|
def writeByte(addr, value):
|
||||||
|
while not spi.try_lock():
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
spi.configure(baudrate=500000, phase=0, polarity=0)
|
||||||
|
|
||||||
|
cs.value = False
|
||||||
|
result = bytearray(2)
|
||||||
|
result[0] = addr & ~0x80
|
||||||
|
result[1] = value
|
||||||
|
spi.write(result)
|
||||||
|
finally:
|
||||||
|
spi.unlock()
|
||||||
|
|
||||||
|
# put the device in the correct mode to read the ID
|
||||||
|
reg = readByte(BME680_SPI_REGISTER)
|
||||||
|
if (reg & 16)!=0:
|
||||||
|
writeByte(BME680_SPI_REGISTER, reg & ~16)
|
||||||
|
|
||||||
|
id = readByte(BME680_CHIPID_REGISTER)
|
||||||
|
|
||||||
|
print(f"id is {id}, expected {BME680_CHIPID}")
|
|
@ -0,0 +1,37 @@
|
||||||
|
import board
|
||||||
|
import busio
|
||||||
|
import digitalio
|
||||||
|
import usb_cdc
|
||||||
|
import time
|
||||||
|
|
||||||
|
while not usb_cdc.console.in_waiting:
|
||||||
|
time.sleep(0.1)
|
||||||
|
|
||||||
|
print("USART test")
|
||||||
|
|
||||||
|
# For most CircuitPython boards:
|
||||||
|
led = digitalio.DigitalInOut(board.LED)
|
||||||
|
# For QT Py M0:
|
||||||
|
# led = digitalio.DigitalInOut(board.SCK)
|
||||||
|
led.direction = digitalio.Direction.OUTPUT
|
||||||
|
|
||||||
|
uart = busio.UART(board.TX, board.RX, baudrate=9600)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
data = uart.read(32) # read up to 32 bytes
|
||||||
|
# print(data) # this is a bytearray type
|
||||||
|
|
||||||
|
if data is not None:
|
||||||
|
led.value = True
|
||||||
|
|
||||||
|
# convert bytearray to string
|
||||||
|
data_string = '*'.join([chr(b) for b in data])
|
||||||
|
print(data_string, end="")
|
||||||
|
|
||||||
|
led.value = False
|
||||||
|
|
||||||
|
if usb_cdc.console.in_waiting:
|
||||||
|
data = usb_cdc.console.read()
|
||||||
|
data_string = '*'.join([chr(b) for b in data])
|
||||||
|
print("writing "+data_string)
|
||||||
|
uart.write(data)
|
|
@ -0,0 +1,9 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("Random number test")
|
||||||
|
r = os.urandom(32)
|
||||||
|
print(f"urandom TRNG string is {r}")
|
||||||
|
|
||||||
|
main()
|
||||||
|
|
Loading…
Reference in New Issue