单片机-串口通信(二)

目录

一、串口概念

1.相关概念:

按数据传输方式分类:

按时钟分类

二、STM32F103ZET6中串口

USART特性:

NRZ数据格式:

三、配置串口通信

查看硬件原理图

软件配置流程

USART相关的寄存器

新建my_usart1.c和my_usart1.h

四、使用串口发送数据控制LED灯


一、串口概念

串口(串行通信接口)是一种通信方式,用于传输数据的,串行数据传输,指的是数据按位传输--传输慢,距离相对较远(15米左右)

例:十六进制 0xaa-- 二进制  1010 1010        一个字节的数据按照bit传输

并口(并行通信接口)也是一种通信方式,比如屏幕8080接口 6800接口,这些都是并口,一次传输多位--传输快,距离近

1.相关概念:

按数据传输方式分类:

单工通信:

单工(Simplex Communication)模式的数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端。信息只能沿一个方向传输,使用一根传输线。---广播

半双工通信:收发不能同时进行

半双工(Half Duplex)数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。例如,在一个局域网上使用具有半双工传输的技术,一个工作站可以在线上发送数据,然后立即在线上接收数据,这些数据来自数据刚刚传输的方向。像全双工传输一样,半双工包含一个双向线路(线路可以在两个方向上传递数据)。---对讲机

全双工通信:同一时间既可以接收数据,也可以发送数据

全双工通信又称为双向同时通信,即通信的双方可以同时发送和接收信息的信息交互方式。--手机

按时钟分类

异步通信:通信双方使用不同的时钟频率,收发双方各自都有自己的的时钟信号

同步通信:通信双方使用相同的时钟频率

通信方式中一般包括硬件接口,和软件协议两部分

硬件接口规定了底层的电气特性,线缆,传输距离,通信速率

软件协议规定了在硬件接口的基础上,我们通信双方采用何种规定进行传输数据

通信双方必须遵守的一种规定--协议

二、STM32F103ZET6中串口

通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。 USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。

USART特性:

  • 全双工的,异步通信
  • NRZ标准格式--串口数据传输格式
  • 分数波特率发生器系统

发送和接收共用的可编程波特率,最高达4.5Mbits/s

  • 可编程数据字长度(8位或9位)
  • 可配置的停止位-支持1或2个停止位(2停止位,适用于红外收发)

波特率--单位时间(s),传输数据的位数

生活中的任何事情都是有误差的,误差只可以减小,不可以消除

NRZ数据格式:

起始位 +数据位+ 校验位 +停止位

1bit低电平 8bit 可有可无(1bit) 1Bit

起始位+0x55+校验+停止位--安全,稳定

校验的作用:保证数据的稳定传输

发送方发送数据之前会进行一次校验,得到一个校验码 value01

接收方发送数据之后会再次进行一次校验,得到一个校验码 value02

比较value01和value02的大小是否相等

奇偶校验:

奇数校验:检查数据中1的个数是否为奇数个

奇数校验:检查数据中1的个数是否为偶数个

0x55---0101 0101 0

三、配置串口通信

查看硬件原理图

        PA9--复用推挽输出

        PA10--浮空输入

软件配置流程

1.开时钟:A端口时钟 串口1时钟

2.配置IO口的工作模式

       PA9--复用推挽输出              

       PA10--浮空输入

3.配置串口工作模式

       起始位 数据位 校验位 停止位 波特率

以上所有内容都是通过寄存器实现

4.波特率的配置

程序中寄存器可以识别的是USARTDIV参数

而我们设置的波特率是:TX/RX波特率

波特率的设置,一般是需要我们工程师自己定义的;

常用的波特率:9600 115200 38400 4800.........

假如我们现在使用的波特率是115200

115200=fck/(16*usartdiv);

fck--串口的时钟72MHZ

usartdiv=72000000HZ*16/115200

USART相关的寄存器

USART_SR寄存器:主要是用于判断当前串口的收发数据或者中断的状态。

数据寄存器(USART_DR)

波特率配置寄存器

波特率的计算参考中文文档524页

新建my_usart1.c和my_usart1.h

.h文件同上,进行保存

添加文件到工程

添加.c文件

添加.h文件路径

显示串口:

printf函数应用:

fputc函数原型:

四、使用串口发送数据控制LED灯

0XAA--开灯

0xBB--关灯

TTL电平

这种是板上通信最常用的方式,SOC或独立的串口控制器芯片直接就提供该接口。TTL为正逻辑电平信号,电压值也较低,一般就是芯片电源电压3.3V或5V,抗干扰能力较差,所以也只是在板上短距离连接。

RS-232

RS-232是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号。RS-232是对电气特性以及物理特性的规定,只作用于数据的传输通路上,它并不内含对数据的处理方式。

该标准规定采用一个25 个脚的DB-25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。后来IBM的PC 机将RS-232 简化成了DB-9 连接器,从而成为今天的事实标准。而工业控制的RS-232 口一般只使用RXD(2)、TXD(3)、GND(5) 三条线。

RS232接口任何一条信号线的电压均为负逻辑关系。即:

逻辑“1”为-3—-15V;

逻辑“0”:+3—+15V,

噪声容限为2V。

物理学上,噪声指一切不规则的信号(不一定要是声音),比如电磁噪声,

热噪声,无线电传输时的噪声,激光器噪声,光纤通信噪声,照相机拍摄图片时画面的噪声等。

即要求接收器能识别高于+3V的信号作为逻辑“0”,低于-3V的信号作为逻辑“1”,TTL电平为5V为逻辑正,0为逻辑负。与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。

485通信中,使用的是差分传输。

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

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

相关文章

将Google Chrome或Microsoft Edge浏览器的地址栏隐藏的方法

将Google Chrome或Microsoft Edge浏览器的地址栏隐藏的方法 目标效果示范 我们以百度首页为例,普通模式启动的页面通常会显示地址栏,如下图所示: 而本文要实现的效果是隐去地址栏和书签栏(如果有的话),无…

【conda】Conda 环境迁移指南:如何更改 envs_dirs 和 pkgs_dirs 以及跨盘迁移

目录 迁移概述一、conda 配置文件1.1 安装 Conda 后的默认目录设置1.2 查看当前 .condarc 配置 二、更改 Conda 的 envs_dirs 和 pkgs_dirs 设置2.1 使用 conda config 命令Windows 和 Linux 系统 2.2 手动编辑 .condarc 文件Windows 系统Linux 系统 2.3 验证设置 三、迁移 Con…

JDBC |封装JDBCUtils|PreparedStatement|事务|批处理|数据库连接池| Blob类型数据的读写|Apache—DBUtils简介

一.概述 在Java中,数据库存取技术可分为如下几类: JDBC直接访问数据库JDO技术(Java Data Object)第三方O/R工具,如Hibernate, Mybatis 等 JDBC是java访问数据库的基石,JDO, Hibernate等只是更好的封装了J…

交流耦合同相放大电路设计

1 简介 该电路在单电源供电时,可放大交流信号,并可对输出信号进行电平抬升,以使其集中于电源电压信号的二分之一处。 2 设计目标 2.1 输入 2.2 输出 2.3 电源 2.4 截止频率下限() 2.5 截止频率上限(&…

elementUI根据列表id进行列合并@莫成尘

本文章提供了elementUI根据列表id进行列合并的demo&#xff0c;效果如图&#xff08;可直接复制代码粘贴&#xff09; <template><div id"app"><el-table border :data"tableList" style"width: 100%" :span-method"objectS…

docker python 3.11 容器报错

1. OSError: libc.so.1: cannot open shared object file: No such file or directory 解决办法 Dockerfile文件中增加如下命令执行安装 RUN apt install libc-dev 2. ImportError: libGL.so.1: cannot open shared object file: No such file or directory 解决办法 Dock…

sqlite3的db.serialize方法:确保数据库操作串行化的利器

在Node.js中&#xff0c;sqlite3是一个广受欢迎的轻量级数据库库&#xff0c;它提供了一个简洁的API来与SQLite数据库进行交互。在进行数据库操作时&#xff0c;为了确保操作的串行化执行&#xff0c;避免并发问题&#xff0c;sqlite3提供了db.serialize方法。本文将深入解析db…

物联网之硬件元器件基础知识介绍、集成电路、电阻器、电容器、电感器、二极管、三极管、晶体管、连接器、传感器、开关、电源

MENU 前言电子元件采购网址三极管持续更新中 前言 序言 硬件元器件是电子设备和系统的基本构成部分&#xff0c;它们在电子产品的设计、制造和功能实现中起着至关重要的作用。 电阻器(Resistor) 功能&#xff1a;电阻器用于限制电流流过电路的流动&#xff0c;并分配电压。它们…

聊一下软件测试的组织与管理

目录 1&#xff0e;测试的过程及组织 (1)首先&#xff0c;测试人员要仔细阅读有关资料。 (2)为了保证测试的质量。 (3)代码会审 (4)单元测试 (5)集成测试 (6)验收测试 2&#xff0e;测试方法的应用 3&#xff0e;测试的人员组织 (1)软件的设计和实现都是基于需求分…

ios私钥证书(p12)导入失败,Windows OpenSSl 1.1.1 下载

ios私钥证书(p12)导入失败 如果你用的OpenSSL版本是v3那么恭喜你V3必然报这个错&#xff0c;解决办法将OpenSSL 3降低成 v1。 Windows OpenSSl 1.1.1 下载 阿里云网盘下载地址&#xff1a;OpenSSL V1

【数据结构】-----哈希

目录 一、哈希表概念 二、哈希函数 三、哈希冲突 Ⅰ、定义 Ⅱ、解决 ①闭散列--开放定址法 线性探测 二次线性探测 ②开散列--链地址法&#xff08;哈希桶&#xff09; 问题&#xff1a;哈希表何时扩容&#xff1f; 一、哈希表概念 哈希表又称散列表&#xff0c;它是一…

python网络爬虫(四)——实战练习

0.为什么要学习网络爬虫 深度学习一般过程:   收集数据&#xff0c;尤其是有标签、高质量的数据是一件昂贵的工作。   爬虫的过程&#xff0c;就是模仿浏览器的行为&#xff0c;往目标站点发送请求&#xff0c;接收服务器的响应数据&#xff0c;提取需要的信息&#xff0c…

【408DS算法题】034进阶-22年真题_判断顺序存储二叉树是否是BST

Index 真题题目分析实现总结 真题题目 已知非空二叉树T的结点值均为正整数&#xff0c;采用顺序存储方式保存&#xff0c;数据结构定义如下: typedef struct { // MAX_STZE为已定义常量int SqBiTNode[MAX_SIZE]; // 保存二叉树结点值的数组int ElemNum; …

java 常用并发队列- DelayQueue

1. 什么是 DelayQueue&#xff1f; DelayQueue 是一个支持 延迟获取元素 的阻塞队列&#xff0c;它的元素必须实现 java.util.concurrent.Delayed 接口&#xff0c;该接口要求元素定义一个 getDelay(TimeUnit unit) 方法&#xff0c;用来指定元素何时可以从队列中取出。DelayQ…

Python简易IDE工作界面制作

、 休闲一下&#xff0c;学习编程还是要学习一些界面编程&#xff0c;能够根据需要制作图形操作界面&#xff0c;这样我们开发的程序才能方便操作和使用&#xff0c;同时获得更友好的人机交互体验。下面是一个用PyQt5制作的简易界面&#xff0c;供大学参考。如下图所示&a…

【淘宝采集项目经验分享】商品评论采集 |商品详情采集 |关键词搜索商品信息采集

商品评论采集 1、输入商品ID 2、筛选要抓取评论类型 3、填写要抓取的页数 4、立刻提交-启动测试 5、等爬虫结束后就可以到“爬取结果”里面下载数据 商品详情采集 1、输入商品ID 2、立刻提交-启动爬虫 3、等爬虫结束后就可以到“爬取结果”里面下载数据 taobao.item_…

【Python】Python 读取Excel、DataFrame对比并选出差异数据,重新写入Excel

背景&#xff1a;我在2个系统下载出了两个Excel&#xff0c;现在通过对下载的2个Excel数据&#xff0c;并选出差异数据 从新写入一个新的Excel中 differences_url rC:\Users\LENOVO\Downloads\differences.xlsx; //要生成的差异Excel的位置及名称 df1_url rC:\Users\LENOVO\Dow…

【 WPF 中常用的Brush类的简要介绍、使用方法和适用场景】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 WPF 中常用的 Brush 类的简要介绍、使用方法和适用场景 使用场景解释示例代码&#xff08;为按钮创建一个线性渐变背景&#xff09; Brush 类描述使用示例适用场景SolidColor…

cocotb备忘录

按位给和int int后接的值&#xff0c;建议在32之内。大于32位建议按位给&#xff0c;因为int强制类型转换有范围 第二&#xff0c;低位给到低位&#xff0c;高位给到高位 # 将src_ip和dst_ip给到phv中,TMD以后只要报错在这个范围里面&#xff0c;TMD直接马上用手算一遍能不能…

0903,LIST(merge,splice,sort,unique),SET(insert,erase)

目录 03_vector_delete.cc 04_vector_shrink.cc 05_vec_emplace_back.cc 06_listspec_splice.cc 07_classstruct.cc 08_set.cc 09_setErase.cc 作业 01 STL中的容器包括哪些&#xff1f;各自具有哪些特点&#xff1f; 02 题目&#xff1a;编写代码&#xff1a;将…