【硬件外设使用】——UART

news2024/11/24 8:04:44

【硬件外设使用】——UART

  • UART基本概念
  • UART通信协议
  • UART使用方法
    • pyb.uart
    • machine.uart
  • UART 可用的传感器

UART基本概念

UART全称为Universal Asynchronous Receiver/Transmitter,是通过异步(Asynchronous)方式传输数据的一个串行通信协议。UART可以实现点对点的全双工通信,即发送方和接收方可以同时发送和接收数据。
UART常见于嵌入式系统、计算机外设、通讯设备等领域。

UART的特点是无需传输时钟信号,而是通过发送方和接收方之间的预定协议来确定数据传输速率(波特率)。在UART通信中,每个数据字节都需要添加起始位、数据位、奇偶校验位和停止位等附加信息,以便接收方正确提取数据。

UART通常使用两条信号线来进行数据传输:TX(发送)和RX(接收)。通过这两条信号线,UART可以在不同的设备之间发送和接收数据,并支持多个设备之间的通信。

与其他串行通信协议相比,UART具有简单、成本低等优点,并且广泛应用于各种应用场景。
在这里插入图片描述

UART通信协议

UART通信协议是通过异步串行通信方式传输数据的一种协议。该协议中,数据按照一定的数据格式进行传输,包括起始位、数据位、校验位和停止位等附加信息,以便接收方正确提取数据。

UART通信协议中,发送方和接收方之间必须预先约定波特率(即数据传输速率),并且在数据传输过程中保持同步。如果发送方和接收方之间的波特率不一致,则会导致数据传输错误。

UART通信协议的数据格式如下:

  1. 起始位:指定了数据传输的开始位置,通常为逻辑“0”。

  2. 数据位:指定了每个数据字节的位数

  3. 奇偶校验位:用于检测数据传输过程中的错误。通常有奇校验和偶校验两种方式。

  4. 停止位:指定了数据传输的结束位置,通常为逻辑“1”。

其中,起始位和停止位都是固定的,数据位的长度可以根据需要进行调整。奇偶校验位可以选择使用或不使用。

UART通信协议在数据传输过程中,每个数据字节都需要添加起始位、数据位、奇偶校验位和停止位等附加信息。发送方通过TX线将数据字节发送给接收方,接收方通过RX线接收数据。该协议通常使用两根信号线进行数据传输。

UART使用方法

pyb.uart

pyb.uart是MicroPython中用于控制UART通信的模块。它提供了一系列函数和属性,用于配置UART接口、发送和接收数据等操作。

在使用pyb.uart模块之前,需要先导入该模块:

import pyb

导入模块后,可以使用pyb.UART()函数创建一个UART对象,并对其进行配置。例如,下面的代码将创建一个UART对象,波特率为115200,不启用校验位,数据位为8位,停止位为1位:

uart = pyb.UART(1, 115200, parity=None, stop=1, bits=8)

其中,参数1表示使用哪一个UART接口(1或者6),115200表示波特率,None表示不启用校验位,1表示停止位长度,8表示数据位长度。

创建好UART对象之后,可以使用其send()函数向外部设备发送数据,也可以通过read()函数读取外部设备发送过来的数据。

例如,下面的代码向串口发送字符串“Hello World!”:

uart.send("Hello World!")

而下面的代码则从串口中读取10个字节的数据:

data = uart.read(10)

除了上述函数之外,pyb.uart模块还提供了其他一些函数和属性,例如设置流控制、配置中断回调函数等。具体使用方法请参考MicroPython官方文档。

machine.uart

machine.uart是MicroPython中用于控制UART通信的模块。它提供了一系列函数和属性,用于配置UART接口、发送和接收数据等操作。

在使用machine.uart模块之前,需要先导入该模块:

import machine

导入模块后,可以使用machine.UART()函数创建一个UART对象,并对其进行配置。例如,下面的代码将创建一个UART对象,波特率为115200,不启用校验位,数据位为8位,停止位为1位:

uart = machine.UART(1, baudrate=115200, bits=8, parity=None, stop=1)

其中,参数1表示使用哪一个UART接口(0或者1),baudrate表示波特率,None表示不启用校验位,1表示停止位长度,8表示数据位长度。

创建好UART对象之后,可以使用其write()函数向外部设备发送数据,也可以通过read()函数读取外部设备发送过来的数据。

例如,下面的代码向串口发送字符串“Hello World!”:

uart.write("Hello World!")

而下面的代码则从串口中读取10个字节的数据:

data = uart.read(10)

除了上述函数之外,machine.uart模块还提供了其他一些函数和属性,例如设置流控制、配置中断回调函数等。具体使用方法请参考MicroPython官方文档。

UART 可用的传感器

UART是一种通用的串行通信接口,可以用于连接各种传感器,包括但不限于以下几种:

  1. 距离传感器:如超声波传感器、激光雷达等,通过UART接口输出距离信息。

  2. 温度传感器:如DS18B20等数字温度传感器,通过UART接口输出温度信息。

  3. 湿度传感器:如DHT11、DHT22等数字湿度传感器,通过UART接口输出湿度和温度信息。

  4. 光强传感器:如BH1750等数字光强传感器,通过UART接口输出光强信息。

  5. 气压传感器:如BMP180、BMP280等数字气压传感器,通过UART接口输出气压和温度信息。

  6. 姿态传感器:如MPU6050、MPU9250等数字姿态传感器,通过UART接口输出角速度、加速度和角度信息。

这只是一些常见的UART传感器示例,实际上还有很多其他类型的传感器可以使用UART进行通信,只要该传感器本身支持UART接口并且输出数据格式可以被解析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/432335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C6678开发概述与Sys/bios基本使用

C6678开发概述 参考开发环境标记及术语创建sys/bios自定义平台运行第一个sys/bios程序Clock模块使用Demo 参考 TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor Datasheet TMS320C66x DSP CorePac User Guide 官方手册 创龙6678开发教程 开发环境 …

使用 ChatGPT 改善 Android 开发效率的 7 个案例~

翻译 修改自 https://proandroiddev.com/chatgpt-for-android-developers-1c3c1ecc6440,原作者:Rafa Araujo ChatGPT 是由 OpenAI 公司创造的自然语言处理工具,对那些想要提高技能的软件开发人员来说,它绝对是不容错过的重要利器…

日撸 Java 三百行day32

文章目录 说明day32 图的连通性检测1.思路1.1矩阵表示1.2.矩阵相乘1.3结合矩阵运算思考图的连通性。 2.代码 说明 闵老师的文章链接: 日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护:ht…

Linux下安装navicat

1.在https://www.navicat.com.cn/download/navicat-premium下载navicat安装包 2.在终端执行命令 给navicat16-premium-cs.AppImage赋予可执行的权限 chmod x navicat16-premium-cs.AppImage 启动Navicat16 ./navicat16-premium-cs.AppImage 3.点击连接——mysql——输入连…

java单机秒杀扛1万并发方案和代码

我们先来看普通的加锁加事务秒杀性能, 说明: 1.这里的秒杀业务执行一次耗时100毫秒 2.电脑配置16g内存 4核8线程 cpu i7 7代,数据库连接池max20 RequestMapping("/purchase2")public ResultJson purchase2( Long productId){int userId new Random().nextInt(10…

2 常见模块库(2)

2.5 复用器与分路器模块 Mux是一种用于将多个信号组合成一个信号的模块。Mux模块的名称来源于多路复用器(Multiplexer)。 使用Mux可以将多个输入信号组合成一个向量或矩阵,以便在模型中传递和处理。Mux模块可以接受任意数量的输入信号&#x…

Visio Studio 2017利用Qt插件开发Qt应用的安装方法

Visio Studio 2017利用Qt插件开发Qt应用的安装方法 1 安装Visio Studio 20172 安装QT3 在Visio Studio 2017中安装Qt插件 本教程介绍如何利用Visio Studio 2017,开发Qt.5.14.2的Qt应用 1 安装Visio Studio 2017 链接:https://pan.baidu.com/s/1t9j1fFj3…

Linux --- 简介、安装

一、Linux简介 1.1、主流操作系统 不同领域的主流操作系统,主要分为以下这么几类: 桌面操作系统、服务器操作系统、移动设备操作 系统、嵌入式操作系统。接下来,这几个领域中,代表性的操作系统是那些? 1、桌面操作系统 2、服务…

2023年农牧行业数字化:7大CRM软件、5大场景盘点

目录 一、5大业务场景能力,解密农牧行业持续增长秘籍 1、营销获客 2、客户管理 3、商机管理 4、生态“互联”能力 5、业财一体化 二、农牧行业企业CRM选型指南 1、SaaS模式或私有部署 2、是否具有行业成功“经验” 3、可扩展性 4、以营销为主题的体系建设…

【MySQL】基础介绍及表操作

目录 1.MySQL是什么? 2.为什么要学习数据库呢? 内存和硬盘的区别 3.数据库基本操作 1.创建数据库 2.使用数据库 3.删除数据库(慎用) 4.查看警告信息 5.查询当前数据可服务使用的编码集 7.表操作 1.创建一个学生成绩表 2…

Spring Cloud微服务网关Zuul过滤链和整合OAuth2+JWT入门实战

一、Spring Cloud Zuul 过滤链 1.1 工作原理 Zuul的核心逻辑是由一系列的Filter来实现的,他们能够在进行HTTP请求或者相应的时候执行相关操作。Zuul Filter的主要特性有一下几点: Filter的类型:Filter的类型决定了它在Filter链中的执行顺序…

解决Ubunt20.04安装Sogou输入法失败进不去桌面 及 中文输入法安装

目录解决Ubunt20.04安装Sogou输入法失败进不去桌面中文输入法安装解决wps无法输入中文解决Ubunt20.04安装Sogou输入法失败进不去桌面 问题: Ubuntu20.04 安装了 fcitx 和 sogou 输入法;键盘输入法系统由 IBus 改成了 fcitx;重启后可以出现登…

文心一言 VS chatgpt (11)-- 算法导论2.3 7题 3.1 4~5题

四、2 ^ (n1)O(2 ^ n)成立吗? 2^(2n)O(2 ^ n)成立吗? 文心一言: chatgpt: 第一个式子不成立,第二个式子成立。 2 ^ (n1) O(2 ^ n) 该式不成立。按照大O符号的定义,如果存在正常数c和n0,使得n>n0时&#xf…

旋转矩阵与欧拉角

其他相关的内容网上很多&#xff0c;这里就简单记录一下不同欧拉角分解顺序时&#xff0c;对应的角度怎么计算 #include <opencv2/opencv.hpp> #include <iostream>using namespace cv; using namespace std; #define PI acos(-1)void getEulerAngles(Mat& ro…

Spring项目整合Minio分布式的对象存储系统

文章目录 安装Docker安装Docker-compose安装 SpringBoot集成引入依赖初始化客户端存储桶的CRUD存储桶的文件操作存储桶生命周期配置 安装 Docker安装 docker run -p 9000:9000 -p 9090:9090 \--nethost \--name minio \-d --restartalways \-e "MINIO_ACCESS_KEYadmin&q…

01-Linux-磁盘分区与目录配置

1. 主引导纪录和磁盘分区表 1.1 MBR分区表 启动引导程序记录区与分区表都放在磁盘的第一个扇区&#xff08;512B&#xff09; 由于分区表仅占 64B&#xff0c;因此最多能有四组记录区&#xff0c;每组记录区记录了该区段的起始与结束的柱面号码。 缺点如下&#xff1a; 操作…

设计模式-创建型模式之工厂方法模式(Factory Method Pattern)

3.工厂方法模式(Factory Method Pattern)3.1. 模式动机现在对该系统进行修改&#xff0c;不再设计一个按钮工厂类来统一负责所有产品的创建&#xff0c;而是将具体按钮的创建过程交给专门的工厂子类去完成&#xff0c;我们先定义一个抽象的按钮工厂类&#xff0c;再定义具体的工…

vue项目导入excel成功后下载导入结果(后端返回的list数组)

需求&#xff1a; 点击批量导入按钮&#xff0c;弹出弹窗。 下载模板如图二 上传后&#xff0c;如果有错误&#xff0c;会弹出提示&#xff0c;如图三 点击查看失败原因&#xff0c;会自动下载失败的excel如图四。 请求参数和返回结果 1. vue项目导出表格功能实现步骤 np…

十七、市场活动明细:添加备注

功能需求 用户在市场活动明细页面,输入备注内容,点击"保存"按钮,完成添加市场活动备注的功能. *备注内容不能为空 *添加成功之后,清空输入框,刷新备注列表 *添加失败,提示信息,输入框不清空,列表也不刷新 功能分析 流程图 代码实现 一、ActivityRemarkMapper 1.Ac…

笔记-Samba服务器的安装与配置

引言 代码编写我们是在Windows系统下的VS Code来编辑&#xff0c;但是代码在虚拟机的Ubuntu系统中&#xff0c;所以我们要先实现如何将在Ubuntu下的项目映射到Windows系统中&#xff0c;这时我们可以使用到samba服务器。 一、安装samba服务器 sudo apt-get install samba我这里…