[原创] 【微雪 RP2040双核开发板】测试6——UART通信

宜城龙山   2023-1-2 22:05 楼主

【微雪 RP2040双核开发板】测试6——UART通信

 

《微雪 RP2040双核开发板》具有丰富的外部接口,有2 个 UART,分别是UART0、UART1,对应的引脚分别是TX0(GPIO0)、RX0(GPIO1)、TX1(GPIO8)、RX1(GPIO9)。引脚下图。

image-20230102220458-1.jpeg  

本文主要介绍如何利用微雪RP2040双核开发板Micropython内置库模块machine的UART功能进行串口通信。

 

三、machine.UART类函数详解

1、UART对象构造函数

machine.UART(id,baudrate=115200,bits=8,parity=None,stop=1,tx=None,rx=None):

作用为初始化对应通道和引脚。各参数意义:

id:使用的UART通道,为0或者1;

baudrate: 波特率参数,取值可参考串口波特率取值

bits:数据位长度(现阶段仅8位有效)

parity:奇偶校验位,取值为None或1

stop:停止位长度,可取1,2

tx:TXD引脚,为Pin对象,取0或者8

rx:RXD引脚,为Pin对象,取1或者9。

注意:TXD为0,RXD只能为1;TXD为8,RXD只能为9。

2、UART.any()

any函数,用于检测当前接收缓冲区是否有数据,接收缓冲区有数据就返回1,否则返回0。

3、UART.read([nbytes])

read函数,用于读取字符串。

nbytes:如果指定了’nbytes,则最多读取这么多字节,否则读取尽可能多的数据。

4、UART.readline()

readline函数,读取一行,以换行符为结束标志。

UART.readinto(buf[, nbytes])

readinto:将读取字符串存入指定缓存中

buf:用于指定缓存

nbytes:如果指定了“nbytes”,则最多读取这么多字节,否则读取尽可能多的数据。

readinto函数,将读取字符串存入指定缓存中 buf用于指定缓存 nbytes和上文中read函数nbytes作用一致。

5、UART.write(buf)

write函数,用于发送字符串,返回值发送的字节数。

buf: 发送字符串 write函数用于发送字符串,并返回发送的字节数。 参数buf为需要发送的字符串。

6、UART.sendbreak()

sendbreak函数在总线上发送停止信号。 这会将总线驱动为低电平的时间比字符正常传输所需要的时间更长。

 

 

二、RP2040与CH340串口USB的连接

将RP2040的GPIO8、GPIO9发表人接CH340的RX和TX,在PC端打开串口通信软件XCOM,选择正确的串口(本例为COM4)。

三、运行

程序如下:

from machine import UART, Pin

import time

 

uart1 = UART(1, baudrate=115200, bits=8,parity=None,stop=1,tx=Pin(8), rx=Pin(9))

 

txData = b'Hello world! UART!\r\n'

uart1.write(txData)

time.sleep(0.1)

while True:

    rxData =bytes()

    AA=uart1.any()

    print(AA)

    time.sleep(1)

    if AA > 0:

        rxData =uart1.read(AA)

print(rxData.decode('utf-8'))

运行结果:

PC端XCOM软件:

image-20230102220458-2.png  

Thonny环境:

image-20230102220458-3.png  

四、总结

利用微雪RP2040的UART通信端口可以方便与其他设备实现数据传送,代码简单,运行可靠。有利于扩大RP2040的应用范围。

回复评论 (2)

H1和H2原来是引出来的引脚啊,看错了,一直以为是芯片呢

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2023-1-3 08:56
要轮询吗?有没有中断接收到的?或者不定长串口中断的例子。
点赞  2023-1-5 07:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复