ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

K210实战三-串口收发实验

2021-05-23 16:00:34  阅读:234  来源: 互联网

标签:UART uart K210 收发 read 3.3 串口 fm


文章目录

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返回指定的信息

在这里插入图片描述

标签:UART,uart,K210,收发,read,3.3,串口,fm
来源: https://blog.csdn.net/qq_45396672/article/details/117196067

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有