URAT串口通信协议

UART是异步串行全双工总线,面向设备和设备之间的连接

配置相关内容

1、串口为串行通讯方式,代表一个时钟周期,只可以收发一位数据

2、115200代表什么,以及115200单位 单位:bps(比特率、二进制/秒)

115200代表:1S钟可以传输115200bits数据

115200倒数代表:表示收发1位数据所需要的时间

3、8N1代表什么

8:8位数据位

N:无奇偶校验位

1:1位停止位

协议

1、空闲态

空闲态处于高电平状态,总线没有进行数据传输时,总线处于空闲状态

2、起始信号

串口通信开始的标志,起始信号处于低电平状态

3、数据位

串口完成数据的收发,数据位可以设置为7位/8位/9位

4、校验位

奇校验:数据位和校验位1的个数为奇数

假设发送的数据为0x55(01010101),校验位:1

假设发送的数据为0x51(01010001),校验位:0

偶校验:数据位和校验位1的个数为偶数

假设发送的数据为0x55,校验位:0

假设发送的数据为0x51,校验位:1

5、停止位

1)发送数据结束的标志,停止位处于高电平状态

2)校准时钟源,因为串口采用的是异步通讯,双方都有自己独立的时钟源

但是在实际的数据传输过程中,一帧数据传输完成之后,肯定会存在误差

越往后,误差越大,导致收发数据不准确

框图

通过以上框图分析可知,需要分析芯片手册RCC/GPIO/UART章节

1、RCC章节:使能GPIOG/GPIOB/UART4组控制器

2、GPIO章节:1)设置复用功能模式 2)设置复用功能为串口功能

3、UART章节:1)初始化(115200.8N1) 2)完成数据收发

1、RCC章节

使能GPIOG/GPIOB/UART4组控制器

查看相关手册,找到对应的总线和对应的寄存器

1、确定RCC控制器通过哪根总线与cortex-A7进行连接 ===> AHB4总线

2、确定GPIO控制器通过哪根总线与cortex-A7进行连接 ===> AHB4总线

3、确定UART控制器通过哪根总线与cortex-A7核进行连接 ===> APB1总线

2、GPIO章节:

1)设置复用功能模式

2)设置复用功能为串口功能

3、UART章节:

内部框图

1)初始化(115200.8N1)

2)完成数据收发

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的创作纪念日——365天

机缘 最开始我写博客没有什么特别的原因,主要是因为以下几点: 练习自己的语言组织能力 记录自己学习生活中学到的知识 主要还是想找一个好的保存 Markdown 笔记的平台。 最终我选择了 CSDN,一来是因为 CSDN 对 Markdown 语法的支持较为全面…

Rust开发——切片(slice)类型

1、什么是切片 在 Rust 中,切片(slice)是一种基本类型和序列类型。在 Rust 官方文档中,切片被定义为“对连续序列的动态大小视图”。 但在rust的Github 源码中切片被定义如下: 切片是对一块内存的视图,表…

【小沐学GIS】电子海图OpenCPN源代码编译和运行(VS2017 + Win10)

1、简介 免费的开源海图仪和船用GPS导航软件 https://opencpn.org/ 1.1 OpenCPN概述 OpenCPN是一款自由软件(GPLv2),用于创建简洁的海图绘图仪和导航软件,可以在航行过程中使用或者作为计划工具。OpenCPN提供大量免费海图下载&a…

Linux系统编程 day02 vim、gcc、库的制作与使用

Linux系统编程 day02 vim、gcc、库的制作与使用 01. vim0101. 命令模式下的操作0102. 切换到文本输入模式0103. 末行模式下的操作0104. vim的配置文件 02. gcc03. 库的制作与使用0301. 静态库的制作与使用0302. 动态库(共享库)的制作与使用 01. vim vim是一个编辑器&#xff0…

ESP32 Arduino实战协议篇-搭建独立的 Web 服务器

在此项目中,您将创建一个带有 ESP32 的独立 Web 服务器,该服务器使用 Arduino IDE 编程环境控制输出(两个 LED)。Web 服务器是移动响应的,可以使用本地网络上的任何浏览器设备进行访问。我们将向您展示如何创建 Web 服务器以及代码如何逐步工作。 项目概况 在直接进入项目…

Linux基础全整理 从入门到放弃,一些想说的话

阅读目录 断更后一些想说的话用户useraddpasswdpasswd文件详解 chageusermoduserdelshadow 文件格式切换用户 用户组groupaddgroup文件格式groupmodgroupdel登陆远程机器 磁盘RAIDraid0(安装系统)raid1(存放数据)raid 5&#xff0…

Linux - 进一步理解 文件系统 - inode - 机械硬盘

详谈机械磁盘 在上一篇博客当中,已经对 用户级缓冲区 和 系统缓冲区 的区别,和 初步认识 C 库函数 封装的 文件接口这些做了阐述。具体可以参考下述博客: Linux - 用户级缓冲区和系统缓冲区 - 初步理解Linux当中文件系统-CSDN博客 本博客将…

PWM实验

PWM相关概念 PWM:脉冲宽度调制定时器 脉冲:方波信号,高低电平变化产生方波 周期:高低电平变化所需要时间 频率:1s钟可以产生方波个数 占空比:在一个方波内,高电平占用的百分比 宽度调制:占…

java--拼图游戏

1、了解拼图游戏基本功能: 拼图游戏内容由若干小图像块组成的,通过鼠标点击图像块上下左右移动,完成图像的拼凑。 2、拼图游戏交互界面设计与开发: 通过创建窗体类、菜单、中间面板和左右面板完成设计拼图的交互界面 &#xff…

C++ Qt 学习(十):Qt 其他技巧

1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…

mysql 实现去重

个人网站 首发于公众号小肖学数据分析 1、试题描述 数据表user_test如下,请你查询所有投递用户user_id并且进行去重展示,查询结果和返回顺序如下 查询结果和返回顺序如下所示 解题思路: (1) 对user_id列直接去重: &#xff…

复杂类型,查询--学习笔记

1&#xff0c;复杂类型 解决问题&#xff1a;一些不容易获取到的数据&#xff0c;例如数组类型&#xff0c;集合类型等&#xff0c;获取他们的数据 -- 1.创建表 create table tb_array_person(name string,city_array array<string> )row format delimited fields term…