STM32
登录
直播中
kmno4
12年用户
956经验值
私信
关注
[问答]
串口异步通信的接收与发送数据的过程是怎样的
开启该帖子的消息推送
串口
异步通信
时钟
串口
通信
可以分为哪几种?
串口通信与并口通信有何区别?
串口异步通信的接收与发送数据的过程是怎样的?
回帖
(1)
陈佳敏
2021-12-6 14:26:22
STM32单片机通信-串口通信编程实例学习(1)
1.串口通信
串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,占用芯片引脚资源少,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种
单工:
数据只能支持在一个方向上传输
半双工:
允许数据在两个方向上传输,但是一个时刻内只能允许数据在一个方向上传输,实际上是一种切换反向的单工通信。l
全双工:
允许数据同时在两个方向上传输,因此全双工通信时两个单工通信方式的集合,但是要求发送设备和接收设备都有两个独立的接收和发送能力。
2.与并口通信区别
串口形容一下就是一条车道,假如传输1个字节数据,那么串口需要连续传送8次,至少需要一根信号线。
而并口就是有8个车道同一时刻能传送8位(一个字节)数据,自然最少需要8根信号线。
3.通信方式
同步通信:个人理解就是带时钟同步信号传输。例如SPI,IIC通信接口,这种方式时根据系统时钟的触发来保证数据的准确性。
异步通信:不带时钟同步信号,例如 UART(通用异步收发器),单总线,这种通信方式需要收发双方规定通信协议才能保证数据的准确性。
如下图:
通信标准
引脚说明
通信方式
通信方向
UART
TXD:发送端
RXD:接受端
GND:公共地
异步通信
全双工
单总线
(1-wire)
DQ:发送/接受端
异步通信
半双工
SPI
SCK:同步时钟
MISO:主机输入,从机输出
MOSI:主机输出,从机输入
同步通信
全双工
I2C
SCL:同步时钟
SDA:数据输入/输出端
同步通信
半双工
4.串口异步通信接收过程
(1)开始通信时,信号线为空闲(一般是高电平1),当检测到由1到0的跳变时,代表着开始对“接收时钟”计数。
(2)当计数到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”B,而不是干扰信号。
(3)接收端检测到起始位后,
隔
16
个接收时钟
,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0。
(16
是从STM32
手册中波特率计算公式推导出来)
(4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。….,直到全部数据位都输入。
(5)如果设置了校验位,则检测校验位P。
(6)接收到规定的数据位和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。
(7)本幀信息全部接收完,把线路上出现的高电平1作为空闲位。
(8)当信号再次变为低电平0时,开始进入下一幀数据的检测。
5.串口异步通信发送数据过程
发送端以“发送时钟”和“波特率因子”决定一位的时间长度。相当于是接收端的数据检测周期。
(1)当串口设备初始化后,或者没有数据需要发送时,发送端输出逻辑1,即空闲位。
(2)当需要发送数据时,发送端首先输出逻辑0,作为起始位。
(3)然后发送端首先发送D0位,直到各数据位发送完。
(4)如果需要的话,发送端会输出校验位。
(5)最后,发送端输出停止位(逻辑1)。
(6)如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量。如果还有信息需要发送,转入第(2)步。
总之发送和接收都是以起始电平0开始和结束标志电平1结束。在起始和结束位之间则就是数位奇偶校验位。
起始位、校验位、停止位、空闲位的信号,由“发送移位寄存器”自动插入。在接收方,“接收移位寄存器”接收到一帧完整信息(起始、数据、校验、停止)后,仅把数据的各位送至“数据输入寄存器”,即CPU从“数据输入寄存器”中读得的信息,只是有效数字,不包含起始位、校验位、停止位信息。
STM32单片机通信-串口通信编程实例学习(1)
1.串口通信
串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,占用芯片引脚资源少,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种
单工:
数据只能支持在一个方向上传输
半双工:
允许数据在两个方向上传输,但是一个时刻内只能允许数据在一个方向上传输,实际上是一种切换反向的单工通信。l
全双工:
允许数据同时在两个方向上传输,因此全双工通信时两个单工通信方式的集合,但是要求发送设备和接收设备都有两个独立的接收和发送能力。
2.与并口通信区别
串口形容一下就是一条车道,假如传输1个字节数据,那么串口需要连续传送8次,至少需要一根信号线。
而并口就是有8个车道同一时刻能传送8位(一个字节)数据,自然最少需要8根信号线。
3.通信方式
同步通信:个人理解就是带时钟同步信号传输。例如SPI,IIC通信接口,这种方式时根据系统时钟的触发来保证数据的准确性。
异步通信:不带时钟同步信号,例如 UART(通用异步收发器),单总线,这种通信方式需要收发双方规定通信协议才能保证数据的准确性。
如下图:
通信标准
引脚说明
通信方式
通信方向
UART
TXD:发送端
RXD:接受端
GND:公共地
异步通信
全双工
单总线
(1-wire)
DQ:发送/接受端
异步通信
半双工
SPI
SCK:同步时钟
MISO:主机输入,从机输出
MOSI:主机输出,从机输入
同步通信
全双工
I2C
SCL:同步时钟
SDA:数据输入/输出端
同步通信
半双工
4.串口异步通信接收过程
(1)开始通信时,信号线为空闲(一般是高电平1),当检测到由1到0的跳变时,代表着开始对“接收时钟”计数。
(2)当计数到8个时钟时,对输入信号进行检测,若仍为低电平,则确认这是“起始位”B,而不是干扰信号。
(3)接收端检测到起始位后,
隔
16
个接收时钟
,对输入信号检测一次,把对应的值作为D0位数据。若为逻辑1, 作为数据位1;若为逻辑0,作为数据位0。
(16
是从STM32
手册中波特率计算公式推导出来)
(4)再隔16个接收时钟,对输入信号检测一次,把对应的值作为D1位数据。….,直到全部数据位都输入。
(5)如果设置了校验位,则检测校验位P。
(6)接收到规定的数据位和校验位后,通信接口电路希望收到停止位S(逻辑1),若此时未收到逻辑1,说明出现了错误,在状态寄存器中置“帧错误”标志。若没有错误,对全部数据位进行奇偶校验,无校验错时,把数据位从移位寄存器中送数据输入寄存器。若校验错,在状态寄存器中置奇偶错标志。
(7)本幀信息全部接收完,把线路上出现的高电平1作为空闲位。
(8)当信号再次变为低电平0时,开始进入下一幀数据的检测。
5.串口异步通信发送数据过程
发送端以“发送时钟”和“波特率因子”决定一位的时间长度。相当于是接收端的数据检测周期。
(1)当串口设备初始化后,或者没有数据需要发送时,发送端输出逻辑1,即空闲位。
(2)当需要发送数据时,发送端首先输出逻辑0,作为起始位。
(3)然后发送端首先发送D0位,直到各数据位发送完。
(4)如果需要的话,发送端会输出校验位。
(5)最后,发送端输出停止位(逻辑1)。
(6)如果没有信息需要发送时,发送端输出逻辑1,即空闲位,空闲位可以有任意数量。如果还有信息需要发送,转入第(2)步。
总之发送和接收都是以起始电平0开始和结束标志电平1结束。在起始和结束位之间则就是数位奇偶校验位。
起始位、校验位、停止位、空闲位的信号,由“发送移位寄存器”自动插入。在接收方,“接收移位寄存器”接收到一帧完整信息(起始、数据、校验、停止)后,仅把数据的各位送至“数据输入寄存器”,即CPU从“数据输入寄存器”中读得的信息,只是有效数字,不包含起始位、校验位、停止位信息。
举报
更多回帖
rotate(-90deg);
回复
相关问答
串口
异步通信
时钟
简单的说说
异步
通信
的
数据
发送
和
接收过程
2022-02-16
1214
怎样
使用STM32的
串口
进行
数据
的
接收
或者
发送
呢
2021-12-06
2387
STM32
串口
异步
通信
的
过程
该
怎样
去完成呢
2021-12-08
1497
什么是
串口
通信
?
串口
通信
的基本方式有哪几种?
2021-07-16
6680
串口
发送
/
接收
程序的配置
过程
是
怎样
的?
2021-12-09
577
STM32
串口
通信
过程
和
数据
格式是
怎样
的
2021-12-06
1393
stm32
串口
接收
和
串口
发送
的实现
过程
是
怎样
的
2021-12-07
1498
怎样
才能实现MSP430
异步
通信
的
接收
与
发送
不阻塞CPU呢
2022-02-14
589
如何对
串口
通信
的
发送
数据
与
接收
数据
进行配置呢
2021-12-10
814
串口
发送
数据
配置的流程是
怎样
的?
2021-12-03
1239
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分