K210 UART串口通信

七、UART串口通信

(一)实验讲解

uart 模块主要用于驱动开发板上的异步串口,可以自由对 uart 进行配置。

k210 一共有3个 uart,每个 uart 可以进行自由的引脚映射

例:IO6 —> RX2 IO7 —> TX2

fm.register(6,fm.fpioa.UART2_TX)
fm.register(7,fm.fpioa.UART2_RX)

1.函数调用

(1)构造函数

machine.UART(uart,baudrate,bits,parity,stop,timeout, read_buf_len)

通过指定的参数新建一个 UART 对象

  • uart UART 号,[UART.UART1~UART3],使用指定的 UART,可以通过 machine.UART. 按tab键来补全
  • baudrate: UART 波特率
  • bits: UART 数据宽度,支持 5/6/7/8 (默认的 REPL 使用的串口(UARTHS)只支持 8 位模式), 默认 8
  • parity: 奇偶校验位,支持 None, 0(偶校验,1(奇校验 )(默认的 REPL 使用的串口(UARTHS)只支持 None), 默认 None

MicroPython 的默认 REPL(交互式解释器)使用的串口是 UARTHS,该串口不支持校验位设置。在 MicroPython 中,默认情况下,UARTHS 的校验位被设置为 None。

  • stop: 停止位, 支持 11.5, 2, 默认 1
  • timeout: 串口接收超时时间
  • read_buf_len: 串口接收缓冲,串口通过中断来接收数据,如果缓冲满了,将自动停止数据接收

(2)使用方法

  • 读取串口缓冲中的数据
uart.read(num)

num: 读取字节的数量,一般填入缓冲大小,如果缓冲中数据的数量没有 num 大,那么将只返回缓冲中剩余的数据

  • 读取串口缓冲数据的一行
uart.readline(num)

num: 读取行的数量

  • 使用串口发送数据
uart.write(buf)

buf: 需要发送到数据

  • 注销 UART 硬件,释放占用的资源
uart.deinit()
  • 获取用于 REPL 的串口对象
 repl_uart()

(二)电脑串口助手实现数据收发。

我们可以用一个USB转 TTL工具,配合电脑上位机串口助手来跟 MicroPython开发板模拟通信。

注意要使用3.3V电平的 USB转串口 TTL工具,本实验我们使用 pyBase的外接串口引脚 ,也就是 Y9 TX)和 Y10 RX),接线示意图如下

从pyAI-K210原理图可以看到外部 IO6 Y9 RX IO7 Y10 TX。

在这里插入图片描述

在本实验中我们可以先初始化串口,然后给串口发去一条信息,这样PC机的串口助手就会在接收区显示出来,然后进入循环,当检测到有数据可以接收时候就将数据接收并打印,并通过 REPL打印显示。代码编写流程图如下:

# 引入模块
from machine import UART,Timer
from fpioa_manager import fm

#映射串口引脚
fm.register(6, fm.fpioa.UART1_RX, force=True)
fm.register(7, fm.fpioa.UART1_TX, force=True)

#初始化串口
uart = UART(UART.UART1, 115200, read_buf_len=4096)
uart.write('Hello 01Studio!')


while True:

    text=uart.read() #读取数据

    if text: #如果读取到了数据
        print(text.decode('utf-8')) #REPL打印
        uart.write('I got'+text.decode('utf-8')) #数据回传
        #用来将字符串 'I got' 和通过解码(decode)将字节数据(byte data)转换为字符串的 text 连接在一起,并通过 UART(通用异步收发传输)发送出去。

补充:decode() 函数

decode() 函数是用于将字节数据解码为字符串的方法。它是字符串对象的一个方法,在Python中常用于处理以特定编码方式编码的字节数据。

在Python 3中,字符串对象被默认视为Unicode字符串(即字符串以UTF-8编码)。当我们从外部源(如文件、网络、传感器等)读取字节数据时,这些数据需要通过解码操作转换为可读的字符串。

decode() 方法的语法如下:

string.decode(encoding)

其中,string 是要解码的字节数据,encoding 是指定的编码方式。常见的编码方式包括 UTF-8、UTF-16、ASCII 等。

例如,如果我们有一段以 UTF-8 编码的字节数据 b'\xe4\xbd\xa0\xe5\xa5\xbd',我们可以使用 decode() 方法将其解码为字符串:

byte_data = b'\xe4\xbd\xa0\xe5\xa5\xbd'
str_data = byte_data.decode('utf-8')
print(str_data)  # 输出:你好

通过使用适当的编码方式进行解码,我们可以将字节数据转换为对应的字符串形式,以便于进一步处理和操作。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命运从未公平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值