首页 > 编程语言 >张高兴的 MicroPython 入门指南:(三)使用串口通信

张高兴的 MicroPython 入门指南:(三)使用串口通信

时间:2024-07-22 16:18:36浏览次数:14  
标签:MicroPython 入门 Pin UART 串口 通信 uart0 使用

目录

什么是串口

串口是串行接口的简称,这是一个非常大的概念,在嵌入式中串口通常指 UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)。使用串口进行的通信叫做串行通信,与之相对的一个概念是并行通信。串行通信是指数据一位一位的按顺序传输,而并行通信则是多位数据同时传输。如下图所示,DATA BUSUART 1 之间是并行通信,UART 1UART 2 之间是串行通信。

串口通信的数据帧格式如下图所示,通常一帧共包括 10 位:1 个起始位,8 个数据位和 1 个停止位。有一些特殊的数据帧在停止位前面包含 1 位的奇偶校验位,还有的停止位有 2 个比特。其中起始位为低电平(0),标志着数据传输的开始;停止位为高电平(1),表示数据帧传输结束;数据位则为实际发送的数据,使用高低电平来表示二进制信息,如果发送的内容是文本,那么这段数据为字符的二进制编码(ASCII、UTF-8等)。数据传输的速率我们使用波特率(Baud Rate)来表示,即每秒钟传送的码元符号的个数。比如数据传输速率为 9600 字符/s,那么这时的波特率为 9600。

设备进行串口通信时,设备的连线如下图所示,两个设备的信号线,即发送端(TXD)与接收端(RXD)交叉相连,并且需要共地。在 Raspberry Pi Pico 的引脚上共引出了 2 组串口,即 UART0UART1

使用方法

使用 MicroPython 控制 GPIO 要使用 machine 包中的 UART 类。

from machine import UART

通过构造函数实例化获取串口对象。

UART(id: int, baudrate: int = 115200, ...)
  • id 指串口的编号。对于 Pico 而言只能是 0 或 1。
  • baudrate 用于设置波特率。
  • txrx 参数指定要使用的 tx、rx 引脚。
  • parity 设置校验位。None 无,0 偶数,1 奇数。
  • stop 设置停止位的长度。
  • timeout 设置读取超时时间,单位为毫秒。

使用 init() 方法可以修改串口的设置,方法参数与构造函数的参数一致。常见的用法参考下面的例子:

uart0 = UART(0, 9600)   # 实例化串口 0,波特率为 9600
uart0.init(115200, bits=8, parity=None, stop=1) # 修改串口 0 设置
uart1 = UART(1, baudrate=9600, tx=Pin(8), rx=Pin(9))    # 实例化串口 1 并指定引脚

实例化串口对象后,使用 write(buf: bytearray) 方法发送数据,发送成功会返回字节数,失败则返回 None

data = b'hello world'
uart0.write(data)

接收数据使用 read(nbytes: Optional[int] = None) 方法,nbytes 设置接收的字节数,读取成功会返回一个字节对象,读取超时则返回 None。也可以使用 readline() 方法读取一行。

data = bytes()
data = uart0.read(10)
print(data.decode('utf-8')) # 解码成 utf-8 字符串
print(uart0.readline()) # 从串口读取一行

有些时候需要判断串口中有没有数据,可以使用 any() 方法。

while uart0.any() > 0:
    print(uart0.readline())

标签:MicroPython,入门,Pin,UART,串口,通信,uart0,使用
From: https://www.cnblogs.com/zhanggaoxing/p/18316272

相关文章

  • C语言初学者入门指南
    C语言初学者入门指南        在编程的世界里,C语言被誉为“编程语言之母”,它是许多现代编程语言(如C++、Java、Python等)的基石。C语言以其高效、灵活和接近硬件的特性,在操作系统、嵌入式系统、游戏开发等多个领域发挥着重要作用。对于初学者而言,掌握C语言不仅能帮助你理......
  • 入门到精通rsync和inotify
    rsync作用:实现文件的备份备份位置可以是当前主机,也可以是远程主机备份过程可以是完全备份,也可以是增量备份功能:1)类似于cp的复制功能将本地主机的一个文件复制到另一个位置下2)将本地主机的文件推送到远程主机:也可以是从远程主机拉取文件到本地使用模式:shell模......
  • 最新PS零基础入门到高级精品自学教程百度云分享下载
    如大家所了解的,PS全称AdobePhotoshop,是一款大家非常熟悉的平面设计软件,也是大家常识认知里的P图软件。很多原创画家、设计师、插画爱好者都会使用这个软件进行创作,常用的版本有PS CS6以及CC版本。Photoshop这款软件,功能是非常强大且实用的。很多小伙伴在接触和学习之前,都觉......
  • PyCharm远程部署带屏幕影响串口
    我有一个Flaskapp.py,我正在本地计算机上开发。Flask应用程序使用连接到远程计算机的串行接口(pyserial)。我设置PyCharm以在远程计算机上进行远程部署机器。当我远程(从本地机器)部署和运行应用程序时,我想在独立的screen中启动它,以便我可以在需......
  • 【前端】JavaScript入门及实战71-75
    文章目录71数组72数组的方法73数组的遍历74数组练习75forEach71数组<!DOCTYPEhtml><html><head><title></title><metacharset="utf-8"><scripttype="text/javascript"> //使用字面量来创建数组 //语法:[] vararr=[......
  • puppet基础入门
    前言:对于运维人员而言,自动化运维工具是工作必备,不仅可以节省工作时间,还能省心省力,减少人为失误。软工的构建、开发环境都对环境的一致性要求较高。在云下阶段服务器一直采用的是ansible来进行环境配置管理。使用playbook完成服务器环境的初始化交付,命令行对支持服务......
  • 区间dp入门
    [NOI1995]石子合并题目描述在一个圆形操场的四周摆放\(N\)堆石子,现要将石子有次序地合并成一堆,规定每次只能选相邻的\(2\)堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。试设计出一个算法,计算出将\(N\)堆石子合并成\(1\)堆的最小得分和最大得分。输入格......
  • 【CTF入门】BUUCTF Web刷题
    【CTF入门】BUUCTFWeb刷题[极客大挑战2019]EasySQL打开网站,我们看到这个页面:又是SQL注入,做吐了,按思路来能输入的地方都是注入点,我们尝试注入:获得flag考点:SQL注入[极客大挑战2019]Havefun打开网站,我们看到这个页面:我们看不出什么信息,首先观察一下网站的源码,我们在底......
  • IMGUI快速入门
    资源大全官方资源源码+例子:ocornut/imgui:DearImGui:Bloat-freeGraphicalUserinterfaceforC++withminimaldependencies(github.com)python绑定:pyimgui/pyimgui:Cython-basedPythonbindingsfordearimgui(github.com)调试IMGUI自身:调试工具·ocornut/imgui......
  • 【深度学习入门项目】多层感知器(MLP)实现手写数字识别
    多层感知器(MLP)实现手写数字识别导入必要的包获得软件包的版本信息下载并可视化数据查看一个batch的数据查看图片细节信息设置随机种子定义模型架构Buildmodel_1Buildmodel_2TraintheNetwork(30marks)Trainmodel_1Trainmodel_1Visualizethetrainingprocess......