STM32 UART通信协议 基础知识

news2024/11/23 15:15:14

        通用异步收发器(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;   //TX
	GPIO_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;   //TX
	GPIO_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

     

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

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

相关文章

libtorch之tensor的使用

1. tensor的创建 tensor的创建有三种常用的形式&#xff0c;如下所示 ones创建一个指定维度&#xff0c;数据全为1的tensor. 例子中的维度是2维&#xff0c;5行3列。 torch::Tensor t torch::ones({5,3}); zeros创建一个指定维度&#xff0c;数据全为0的tensor&#xff0c;例子…

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

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

极光笔记 | 聊一聊推送系统中事件驱动架构的应用

微服务间通信方式主要有2种&#xff1a;RPC和消息传递。 通常来说在请求/响应的场景下使用RPC更加合适&#xff0c;具体实现通常是REST API或者基于长链接的协议&#xff08;例如gRPC/Thrift/Zero ICE等&#xff09;。两个服务有比较强的依赖关系&#xff0c; 调用者依赖被调用…

亚马逊无线鼠标FCC认证办理 FCC ID

无线鼠标是指无线缆直接连接到主机的鼠标&#xff0c;采用无线技术与计算机通信&#xff0c;从而省却电线的束缚。通常采用无线通信方式&#xff0c;包括蓝牙、Wi-Fi (IEEE 802.11)、Infrared (IrDA)、ZigBee (IEEE 802.15.4)等多个无线技术标准。随着人们对办公环境和操作便捷…

OpenAI放出的ChatGPT 4的多模态语音和图像更新

近日OpenAI放出的ChatGPT 4的多模态语音和图像更新的模型其实叫GPT-4V(ision)。OpenAI放出了19页的GPT-4V(ision)报告来解释这个模型&#xff0c;释放了大量信息&#xff1a;GPT-4V(ision)的训练完成于2022年&#xff0c;2023年3月开始提供早期访问。GPT-4V 的训练过程与 GPT-4…

SQLAlchemy关联表一对多关系的详解

目录 ORM关系之一对多 示例1 代码刨析 示例2 代码刨析 ORM关系之一对多 mysql级别的外键&#xff0c;还不够爽&#xff0c;必须拿到一个表的外键&#xff0c;然后通过这个外键再去另外一张表中查找&#xff0c;这样太麻烦了。 SQLAlchemy提供了一个relationship&#xf…

软件工程第三周

可行性研究 续 表达工作量的方式 LOC估算&#xff1a;Line of Code 估算公式S(Sopt4SmSpess)/6 FP&#xff1a;功能点 1. LOC (Line of Code) 估算 定义&#xff1a;LOC是指一个软件项目中的代码行数。 2. FP (Function Points) 估算 定义&#xff1a;FP是基于软件的功能性和…

H5类似易企秀/编辑器/页面制作/开发/生成工具/软件/源码/授权

概述 H5DS (HTML5 Design software) 这是一款基于WEB的 H5制作工具。让不会写代码的人也能轻松快速上手制作H5页面。 详细 项目简介 H5DS (HTML5 Design software) 这是一款基于WEB的 H5制作工具。让不会写代码的人也能轻松快速上手制作H5页面。H5DS 官方 Git (GitHub - h5…

XC3110 高性能、低成本离线式PWM功率开关 可用于小家电电源 辅助电源 最大200MA的电流

XC3110是一款非隔离型、高集成度且低成本的PWM功率开关&#xff0c;适用于降压型和升降压型电路。 XC3110采用高压单晶圆工艺&#xff0c;在同一片晶圆上集成有500V 高压 MOSFET 和采用开关式峰值电流模式控制的控制器。在全电压输入的范围内可以保证高精度的5V 默认输出。在芯…

C#设置自动关机

功能&#xff1a;自动设置电脑关机时间&#xff0c;可取消 创建一个shutdown函数&#xff0c;bool isCancle&#xff0c;传入值为ture就取消关机&#xff0c;interval间隔时间&#xff0c;unit不带符号的整型 private static void ShutdownPC(bool isCancel, uint interval){P…

A*搜索算法

前言 这个我也不知道算不算是A*搜索算法&#xff0c;可能只是A搜索算法。 首先看相关的定义&#xff1a; 启发式搜索在搜索过程中根据启发信息评估各个节点的重要性&#xff0c;优先搜索重要的节点。 估价函数的任务就是估计待搜索节点“有希望”的程度。 估价函数f(n)定义…

vue 实现数字验证码功能

需求&#xff1a;写了一个 手机发送验证码后 输入固定验证码的功能 封装成一个组件,如下: <template><div class"conts"><div class"box"><div class"code_list"><div :class"[ code_item, hideIndex 0 ? co…

Ubuntu Qt 5.15.2 支持 aarch64

概述 AArch64是ARMv8 架构的一种执行状态。 为了更广泛地向企业领域推进&#xff0c;需要引入64 位构架。 同时也需要在ARMv8 架构中引入新的AArch64 执行状态。 AArch64 不是一个单纯的32 位ARM 构架扩展&#xff0c;而是ARMv8 内全新的构架&#xff0c;完全使用全新的A64 指令…

软件设计模式——外观模式

摘要 本文主要分析设计模式 - 结构型 - 外观(Facade)&#xff0c;它提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;从而让子系统更容易使用。 一、外观模式的意图 提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口&#xff0c;从而让…

2023蓝帽杯半决赛取证复现

1.检材数据开始提取是今年什么时候&#xff1f;&#xff08;答案格式&#xff1a;04-12 13:26&#xff09; 09-11 17:21 这题做错了 其实当时盘古石手机取证里面就有的&#xff0c;想多了去看了日志文件 是真的有点歧义&#xff0c;20分就开始提取任务了 2.嫌疑人手机SD卡存…

TLS/SSL(七) 非对称密码应用 之DH密钥交换协议

一 DH密钥交换协议 DH密钥交换协议用来沟通协商出后面AES算法的密钥,是广泛使用、安全的密钥交换协议 ① RSA密钥交换 备注&#xff1a; RSA算法没有前向保密性&#xff0c;所以TLS1.3及以后的协议禁止RSA作为密钥协商算法 如何理解前向保密性 故事&#xff1a; 斯诺登事…

Spring Cloud Alibaba Seata 搭建以及分布式事务的验证

文章目录 Spring Cloud Alibaba Seata 搭建以及分布式事务的验证1.seata 简介2. seata的三大角色3. Seata的流程4. Seata AT模式5. Seata搭建找到模板案例&#xff0c;照着抄6. Seata Client快速开始6.1 声明式事务实现&#xff08;GlobalTransactional&#xff09;6.2 添加依赖…

【牛客网】倒置字符串

思路 首先将整个字符串逆序,再分别将每个单词逆序 代码 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void reverse(int begin, int end, char[] array){while(begin < end){char temp array[begin…

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 A: 子 2023

[蓝桥杯 2023 国 B] 子 2023 试题 A: 子 2023 【问题描述】 小蓝在黑板上连续写下从 1 1 1 到 2023 2023 2023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; S 12345678910111213 ⋯ 20222023 S 12345678910111213\cdots 20222023 S12345678910111213⋯2…

USB到UART桥接控制器——GP232RNL

GP232RNL是一款高度集成的USB到UART桥接控制器&#xff0c;提供了一种简单的解决方案&#xff0c;可以使用最少的元器件和PCB空间&#xff0c;将RS232接口转换为USB接口。GP232RNL包括一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带有完整的调制解调器控制信号的异…