文章目录
K210实战三-串口收发实验
一、硬件平台
MAIX Bit开发板
二、软件平台
MAIXPY IDE
三、程序编写
K210的uart 模块主要用于驱动开发板上的异步串口,可以自由对 uart 进行配置。k210 一共有3个 uart,每个 uart 可以进行自由的引脚映射。
3.1 引脚映射 fm.register()
在使用 uart 前,我们需要使用 fm 来对芯片引脚进行映射和管理。如下所示,将 PIN10 设置为 uart2 的发送引脚,PIN11 设置为 uart2 的接收引脚
fm.register(board_info.PIN10,fm.fpioa.UART2_TX)
fm.register(board_info.PIN11,fm.fpioa.UART2_RX)
3.2 初始化函数 machine.UART()
uart = machine.UART(uart,baudrate,bits,parity,stop,timeout, read_buf_len)
通过指定的参数新建一个 UART 对象
参数
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对象
3.3 调用API函数
3.3.1 init
用于初始化 uart,一般在构造对象时已经初始化,这里用在重新初始化 uart
uart.init(baudrate,bits,parity,stop,timeout, read_buf_len)
参数
同构造函数,但不需要第一个UART号
3.3.2 read
用于读取串口缓冲中的数据
uart.read(num)
参数
num
: 读取字节的数量,一般填入缓冲大小,如果缓冲中数据的数量没有num
大,那么将只返回缓冲中剩余的数据
返回值
bytes
: 类型的数据
3.3.3 readline
用于读取串口缓冲数据的一行
uart.readline(num)
num
: 读取行的数量
返回值
*bytes
类型的数据
3.3.4 write
用于使用串口发送数据
uart.write(buf)
参数
buf
: 需要发送到数据
返回值
- 写入的数据量
3.3.5 deinit
注销 UART 硬件,释放占用的资源
uart.deinit()
3.3.6 repl_uart()
获取用于 REPL 的串口对象
返回值:
用于 REPL 的串口对象, 默认初始化位 115200 8 N 1
3.4 程序编写
打开IDE编译环境新建文件,开发板与电脑连接
点击IDE右下角连接标志,选择COM口连接MAIX BIT
连接后我们开始编写程序,程序基于MicroPython来编写,需要一定的Python基础,语法简单
#调用需要使用到的库文件
from machine import UART
from Maix import GPIO
from fpioa_manager import fm
import utime
#映射UART2的两个引脚
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 dat\r\n'
#主循环
while(True):
read_str = uart_A.read(10)
print("%s",read_str)
utime.sleep_ms(100)
#判断接受到后返回信息
if read_str != None:
uart_A.write(write_str)
utime.sleep_ms(100)
四、程序下载
点击左下角测试运行代码,观察现象
现象没问题点击工具-选择保存脚本-等待下载完成,重新上电进行测试
五、实验现象
连接USB转TTL与K210的P9和P10 IO口
串口发送数据给K210后,打印在串行终端,K210返回指定的信息