ST32/GD32——UART串口通信

news2024/9/24 1:22:48

芯片选型

Ciga Device — GD32F470系列

串口通信

串口通信指的是通过串行通信接口进行数据传输的通信方式,通常用于短距离、低速率的数据传输。

串口通信可以使用不同的串行通信协议和接口,常见的串口通信协议有UART、USART、RS-232、RS-485、SPI、I2C等

UART通信介绍

Universal Asynchronous Receiver Transmitter 即 通用异步收发器,是一种通用的串行、异步通信总线 该总线有两条数据线,可以实现全双工的发送和接收 在嵌入式系统中常用于主机与辅助设备之间的通信。同步通信和异步通信的最大区别在于传输数据时是否需要时钟信号同步

UART的数据帧 

发数据流程:

  • 拉低电平
  • 发送8位数据(先发低位,后发高位)
  • 发校验位,校验位为0或1都可,也可以不发
  • 再拉高电平代表结束

校验位

串口通信过程中有五种校验方式:奇校验(ODD)偶校验(EVEN)1校验(MARK)0校验(SPACE)无校验(NONE)

  1. 奇校验(ODD):校验位被设置为确保数据位中1的总数为奇数。例如,数据位中的“1”总数为奇数,校验位被设置为低电平(拉低为0),否则设置为高电平。故而,如果接收方统计发现“1”总数为偶数,且校验是低电平,则校验失败,否则成功。
  2. 偶校验(Even): 校验位被设置为确保数据位中1的总数为偶数。例如,数据位中的“1”总数为偶数,校验位被设置为低电平(拉低为0),否则设置为高电平。故而,如果接收方统计发现“1”总数为奇数,且校验是低电平,则校验失败,否则成功。
  3. 1校验(MARK):1校验要求校验位始终为逻辑1,适用于古老的通讯设备。
  4. 0校验(SPACE):0校验要求校验位始终为逻辑0,也适用于古老的通讯设备。
  5. 无校验(NONE):不使用任何校验位,数据直接传输

注:部分ARM系列库要把发送的BIT长度word length设置为9,才能正确发送校验位。

发送01和0011问题 

发送01和0011,接收端如何来确定和区分

波特率

波特率决定了接收数据的速度,也就是每个电平持续的时间,用以区分是否是00或者11持续发送

累计误差消除

发送和接收的时候使用的是不同的时钟,所以即便是使用相同的波特率,也有可能因为时钟微小的不同步,造成数据的累计误差,解决方案是,UART只能一次性最多发送8bit的数据,然后重新发送,以消除累计误差

串口原理图

串口数据发送流程图

串口的标志位

代码实现步骤

  1. GPIO引脚配置(串口功能接硬件PIN脚,选择AF模式)
  2. 串口配置
  3. 串口发送单个字符函数函数
  4. 串口发送字符串函数
  5. 串口数据打印函数
  6. 串口接收数据函数

代码案例

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

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

相关文章

为什么阿里不推荐使用 keySet() 遍历HashMap?

引言 HashMap相信所有学Java的都一定不会感到陌生,作为一个非常重用且非常实用的Java提供的容器,它在我们的代码里面随处可见。因此遍历操作也是我们经常会使用到的。HashMap的遍历方式现如今有非常多种: 使用迭代器(Iterator)。 使用 keySet() 获取键的集合,然后通过增强…

【数仓】Hadoop软件安装及使用(集群配置)

一、环境准备 1、准备3台虚拟机 Hadoop131:192.168.56.131Hadoop132:192.168.56.132Hadoop133:192.168.56.133 本例系统版本 CentOS-7.8,已安装jdk1.8 2、hosts配置,关闭防火墙 vi /etc/hosts添加如下内容&#x…

双运算放大器,具有较宽的工作电压范围,转换速率高。采用DIP8、SOP8两种封装形式——D4510

D4510是一块双运算放大器,具有较宽的工作电压范围,转换速率高,相位补偿等特性。电路能在低电源电压下:工作,电源电压范围:双电源为1V-3.5V和单电源电压为2V~7V。 主要特点: ● 低电压工作 ● 转换速率高 ● 动态输出范围宽 ● 封…

2093409-57-3,DBCO PEG3 NH2,可以在无铜条件下与多种含有叠氮基的分子进行反应

2093409-57-3,二苯并环辛炔-三聚乙二醇-胺,DBCO-PEG3-amine,DBCO PEG3 NH2,可以在无铜条件下与多种含有叠氮基的分子进行反应,能够与其他分子进行偶联 您好,欢迎来到新研之家 文章关键词:2093…

数据库安全的重要性

数据库作为信息系统的核心,不仅承载着海量的关键数据,还负责向各类用户提供高效、可靠的信息服务。在网络技术高度发展的今天,数据库的安全性显得尤为关键。为了防范不法分子的攻击,维护数据完整性和可靠性,数据库安全…

老年人居家安全问题,全视通社区居家养老解决方案来赋能

近年来,老年人居家环境问题逐渐受到社会的关注。从新闻报道得知,传统居家环境对老年人存在诸多挑战,比如在入户空间、起居(室)厅、卧室、卫生间、厨房等区域。这些挑战不仅影响老年人的生活质量,还可能导致…

“找不到msvcr90.dll无法启动软件如何解决

msvcr90.dll 是一个属于 Microsoft Visual C 2008 Redistributable Package 的动态链接库(DLL)文件。在Windows操作系统中,许多应用程序特别是那些使用Visual Studio 2008编译器开发的程序,在运行时可能需要调用这个库中的函数和资…

基于小红书评论的文本词语频数挖掘和词云图

import pandas as pd df pd.read_csv(小红书评论.csv) # 读取小红书评论数据 text .join(df[内容].astype(str)).strip() # 将内容列所有数据合成字符串 print(text) 使用jieba库,对文本数据进行分词,并统计出现频数 import jieba from collectio…

Maven实战之聚合

聚合&#xff1a;一条命令构建多个模块。 父子关系&#xff0c;account-aggregator与account-email、account-persist为父子关系 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schem…

6、JavaWeb-Mybatis

P116 Mybatis-入门 Mybatis是一款优秀的持久层框架&#xff0c;用于简化JDBC的开发。 持久层就是三层控制中的Dao层&#xff0c;数据访问层/持久层&#xff0c; P117 Mybatis-入门-快速入门程序 步骤&#xff1a; 创建springboot工程&#xff0c;数据表和实体类 引入mybat…

盘点Unity几款编辑器扩展工具

unity编辑器一个不容忽视的强大之处就是非常易于自定义扩展工具&#xff0c;来满足各种各样的美术、策划及程序上的需求。今天为大家介绍Asset Store资源商店中几款实用的编辑器扩展工具&#xff0c;帮助大家直接在Unity编辑器中完成3D建模与调整工作&#xff0c;免去与其它软件…

【网站项目】139选课排课系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

栈与队列力扣经典例题20. 有效的括号1047. 删除字符串中的所有相邻重复项150. 逆波兰表达式求值

对于栈与队列&#xff0c;我们首先要搞清楚&#xff0c;栈是先入后出&#xff0c;而队列是先入先出&#xff0c;利用这个特性&#xff0c;我们来判断题目用什么STL容器&#xff0c;便于我们去解决问题 20. 有效的括号 这道题&#xff0c;首先我们要知道哪些情况&#xff0c;是会…

Kubernetes的Sevice管理

服务原理: 所有服务都是根据这个服务衍生或者变化出来,根服务---- 服务感知后端靠标签 slelector 标签选择器 kubectl label pods web1 appweb kubectl cluter-info dump | grep -i service-cluster-ip-range 服务ip取值范围 Service 管理: 创建服务: --- kind: Serv…

C++ //练习 10.2 重做上一题,但读取string序列存入list中。

C Primer&#xff08;第5版&#xff09; 练习 10.2 练习 10.2 重做上一题&#xff0c;但读取string序列存入list中。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /******************************************************…

Vue3:用vite创建Vue3项目

一、简介 vite是新一代前端构建工具&#xff0c;官网地址&#xff1a;https://vitejs.cn vite的优势如下&#xff1a; 轻量快速的热重载&#xff08;HMR&#xff09;&#xff0c;能实现极速的服务启动。对 TypeScript、JSX、CSS 等支持开箱即用。真正的按需编译&#xff0c;不…

Linux配置网卡功能

提示:工具下载链接在文章最后 目录 一.network功能介绍二.配置network功能2.1 network_ip配置检查 2.2 network_br配置2.2.1 配置的网桥原先不存在检查2.2.2 配置的网桥已存在-修改网桥IP检查2.2.3 配置的网桥已存在-只添加网卡到网桥里检查 2.3 network_bond配置检查 2.4 netw…

王者荣耀整蛊搭建直播新玩法/obs贴纸配置教程

最近很火的王者荣耀整蛊直播&#xff0c;相信很多玩王者的玩家也想开一个直播&#xff0c;但是看到这种直播娱乐效果很有意思也想搭建一个&#xff0c;这里梦哥给大家出了一期搭建的教程&#xff01; 进阶版视频教程&#xff1a; 这期的教程是进阶版新玩法升级&#xff0c;具体…

动态gif怎么在线制作?轻松实现gif在线制作的小窍门

日常我们在使用聊天软件聊天时会使用一些好玩有趣的gif表情包&#xff0c;其实很多gif表情包都是从视频中的提取出来的画面。那么&#xff0c;如何将视频转换成gif动画&#xff1f;通过使用在线动画制作&#xff08;https://www.gif.cn/&#xff09;工具就能轻松实现这一操作&a…

大模型(LLM)的训练语料信息汇总

大规模语料是模型训练的基础 大模型的训练&#xff0c;大规模的语料是很重要的 大型语言模型在许多自然语言处理任务上取得了显著进展&#xff0c;研究人员正在转向越来越大的文本语料库进行训练 大多数基于Transformer的大型语言模型 (LLM) 都依赖于英文维基百科和Common C…