MicroPython内核开发笔记书内软件用例 :UART相关实验

举报
tsinghuazhuoqing 发表于 2022/07/02 23:35:48 2022/07/02
【摘要】 简 介: 本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的 UART 部分软件用例部分内容。 关键词: MicroPython,MM32F3277 ...

简 介: 本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的 UART 部分软件用例部分内容。

关键词 MicroPythonMM32F3277

书稿内容
目 录
Contents
基础实验
测试UART2发送信号
测试UART3接收数据
总 结

 

 

§01 稿内容


在MM32F3277中存在 八个串口,其中串口 UART1 被用于 REPL,通常情况下不用于应用程序开发。 用于 REPL 的 UART1 占用单片机管脚有两种配置:

  • 配置1:使用PA9(TXD1),PA10(RXD1)
  • 配置2:使用PB6(TXD1),PB7(RXD1)

由于第一个串口(UART0)被用于交互界面(REPL),所示留给开发者使用的串口是从 UART2之后的串口。

一、基础实验

1、查看串口信息

可以通过以下小程序,查看除了串口1之外的其它八个串口对应的管脚资源。程序的最后一行是列出串口可以被调用的函数。

from machine                import UART

for i in range(7):
    print(UART(i+1))

dir(UART(1))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

上述程序执行之后,输出的信息为:

UART(1): baudrate=9600 on RX(PA3), TX(PA2)
UART(2): baudrate=9600 on RX(PB11), TX(PB10)
UART(3): baudrate=9600 on RX(PC11), TX(PC10)
UART(4): baudrate=9600 on RX(PA5), TX(PA4)
UART(5): baudrate=9600 on RX(PB1), TX(PB0)
UART(6): baudrate=9600 on RX(PE7), TX(PE8)
UART(7): baudrate=9600 on RX(PD1), TX(PD0)
['__next__', 'any', 'read', 'readinto', 'readline', 'write', 'PARITY_EVEN', 'PARITY_NONE', 'PARITY_ODD', 'init']

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

由此可以看到 MM32F3277中所使用到的七个串口分别对应的外部管脚。

UART 可以被调用的函数包括:

  • read : 从串口缓冲区读入数据;
  • readinto:从串口缓冲区读入数据并存入给定的数据缓冲区;
  • readline:读入一行信息。当接收到会车字符时返回;
  • write:将数据通过串口发送;
  • any : 返回窗口缓冲区中可以被读取的字节数量;

下面给出了 UART 的常用函数的调用方式。

uart.read(10)       # read 10 characters, returns a bytes object
uart.read()         # read all available characters
uart.readline()     # read a line
uart.readinto(buf)  # read and store into the given buffer
uart.write('abc')   # write the 3 characters

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

2、测试UART2发送信号

下面代码初始化 UART2,波特率为115200,每隔10ms发送 0x55(对应的字符 ‘U’)数据。串口发送数据是通过 write() 函数调用来实现的,每一次发送一个字节。

from machine                import Pin,UART
import utime

uart2 = UART(1, 115200)

print('Test UART.')

while True:
    _ = uart2.write(b'U')
    utime.sleep_ms(10)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

利用示波器测试 PA2(TX2)的输出波形:

▲ 图1.1.1  PA2(TX2)测量到输出波形

▲ 图1.1.1 PA2(TX2)测量到输出波形

3、测试UART3接收数据

使用短路子将 RXD3与RXD1连接在一起,也就是将REPL的接收端口RXD1连接在UART3的接收端口。

下面程序显示了如何判断串口内接收到了字符,并读取该字符存储在内存缓冲区内。当接收到回车字符(0xd)之后,便将接收到的字符串转换成整数并显示。

from machine                import Pin,UART
import utime

uart2 = UART(2, 115200)

print('Test UART.')
buf = bytes(0)

while True:
    if uart2.any():
        buf = buf + uart2.read(uart2.any())

        if buf[-1] == 13:
            print(int(buf))

            buf = bytes(0)

    utime.sleep_ms(10)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

处贴上运行结果如下。 在 Thonny交互界面上输入数字并回车,程序变输出对应的数字。如果输入的字符中包含有非数字字符,最后程序出错返回。

>> Reset MicroPython...
>> Wait for MicroPython coming back...
>> Download MicroPython : 33 lines/707 characters.
>> -------------------------------------------------------------------------

Test UART.
333
3333
123
Traceback (most recent call last):
  File "<stdin>", line 22, in <module>
ValueError: invalid syntax for integer
>>> 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

二、发送与接收

1、发送接收实验

下面测试程序使用了 MicroPython 中的的 UART(1) 与 UART(5) 之间进行通信。在 PLUS_F3270 开发上,将 UART(1)的 TXD(PA2)与 UART(5)的 RXD(PB1)使用短接线连接在一起。这样 UART(1)发送数据就可以被 UART(5)接收到。

▲ 图1.2.1 实验电路板:将PA2与PB1短接起来

▲ 图1.2.1 实验电路板:将PA2与PB1短接起来

下面是测试程序。程序每隔 200ms 由UART(1)发送字符 0x55,由 UART(5)检查是否收到了字符,并读入显示。请注意,发送串口函数在调用 write 的时候,使用了如下形式:

_ = senduart.write(b'\x55')

  
 
  • 1

这是将 write 函数返回输出的发送字节数量的信息给屏蔽掉,否则程序运行会在输出信息窗口显示发送字节数量。

from machine                import UART
import time

senduart = UART(1)
recvuart = UART(5)

while True:
    _ = senduart.write(b'\x55')

    if recvuart.any():
        inb = recvuart.read(recvuart.any())
        print(inb)

    time.sleep_ms(200)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

程序运行后,可以在信息串口看到程序输出信息 b’U’ 信息。

 

  结 ※


本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的 UART 部分软件用例部分内容。


■ 相关文献链接:

● 相关图表链接:

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/125548206

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。