ST32/GD32——UART串口通信

芯片选型

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.mfbz.cn/a/427411.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis_plus-基础

一、简介 1.概述 文档地址:https://baomidou.com/ 概述:MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window) 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提…

解密Lawnchair:打造个性化极致的Android桌面体验

解密Lawnchair:打造个性化极致的Android桌面体验 1. 简介 Lawnchair是一款知名的Android桌面定制工具,旨在为用户提供个性化极致的桌面体验。作为一个开源项目,Lawnchair融合了简洁、灵活和强大的特点,让用户能够自由定制其Andro…

Java基于springboot的课程作业管理系统

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,课程作业管理系统当然也不能排除在外。课程作业管理系统是以实际运用为开发背景,运用软件工程原理和开发方法…

1.线程池的实现机制

为什么使用线程池? 在处理并发问题时,倘若我们一个一个创建线程池再进行线程池的销毁,不但浪费资源还增加了上下文切换的开销。线程池主要是以空间来换取时间。 如图所示给任务队列分配在线程池里线程。 线程池用到的模式是半同步、半异步模…

机器学习 | 四大常用机器学习Python库介绍

今天这篇我们介绍下Python中常用的机器学习库(机器学习、深度学习啥的,小编还是建议使用Python进行建模编写哈),也算是本公号机器学习的第一篇推文,主要内容如下: 机器学习常用四大Python库 关于机器学习的我想说的话 所有完整代…

mysql高可用架构设计

一、主从架构 1.主从复制 1.主从复制原理 Mysql的主从复制中主要有三个线程: master(binlog dump thread)、slave(I/O thread 、SQL thread) ,Master一条线程和Slave中的两条线程。 整体上来说&#xff…

如何合理布局子图--确定MATLAB的subplot子图位置参数

确定MATLAB的subplot子图位置参数 目录 确定MATLAB的subplot子图位置参数摘要1. 问题描述2. 计算过程2.1 确定子图的大小和间距2.2 计算合适的figure大小2.3 计算每个子图的position数据 3. MATLAB代码实现3.1 MATLAB代码3.2 绘图结果 4. 总结 摘要 在MATLAB中,使用…

2024-简单点-picamera2除了文档还有哪里可以学习实例?

picamera2学习例子 去github的picamera2库,找app和examples目录,然后学习

重建大师实时建模支持华为的npu吗?

可以支持适配。重建大师推出信创版,可全面支撑国产信创环境。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格模型,可一…

NumpyPython 笔记1 3.4

array.ndim 几维 array.shape 几行,几列 array.size 存在多少个元素 np.array 转化为矩阵 dtype 确定类型,并且确定精度64?32?16?数字越小,越不精确 二维 np.zeros 生成零矩阵,并且规…

uniapp实战:父子组件传参之子组件数量动态变化

需求说明 现有的设置单元列表,每个带有虚线加号的可以看做是一组设置单元,点击加号可以添加一组设置单元.点击设置单元右上角可以删除对应的设置单元. 实现思路说明 利用数组元素添加或是删除的方式实现页面数量动态变化.由于每个设置单元内容都相同所以单独封装了一个子组件.…

开发知识点-Ruby

Ruby https://m.runoob.com/ruby/ruby-installation-windows.htmlhttps://rubyinstaller.org/downloads/

新书速览|Photoshop+CorelDRAW商业广告设计入门到精通:视频教学版

8章实例剖析商业案例,帮你提升设计效率。商业实战案例,真正掌握设计技能! 本书内容 《PhotoshopCorelDRAW商业广告设计入门到精通:视频教学版》以创作精美、类型多样的案例,全面地讲解Photoshop与CorelDRAW软件相结合…

ssh无法直接登入Linux超级用户root(23/3/3更新)

说明:不允许ssh用超级用户的身份登入是为了安全性,如果只是学习使用对安全性没啥要求可以按以下操作解除限制 以普通用户登录到服务器后,执行以下命令以编辑 SSH 服务器配置文件 /etc/ssh/sshd_config sudo nano /etc/ssh/sshd_config 此时会…

【日常聊聊】程序员如何选择职业赛道

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 方向一:自我评估与兴趣探索 方向二:市场需求与趋势分析 方向三:成功案例与经验教训 结语…

记录踩过的坑-macOS下使用VS Code

目录 切换主题 安装插件 搭建Python开发环境 装Python插件 配置解释器 打开项目 打开终端 INFO: pip is looking at multiple versions xxxx,过了很久后报错 ​​​​​​​ 切换主题 安装插件 方法1 方法2 搭建Python开发环境 装Python插件 配置解释器 假…

【漏洞复现】某厂商明御WEB应用防火墙任意用户登录漏洞

Nx01 产品简介 安恒明御WEB应用防火墙(简称WAF)是杭州安恒信息技术股份有限公司自主研发的一款专业应用安全防护产品,专注于为网站、APP等Web业务系统提供安全防护。 Nx02 漏洞描述 安恒明御WEB应用防火墙report.php文件存在硬编码设置的Con…

Linux系统Docker部署RStudio Server

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE,并通过 Web 浏览器进行访问…

redis08 主从复制

思维草图 认识 主机更新后根据配置和策略,自动将数据同步到备机的master/slave机制,Master以写为主,Slave以读为主。 为什么要使用主从复制 读写分离,性能扩展,降低主服务器的压力容灾,快速恢复&#xf…

[VSCode插件] 轻量级静态博客 - MDBlog

MDBlog VSCode插件,基于Markdown的轻量级静态博客系统,同时支持导出为可以部署的静态博客。 仓库 MDBlog 1. Features 博客基础功能:分类管理、文章管理、自动生成索引快捷指令:快捷输入表格、mermaid、wavedrom、代码块发布&a…