uart原理自行百度,相关内容很多其他博主写过并且质量很高,这里不再赘述。
调用circuitpy的busio模块来使用uart,除此以外,spi、iic等要需要使用该模块,使用方法见
官方教程 ,详细信息见文档
官方的例子简洁,但没有过多其他应用的细节,主要是数据格式,发送数据方面。
收发数据的格式是字节数组,该类型要求数据不可变,因此如果要修改,需要额外新建,然后将其转换为字节数组。
然后是注意bytearray方法,它要求输入参数是可迭代对象,建议使用列表。
在初始化时,使用busio.UART()方法创建uart对象,参数列表为TX,RX ,波特率,可以参考引脚图选择功能引脚。
代码
import board
import busio
import digitalio
# For most CircuitPython boards:
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
uart = busio.UART(board.GP12, board.GP13, baudrate=9600)#格式: tx rx 波特率
while True:
data = uart.read(32) # 读最多32字节数据
# print(data) # 数据是字节数组
if data is not None:
led.value = True
d=bytearray(data)# 把数据转换为字节数组,要求数据是可迭代对象,如列表
# d=bytearray([data[0]+1])#返回加一的数据,注意字节数组不可变
uart.write(d)# 写数据
# 把字节数组转换为字符串
data_string = ''.join([chr(b) for b in data])
# print(data_string, end="")
print(data_string," ",d,end='\n')
led.value = False