串口的学习

数据通信的基础概念

串行/并行通信

在这里插入图片描述

单工/半双工/全双工通信

在这里插入图片描述

同步/异步通信

在这里插入图片描述

波特率

在这里插入图片描述

比特数:二进制位数
码元:信号经过调试之后进行了编码
log以2为底M的对数

波特率与比特率
1.比特率
比特率顾名思义,是单位时间内传输了多少位(比特),单位是bit/s。
波特率并不是比特率,只是有时候和比特率正好相等而已。
2.编码
要理解波特率,就要知道编码(调制)。举个简单的例子:01001111这串信号有8位(比特),如果一位一位的来看,那就是有两种不同的离散值0和1。但是假设现在经过调制,我们现在认为每两个bit作为「一个符号」(「符号」划重点啊),也就是两位两位的来看,即把这串信号这样看:01 00 11 11。两位两位来看的话,就从之前只有「高」、「低」电平幅度(两种不同的离散值)变成了四种不同的幅度(四种不同的离散值)(因为2^2 = 4):00(最低)、01(低)、10(高)、11(最高),这个的话,会二进制的人都明白,就不解释了。这串信号也就变成了「低」「最低」「最高」「最高」,虽然一般不会这样说,一般会说四种幅度为0、1、2、3,那么信号串就变成了1、0、3、3。
3.波特率
那么波特率到底是什么东西呢?当然不是单位时间内传输了多少位(比特)——这是比特率,而是单位时间内传输了多少 「符号」 (还记得刚才划的重点吗)。假设比特率为8b/s,也就是一秒传输8位,那么在四种幅度也就是两位两位来看待的情况下,波特率是多少呢?也就是每秒能传多少个符号呢?答案:每秒传8位,每秒传4个「符号」,因为一个符号两位。
在单位时间内传输多少位是确定的情况下,并不一定能确定单位时间传输多少个「符号」,能传多少个符号,这要看怎么编码,也就是说我们怎么看待这一串信号,是一位一位的看还是两位两位的看,或者是三位三位的看?
思考:还是01001111这串信号,比特率还是8b/s,即一秒传8位,如果我们四位四位来看(即一个符号4位),波特率是多少呢?(也就是每秒能传多少个符号呢)。
答案:一个符号4位,一秒能传8位,所以一秒传2个符号。2 = 8 / 4。
4.比特率和波特率
这样就得到了波特率和比特率之间的关系如下:比特率 = 波特率 * (一个符号)几位。(如果说比特率是十分朴素的,那么波特率就是一个会根据具体情况变来变去的妖艳贱货。)
这样描述起来有点奇怪,不是通常描述的那个公式,通常描述的那个公式稍微绕了一点点弯,是把「(一个符号)几位」换成了log2(N)(以2为底,毕竟是二进制流),这个N表示的是有几种离散值。这也很好理解,2(底)^「(一个符号)几位」 = N。还是举个例子清楚一点,比如一个符号3位,二进制的情况下,一个符号能表示2^3 = 8种离散值,一个符号4位就是16种离散值,一个符号5位就是32种离散值……
这样公式就变成了通常见到的那个:比特率 = 波特率 * log2(N)
5.波特和波特率
波特并不是哈利波特的那个波特啦,虽然音译过来都一样,但这个波特是Baud。
由于翻译和中文的原因,波特(Baud)本身就已经代表速率了,所以翻译回去的时候不是Baud Rate,而是Baud。我们给本身就代表速率的波特后面加了个「率」大概也是中文习惯吧。

常见的串行通信接口

在这里插入图片描述

没有时钟信号,所以异步。

串口(RS-232)

什么是串口

串行通信接口:指按位发送和接收的接口。如:RS-232/422/485等

在这里插入图片描述

RS-232传统接口是DB25,一般都不用了,一般用简化版的DB9
握手:一般用于同步通信

RS-232电平与COMS/TTL电平对比

在这里插入图片描述

STM32就是用的CMOS,51单片机就是用TTL

设备间的RS-232通信示意图

在这里插入图片描述

一般电脑都没有DB9接口了,都用别的接口

STM32串口与电脑USB口通信示意图

在这里插入图片描述

RS-232异步通信协议

在这里插入图片描述

异步通讯,没有时钟。
LSB:最低有效位,位0在前。
MSB:最高有效位,位7在后

STM32的USART

STM32的USART简介

USART: Universal synchronous asynchronous receiver transmitter,通用同步异步收发器
UART: Universal asynchronous receiver transmitter,通用异步收发器
USART/UART都可以与外部设备进行全双工异步通信
USART,我们常用的也是异步通信

STM32的USART主要特征

1,全双工异步通信
2,单线半双工通信
3,单独的发送器和接收器使能位
4,可配置使用DMA的多缓冲器通信
5,多个带标志的中断源

在这里插入图片描述

STM32F1/F4/F7的USART框图

在这里插入图片描述

阴影部分用户无法操作,无论读还是写都是操作DR寄存器

在这里插入图片描述

设置USART波特率

在这里插入图片描述

一般串口1(USART1,也就是PCLK2)最高为72MHZ,其余串口是36MHZ.

在这里插入图片描述
在这里插入图片描述

保存在位15:4,所以左移4为,左移4位和*16是一样的,+0.5是为了四舍五入。
也就是USART1→BRR=USARTDIV×16+0.5

在这里插入图片描述

USART寄存器介绍

按照实验例程进行配置的话需要进行如下配置(寄存器版本)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

HAL库外设初始化MSP回调机制

在这里插入图片描述
在这里插入图片描述

HAL库中断回调程序

在这里插入图片描述
在这里插入图片描述

USART/UART异步通信配置步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IO引脚复用功能

通用和复用

在这里插入图片描述

STM32F1的IO引脚复用

在这里插入图片描述

IO引脚复用映射示意图

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值