对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。

物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。

协议层主要规定通讯逻辑,统一收发双方的数据打包、 解包标准。

1. 物理层

其中接线口以针式引出信号线的称为公头,以孔式引出信号线的称为母头

在计算机中一般引出公头接口,而在调制调解器设备中引出的一般为母头,使用上图中的串口线即可把它与计算机连接起来。

编号 引脚 定义
1 DCD 数据载波检测
2 RXD 数据接收
3 TXD 数据发送
4 DTR 数据终端准备好
5 GND 信号地
6 DSR 数据设备准备好
7 RTS 请求发送
8 CTS 清除发送
9 RI 振铃提示

在目前的其它工业控制使用的串口通讯中,一般只使用RXD、TXD以及GND三条信号线,直接传输数据信号,而 RTS、CTS、DSR、DTR 及 DCD 信号都被裁剪掉了。

2. 协议层

波特率

异步通讯中由于没有时钟信号 (如前面讲解的 DB9 接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,上图中用虚线分开的每一格就是代表一个码元,常见的波特率为 4800、9600、 115200 等。

起始位与停止位

串口通讯的一个数据包从起始信号开始,直到停止信号结束。数据包的起始信号由一个逻辑 0 的 数据位表示,而数据包的停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,只要双方约定 一致即可。

有效数据

在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效数据的长度 常被约定为 5、6、7 或 8 位长。

数据校验

在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。

校验方法有奇校验 (odd)、偶校验 (even)、0 校验 (space)、1 校验 (mark) 以及无校验 (noparity)。

3. STM32H750 USART

(1)引脚

A. USART双向通信

USART双向通信需要至少两个引脚:接收数据输入(RX)和发送数据输出(TX)。

RX (Receive Data Input)

RX是串行数据输入。数据恢复采用过采样技术区分有效的传入数据和噪声。

TX (Transmit Data Output)

当发射器被禁用时,输出引脚返回到它的I/O端口配置。

当发射器是启用的,没有数据需要传输,TX引脚是高电平。在单线和智能卡模式下,该I/O用于传输和接收数据。

B. RS232 硬件流控制模式

CTS和RTS引脚在USART RS232硬件流控制模式中使用。

CTS (Clear To Send)

如果使能RS232硬件流控制,发送器在发送下一帧数据之前会检测 nCTS 引脚。

如果为低电平,表示可以发送数据;

如果为高电平则在发送完当前数据帧之后停止发送。

该引脚只适用于硬件流控制。

RTS (Request T o Send)

如果使能RS232硬件流控制,当USART接收器准备好接收新数据时就会将 nRTS 变成低电平;当接收寄存器已满时,nRTS 将被设置为高电平。

该引脚只适用于硬件流控制。

C. RS485 硬件控制模式

DE (Driver Enable)

该信号激活外部收发器的传输模式。DE和RTS共用同一个引脚。

D. 同步主从模式和智能卡模式

CK

该引脚在同步主模式和智能卡模式下充当时钟输出;作为时钟输入是同步从模式。

NSS

该引脚在同步从模式下充当从选择输入。

(2)字符

传输字长(world length)通过USART_CR1寄存器的12位和28位:M0和M1控制。

An Idle character is interpreted as an entire frame of “1”s (the number of “1”s includes the 
number of stop bits).
A Break character is interpreted on receiving “0”s for a frame period. At the end of the 
break frame, the transmitter inserts 2 stop bits.

(3)FIFO

(4)USART发射器

根据M位的状态,发射机可以发送7位或8位或9位的数据字。

必须设置发送使能位(TE)才能激活发送功能。传输移位寄存器中的数据输出到TX引脚上,而相应的时钟脉冲输出到SCLK引脚上。

A. 字符发送

在USART传输过程中,数据首先移出TX引脚上的最低有效位(默认配置)。在这种模式下,USART_TDR寄存器由内部总线和传输移位寄存器之间的缓冲区(TDR)组成。

在写入要传输到USART_TDR的数据之前,必须设置TE位。在数据传输过程中不能复位TE位。TE位使能时会发送一个空闲帧(idle frame)。

B. 停止位配置

C. 字符传送寄存器配置过程

 D. 字符传送过程

当FIFO模式未使能时,

写入传输数据寄存器总是清除TXE位。TXE标志由硬件设置。

——数据已经从USART_TDR寄存器移动到移位寄存器,数据传输已经开始;

——USART_TDR寄存器为空;

——下一个数据可以写入USART_TDR寄存器,而不覆盖前一个数据。

如果设置了TXEIE位,该标志将产生一个中断。

当传输正在进行时,对USART_TDR寄存器的写指令将数据存储在TDR缓冲区中。然后将其复制到当前传输末尾的移位寄存器中。

当没有传输正在进行时,对USART_TDR寄存器的写指令将数据放在移位寄存器中,数据传输开始,并设置TXE位。

在将最后的数据写入USART_TDR寄存器后,必须等待TC设置好后才能禁用USART或导致微控制器进入低功耗模式(参见图571:传输时的TC/TXE行为)。

(5)USART接收器

A. 字符接收

(6)波特率配置

接收机和发射机(Rx和Tx)的波特率都设置为USART_BRR寄存器中编程的值。

 

(7)校验控制

寄存器 名称 作用
USART_CR1 PCE 使能奇偶校验控制
USART_CR1 PS 设置奇校验或者偶校验

接收时,如果奇偶校验失败,则在USART_ISR寄存器中设置PE标志,如果在USART_CR1寄存器中设置PEIE,则产生中断。通过软件向USART_ICR寄存器中的PECF写入1来清除PE标志。

如果在USART_CR1中设置了PCE位,那么写入数据寄存器的数据的MSB位将被传输,但是被奇偶位更改(如果选择偶偶校验位则为偶数个“1”(PS=0),如果选择奇偶校验位则为奇数个“1”(PS=1))。

串口通讯(USART)相关推荐

  1. 【STM32学习笔记】(9)——串口通讯(USART)详解

    本文主要参考了野火的零死角玩转STM32和正点原子的STM32F1 开发指南 V1.1(精英板-库函数版本),文章中大部分知识都是从两本书中提取出来,串口通信协议的知识主要参考野火的书籍,而串口实验部 ...

  2. 【蓝桥杯】【嵌入式组别】第十二节:USART串口通讯

    USART串口通讯 USART:通用同步异步收发器 串口发送程序设计: 如何连续打印helloworld 能不能发送中文? 串口发送printf重定向 串口接收程序设计: 串口接收固定长度数据: 串口 ...

  3. 串口(USART)通信-串口通讯协议简介

    串口(USART)通信-串口通讯协议简介 物理层:规定通讯系统中具有机械.电子功能部分的特性,确保原始数据在物理媒体的传输.其实就是硬件部分. 协议层:协议层主要规定通讯逻辑,统一收发双方的数据打包. ...

  4. STM32的USART串口通讯程序(查询方式)

    STM32的USART串口通讯程序(查询方式) 文章目录 STM32的USART串口通讯程序(查询方式) 一.USART介绍 1.异步通信: 2.同步通信: 二.CubeMX创建项目 1.点击ACCE ...

  5. 在 stm32CubeMX下生成程序完成流水灯以及完成STM32的USART串口通讯程序实现STM32系统给上位机(win10)连续发送“hello windows”

    目录 一.STM32CubeMX简介及安装 二.利用STM32CubeMX生成代码 1.创建项目 2.配置芯片 3.导出项目 ​ 三.Keil中补充代码完善功能 四.在Keil中观察实验波形 五.US ...

  6. 了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形

    文章目录 前言 一.串口协议 1.RS-232 2.485标准 二.RS-232.485和TTL电平 1.RS-232电平 2.485 3.TTL电平 4.区别 三.USB/TTL转232 1.CH3 ...

  7. 基于STM32的USART串口通讯程序

    文章目录 一.串口协议和RS-232.485标准,以及RS232.485电平与TTL电平的区别,USB/TTL转232模块的工作原理 1.串口协议 2.RS-232.RS-485标准 3.RS232. ...

  8. STM32的USART串口通讯程序

    文章目录 一.STM32 USART串口通信 1.串口通信简介 1.1.物理层 1.2.协议层 2.STM32 的 USART 简介 二.STM32的USART串口通讯程序 1.创建项目 2.添加.s ...

  9. 基于STM32F103C8的USART串口通讯程序

    目录 一.串口协议和RS-232.485标准,RS232.485电平.与TTL电平的区别,"USB/TTL转232"模块的工作原理(以CH340芯片模块为例) 一.串口协议 STM ...

  10. 《STM32从零开始学习历程》——USART串口通讯实验篇1——中断接收与发送

    <STM32从零开始学习历程>@EnzoReventon USART串口通讯实验篇1--中断接收与发送 最近开始接触了STM32F4xx系列单片机,对于我这个从零开始学习的小白来说,可谓困 ...

最新文章

  1. Laravel核心解读--完结篇
  2. SSL/TLS抓包出现提示Ignored Unknown Record
  3. C++中Struct和Class的区别
  4. 机器学习 —— 概率图模型(Homework: CRF Learning)
  5. Chrome中播放时视频编码为.h264和音频编码为acc,采样率为48000,双通道的视频文件时音画不同步
  6. java 发送邮件(亲测有效)
  7. transCAD求解两路径问题中遇到的问题和解决方法
  8. IT 运营管理 (ITOM)解决方案-OpManager Plus
  9. win7 系统打开文件扩展名
  10. 阿里云网站备案时变更备案的问题解决总结 满满干货
  11. 尚来古籍——江氏族谱
  12. Python 网络爬虫及数据可视化
  13. python异常值处理四分位法_Python清除异常值四分位法
  14. JAVA 去除字符串首尾特定字符
  15. Surround360 README文档——中文翻译
  16. Glide 图片闪烁问题
  17. 创业粉去哪里引流?如何精准引流创业粉?创业粉的引流技巧
  18. 这次生日我想写点什么
  19. 54家国内主要百货上市公司上半年营收排行榜
  20. 微信小程序使用swoole实现websocket消息推送

热门文章

  1. Mac如何卸载干净文件
  2. 【唐老狮】C#——类型转换
  3. pytorch如何计算显存大小
  4. C++服务器开发完整学习路线
  5. 【小记】BatchSize的数值是设置的越大越好吗
  6. jenkins使用webhook实现自动部署
  7. java如何解决缓存问题_4种常见的缓存问题及解决方案详解
  8. 电脑如何还原系统?这样做可以快速解决!
  9. mysql备份表数据库表_mysql 备份数据库中的一张表
  10. 以太坊RLP编码原理