当前位置: 首页 > news >正文

STM32 UART通信协议 基础知识

        通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行、异步、全双工的通信协议。

        在通信领域中,有两种数据通信方式:并行通信串行通信。串口的数据传输是以串行方式进行的。串口在数据通信中,一次只能传输一个比特的数据。串行数据的传输速度用bps或波特率来描述每秒的二进制位数,单位为bps(bit per second)也称为波特率。

        同步通信和异步通信是指在通信过程中数据传输的方式。

        同步通信是指发送方和接收方在传输数据时需要同步进行,也就是说,发送方必须等待接收方确认后才能继续发送数据,而接收方必须等待数据到达后才能继续处理。这种通信方式可以保证数据的准确性和可靠性,但是会降低通信效率。

A———数据总线————B

A————CLK—————B

A————\bar{cs}——————B

        cs上面加一个横线代表 低电平有效。

        当A给B传输的时候,A把 \bar{cs} 电平拉低,B看到电平被拉低了,就知道A要给B传数据了。此时A就会在数据总线把数据发送出来,但是B如何判断A发送的这么多信息中哪些是数据呢?A用CLK信号线中告诉他,B只需要在CLK中的上升沿取值就可以了,在上升沿取到的值就是需要的数据。简而言之,就是收发双方有一个同步信号线,把他们同步在一起。

        USART中的S就是同步通信但是用的很少,常常直接成为UART。

        异步通信是指发送方和接收方可以独立地进行数据传输,不需要等待对方的确认或回应。发送方可以继续发送数据,而接收方可以在数据到达后再进行处理。这种通信方式可以提高通信效率,但是由于没有同步的保证,数据的准确性和可靠性可能会受到影响。

        在异步通信中没有cs也没有CLK,只有一个数据总线。

A.RX—————B.TX

A.TX—————B.RX

A———GND———B

TX:发送,RX:接收,GND:接地。

空闲状态:高电平

起始位:1位的起始位,从空闲状态转换为起始位是靠一个下降沿产生的。

数据位:5~8位的数据位连同校验位

奇偶校验:数据位连同校验位中,“1”的数目等于奇数,则为奇校验;

我们常用8n1,意思是有8位数据位,没有效验码,1位停止位。

        当起始位突然从高电平变到了低电平时,B就是知道A要开始传输了,拉低电平的1个bit后,A就开始发送数据,发送完数据位后,双方规定一下有没有奇偶校验,有的话是奇校验还是偶校验,判断数据有没有错误,然后发送停止位,抬高电平,返回空闲状态。

        这个数据一般用5~8位的数据位,更多的时候用8个bit的数据位,因为c语言中的char正好是8位。并且双方要约定好,传输8位就是8位,不能改变。

        在实际应用中,通常会根据具体情况选择同步通信或异步通信。例如,对于实时性要求较高的应用,可能会选择同步通信,而对于数据量较大或实时性要求不高的应用,可能会选择异步通信。

        全双工是指通信双方可以同时发送和接收数据的一种通信方式。在全双工通信中,通信双方可以同时发送和接收数据,而不会出现发送和接收数据冲突的问题。这种通信方式可以实现更高效的数据传输和更顺畅的通信。常见的全双工通信方式有电话通信、视频会议等。

 bsp_uart.c

#include "bsp_uart.h"void Uart1_Configuration(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;   //TXGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;   //TXGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);USART_InitStructure.USART_BaudRate = 115200;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;USART_Init(USART1, &USART_InitStructure);USART_Cmd(USART1, ENABLE);
}

 bsp_uart.h

#ifndef __BSP_UART_H__
#define __BSP_UART_H__#include <stm32f10x.h>void Uart1_Configuration(void);#endif

     

相关文章:

STM32 UART通信协议 基础知识

通用异步收发器&#xff08;Universal Asynchronous Receiver/Transmitter)&#xff0c;通常称作UART&#xff0c;是一种串行、异步、全双工的通信协议。 在通信领域中&#xff0c;有两种数据通信方式&#xff1a;并行通信和串行通信。串口的数据传输是以串行方式进行的。串口在…...

nginx部署vue前端项目,访问报错500 Internal Server Error

前言 描述&#xff1a;当我配置好全部之后&#xff0c;通过 服务器 ip 地址访问&#xff0c;遇到报错信息&#xff1a;500 Internal Server Error。 情况说明 前提&#xff1a;我是通过Docker启动nginx容器&#xff0c;通过-v 绑定数据卷&#xff0c;将html文件和nginx.conf…...

@Excel注解

在 Java 开发中&#xff0c;Excel 注解通常用于标记实体类的字段&#xff0c;以指示与 Excel 文件的导入和导出相关的配置信息。 Excel 注解通常是自定义的注解&#xff0c;它可以包含多个属性&#xff0c;用于定义与 Excel 相关的配置&#xff0c;如字段的标题、顺序、数据格…...

解释器模式简介

概念&#xff1a; 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;它用于定义语言的文法&#xff0c;并解析和执行给定语言中的表达式。该模式将每个表达式表示为一个类&#xff0c;并提供了一种方式来组合这些表达式以实现复杂的语句…...

图像识别技术在不同场景下有哪些应用?

图像识别技术在不同场景下的应用包括&#xff1a; 遥感图像识别&#xff1a;航空遥感和卫星遥感图像通常用图像识别技术进行加工以便提取有用的信息。该技术目前主要用于地形地质探查&#xff0c;森林、水利、海洋、农业等资源调查&#xff0c;灾害预测&#xff0c;环境污染监…...

阿里巴巴OceanBase介绍

前言 官网地址&#xff1a;https://www.oceanbase.com/ OceanBase是由蚂蚁集团完全自主研发的国产原生分布式数据库&#xff0c;始创于2010年。是全球唯一在 TPC-C 和 TPC-H 测试上都刷新了世界纪录的国产原生分布式数据库。 2010年&#xff0c;创始人阳振坤加入阿里巴巴&…...

leetcode 2560. 打家劫舍 IV

2560. 打家劫舍 IV 沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。 由于相邻的房屋装有相互连通的防盗系统&#xff0c;所以小偷 不会窃取相邻的房屋 。 小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额 。…...

正点原子lwIP学习笔记——Socket接口TCP实验

1. Socket接口TCP Client配置连接 配置步骤如下所示&#xff1a; sin_family设置为AF_INET表示IPv4网络协议&#xff1b;sin_port为设置端口号&#xff1b;sin_addr. s_addr设置远程IP地址&#xff1b;调用函数Socket创建Socket连接&#xff0c; 注意该函数的第二个参数SOCK_…...

【Flink】

事件驱动型应用 核心目标&#xff1a;数据流上的有状态计算 Apache Flink是一个框架和分布式处理引擎&#xff0c;用于对无界或有界数据流进行有状态计算。 运行逻辑 状态 把流处理需要的额外数据保存成一个“状态”,然后针对这条数据进行处理,并且更新状态。这就是所谓的“…...

大数据Flink(九十一):Array Expansion(数组列转行)和Table Function(自定义列转行)

文章目录 Array Expansion(数组列转行)和Table Function(自定义列转行)...

华为云云耀云服务器L实例评测|华为云云耀云服务器L实例CentOS的存储和备份策略

1 华为云云耀云服务器L实例介绍 华为云云耀云服务器L实例是华为云计算服务中的一种虚拟云服务器&#xff0c;它提供了强大的计算资源&#xff0c;可以在云端运行各种应用程序和服务。 华为云服务器提供了多种实例类型&#xff0c;包括通用型、计算优化型、内存优化型等&#…...

Web自动化测试 —— 如何进行Selenium页面数据及元素交互?啊哈

前言&#xff1a; Web自动化测试是一种常用的测试方式&#xff0c;通过在浏览器中模拟用户操作以及与页面元素的交互&#xff0c;可以有效地检验页面的功能性以及稳定性。Selenium是一款流行的Web自动化测试工具&#xff0c;在本篇文章中&#xff0c;我们将介绍如何使用Seleni…...

点云从入门到精通技术详解100篇-基于全景图的室内场景点云补全方法(续)

目录 3.3 模型训练及实验评估 3.3.1 模型训练 3.3.2实验评估 4 基于自...

Debezium系列之:采集数据库数据实现对表指定的字段进行加密,下游实现对表加密后的字段进行解密

Debezium系列之:采集数据库数据实现对表指定的字段进行加密,下游实现对表加密后的字段进行解密 一、需求背景二、创建表三、深入理解加密算法的实现原理四、实现对表的指定字段加密五、插入数据六、消费Topic七、实现对加密的字段进行解密八、查看数据库一、需求背景 实际应用…...

Win10 cmd如何试用tar命令压缩和解压文件夹

环境&#xff1a; Win10 专业版 Microsoft Windows [版本 10.0.19041.208] 问题描述&#xff1a; Win10 cmd如何试用tar命令压缩和解压文件夹 C:\Users\Administrator>tar --help tar(bsdtar): manipulate archive files First option must be a mode specifier:-c Cre…...

最新AI写作系统ChatGPT源码/支持GPT4.0+GPT联网提问/支持ai绘画Midjourney+Prompt+MJ以图生图+思维导图生成

一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统&#xff1f;小编这里写一个详细图文教程吧&#x…...

AI绘画普及课【二】图生图

文章目录 三、图生图1、图生图原理2、图生图的三个关键步骤3、参数技术性解析4、随机种子的含义研究 三、图生图 内容概要&#xff1a; 1、图生图原理 2、图生图基本流程 3、随机种子作用解析 1、图生图原理 图生图可以帮你把一张图片画成另一种模样。在文生图中我们看到&…...

C语言 数据类型

变量声明 格式&#xff08;变量类型变量名称&#xff09; 变量类型&#xff1a;整数类型&#xff08;int&#xff09;&#xff0c;浮点数类型&#xff08;float&#xff09; float类型可以存储带小数的数字。 用printf()打印变量&#xff0c;使用%d来处理整数值&#xff0c…...

瑞芯微RK3568:Debian系统如何安装Docker

本文基于HD-RK3568-IOT评估板演示Debian系统安装Docker&#xff0c;该方法适用于RK356X全系产品。 HD-RK3568-IOT评估板基于HD-RK3568-CORE 工业级核心板设计&#xff08;双网口、双CAN、5路串口&#xff09;&#xff0c;接口丰富&#xff0c;适用于工业现场应用需求&#xff…...

联邦学习-Tensorflow实现联邦模型AlexNet on CIFAR-10

目录 Client端 Server端 扩展 Client.py Server.py Dataset.py Model.py 分享一种实现联邦学习的方法&#xff0c;它具有以下优点&#xff1a; 不需要读写文件来保存、切换Client模型 不需要在每次epoch重新初始化Client变量 内存占用尽可能小&#xff08;参数量仅翻一…...

嵌入式Linux应用开发-文件 IO

嵌入式Linux应用开发-文件 IO 第四章 文件 IO4.1 文件从哪来&#xff1f;4.2 怎么访问文件&#xff1f;4.2.1 通用的 IO 模型&#xff1a;open/read/write/lseek/close4.2.2 不是通用的函数&#xff1a;ioctl/mmap 4.3 怎么知道这些函数的用法&#xff1f;4.4 系统调用函数怎么…...

【C++】多态,从使用到底层。

文章目录 前言一、多态的概念二、多太的定义和实现2.1 多太的构造条件2.2 虚函数2.3 重写(覆盖)2.4 C11 override 和 final2.5 重载&#xff0c;隐藏&#xff0c;重写 三、多态的原理3. 1虚函数表3.2 虚函数表如何完成多态的功能3.3 虚函数表存储在内存空间的那个区域&#xff…...

uvm白皮书练习_ch2_ch221只有driver的验证平台之*2.2.1 最简单的验证平台

uvm白皮书练习 ch221 dut.sv 这个DUT的功能非常简单&#xff0c;通过rxd接收数据&#xff0c;再通过txd发送出去。其中rx_dv是接收的数据有效指示&#xff0c;tx_en是发送的数据有效指示。 module dut (clk,rst_n,rxd,rx_dv,txd,tx_en );input clk ; input rst_n ; in…...

服务断路器_Resilience4j超时降级

创建模块cloud-consumer-resilience4j-order80 POM引入依赖 <dependencies><!-- 引入Eureka 客户端依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</a…...

【知识点随笔分析】我看看谁还不会用CURL命令

目录 前言&#xff1a; CURL介绍&#xff1a; CURL的基本使用&#xff1a; CURL与PING命令的区别&#xff1a; CURL命令的应用&#xff1a; 总结&#xff1a; 前言&#xff1a; 当今互联网时代&#xff0c;与服务器进行数据交互成为了无法回避的需求。无论是获取Web…...

ICCV 2023|Occ2Net,一种基于3D 占据估计的有效且稳健的带有遮挡区域的图像匹配方法...

本文为大家介绍一篇入选ICCV 2023的论文&#xff0c;《Occ2Net: Robust Image Matching Based on 3D Occupancy Estimation for Occluded Regions》&#xff0c; 一种基于3D 占据估计的有效且稳健的带有遮挡区域的图像匹配方法。 论文链接&#xff1a;https://arxiv.org/abs/23…...

leetcode - 14. Longest Common Prefix

Description Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string “”. Example 1: Input: strs ["flower","flow","flight"] Output: "…...

MySQL-查询语句语法(DQL)结构(查询操作 一)

SQL语句 编写顺序 - 执行顺序 1、SELECT 字段列表 4 2、FROM 表名列表 1 3、WHERE 条件列表 2 4、GROUP BY 分组字段列表 …...

SWAT-MODFLOW地表水与地下水耦合

耦合模型被应用到很多科学和工程领域来改善模型的性能、效率和结果&#xff0c;SWAT作为一个地表水模型可以较好的模拟主要的水文过程&#xff0c;包括地表径流、降水、蒸发、风速、温度、渗流、侧向径流等&#xff0c;但是对于地下水部分的模拟相对粗糙&#xff0c;考虑到SWAT…...

工地临时用电之智慧用电:全方位保障用电安全

随着科技进步和智能化的发展&#xff0c;工地用电管理也迎来了智慧化的革新。智慧用电&#xff0c;作为智慧工地的重要组成部分&#xff0c;通过集中式管理和创新的技术手段&#xff0c;为工地提供了全方位的用电安全保障。 针对工地临时用 的现状及系统结构&#xff0c;力安科…...

网站效果图尺寸/常用的seo工具的是有哪些

php 7.1 中将mcrypt扩展标记为过期&#xff0c;虽然可以通过pecl安装&#xff0c;不过考虑到libmcrypt很久很久没更新过了&#xff0c;还是将aes加解密代码变更为openssl方式比较合适&#xff0c;测试代码如下&#xff1a;error_reporting(E_WARNING);class CryptAES {/* AES加…...

东莞清洁服务网站建设/关键词优化的作用

首先&#xff0c;关注破千了&#xff0c;感谢大家的支持。D2-Net A Trainable CNN for Joint Description and Detection of Local Featureshttps://arxiv.org/pdf/1905.03561.pdf​arxiv.org一、论文出发点传统的关键点检测&#xff0c;例如&#xff33;&#xff29;&#xf…...

网站建设临沂/推广app的营销方案

一、简介 Scala作为一门函数式编程与面向对象完美结合的语言&#xff0c;函数式编程部分也有其独到之处&#xff0c;本文就将针对Scala中关于函数式编程的一些常用基本内容进行介绍&#xff1b; 二、在Scala中定义函数 2.1 定义函数 和Python相似&#xff0c;Scala中函数的定义…...

网站备案查询工信网/广告软文案例

将 ODE 的解约束为非负解。施加非负性并不总是微不足道的,但有时由于方程的物理解释或由于解决方案的性质,这是必要的。您应该只在必要时对解决方案施加此约束,例如在没有它的情况下集成失败的情况,或者解决方案不适用的情况。 如果解决方案的某些组件必须是非负的,则使用…...

淘宝优惠券发布网站怎么做/简阳seo排名优化课程

1.使用字符串作为条件查询 $user M(User); var_dump($user->where(id1 AND user"蜡笔小新")->select());//最终生成的 SQL 语句 SELECT * FROM think_user WHERE ( id1 AND user"蜡笔小新" ) 2.使用索引数组作为查询条件 $user M(User); $cond…...

郑州网站优化汉狮/快速排名官网

题目链接: http://www.51nod.com/onlineJudge/user.html#!userId21687 题意: 中文题诶~ 思路: 本题就是个中国剩余定理模板题,不过模拟也可以过,而且时间复杂度嘛~ 我们可以知道gcd得出两个数的最大公约在最坏的情况下(a, b是相邻的两个斐波拉契数)是O(logn)的, 同理可以知道ex…...