整体代码:
from machine import UART
from Maix import GPIO
from fpioa_manager import fm
import utime
fm.register(GPIO.GPIOHS9,fm.fpioa.UART2_TX)
fm.register(GPIO.GPIOHS10,fm.fpioa.UART2_RX)
uart_A = UART(UART.UART2, 115200, 8, None, 1, timeout=1000, read_buf_len=4096)
write_str = 'get\r\n'
while(True):
read_str = uart_A.read(10) # 电脑-->K210
print("%s",read_str)
utime.sleep_ms(500)
if read_str != None:
uart_A.write(write_str) # K210-->电脑
utime.sleep_ms(500)
效果展示:
程序解析:
1.库文件导入
from machine import UART
from Maix import GPIO
from fpioa_manager import fm
import utime
2.注册引脚
fm.register(GPIO.GPIOHS9,fm.fpioa.UART2_TX)
fm.register(GPIO.GPIOHS10,fm.fpioa.UART2_RX)
将引脚9注册为发生端,引脚10注册为接收端
GPIO9,10都是为高速引脚
3.创建UART对象
uart_A = UART(UART.UART2, 115200, 8, None, 1, timeout=1000, read_buf_len=4096)
uart = machine.UART(uart,baudrate,bits,parity,stop,timeout, read_buf_len)
参数
uart
UART 号,使用指定的 UART,可以通过machine.UART.
按tab键来补全baudrate
: UART 波特率bits
: UART 数据宽度,支持5/6/7/8
(默认的 REPL 使用的串口(UARTHS)只支持 8 位模式), 默认8
parity
: 奇偶校验位,支持None
,machine.UART.PARITY_ODD
,machine.UART.PARITY_EVEN
(默认的 REPL 使用的串口(UARTHS)只支持 None), 默认None
stop
: 停止位, 支持1
,1.5
,2
, 默认1
timeout
: 串口接收超时时间read_buf_len
: 串口接收缓冲,串口通过中断来接收数据,如果缓冲满了,将自动停止数据接收
返回值
- UART对象
4.电脑收发K210
while(True):
read_str = uart_A.read(10) # K210-->电脑
print("%s",read_str)
utime.sleep_ms(500)
uart.read(num) # 读取串口缓冲中的数据
参数
num
: 读取字节的数量,一般填入缓冲大小,如果缓冲中数据的数量没有num
大,那么将只返回缓冲中剩余的数据
返回值
bytes
类型的数据
5.K210收发电脑
write_str = 'OK\r\n'
while(True):
if read_str != None:
uart_A.write(write_str) # 电脑-->K210
utime.sleep_ms(500)
uart.write(buf) # 使用串口发送数据
参数
buf
: 需要发送到数据
返回值
- 写入的数据量