K210实战三-串口收发实验

Posted Jeck xu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K210实战三-串口收发实验相关的知识,希望对你有一定的参考价值。

K210实战三-串口收发实验

一、硬件平台

MAIX Bit开发板

在这里插入图片描述

二、软件平台

MAIXPY IDE

20210211161417

三、程序编写

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: 停止位, 支持 11.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编译环境新建文件,开发板与电脑连接

20210212114301

点击IDE右下角连接标志,选择COM口连接MAIX BIT

20210212114420

连接后我们开始编写程序,程序基于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)

四、程序下载

点击左下角测试运行代码,观察现象

20210523151218

现象没问题点击工具-选择保存脚本-等待下载完成,重新上电进行测试

20210523151256

五、实验现象

连接USB转TTL与K210的P9和P10 IO口

在这里插入图片描述

串口发送数据给K210后,打印在串行终端,K210返回指定的信息

在这里插入图片描述

以上是关于K210实战三-串口收发实验的主要内容,如果未能解决你的问题,请参考以下文章

K210学习笔记 K210与STM32进行串口通信,K210发STM收

K210学习笔记 K210与STM32串口通信相关

云端训练模型,本地部署于K210

stm32串口实验:stm32通过usart1进行串口收发,PA9(TX)和PA10(RX)

K210学习笔记 K210与STM32进行串口通信,K210收,STM32发

关于 MicroPython 的软串口 software-serial,要不要也移植到 K210 micropython 里呢?