STM32——串口通信

  • 一、硬件部分
    • 1、RS232标准
    • 2、USB转串口(TTL)
    • 3、原生的串口到串口(TTL->TTL)
  • 二、串口通信协议
  • 三、STM32串口通信功能框图
    • 1、引脚
    • 2、USART通信相关寄存器(最好过一遍,或者在试验之后回过来看一下,了解一下其工作机制)
    • 3、波特率

一、硬件部分

RS232通信和TTL的区别只有一点,那就是在于硬件机制(电平),如果需要做RS232和TTL的转换,那就需要借助转换芯片来完成。

TTL RS232
0-5V -15 - 15V
高电平置1,低电平置0 高电平置0,低电平置1

1、RS232标准

2、USB转串口(TTL)

3、原生的串口到串口(TTL->TTL)

二、串口通信协议

起始位:由一个逻辑0的数据位表示

停止位:由0.5、1、1.5或2个逻辑1的数据位表示,通常选用1个位

有效数据:起始位后面紧接着就是有效数据,有效数据的长度常被约定为5、6、7、8或9位

校验位:校验位是可选的,为数据提供抗干扰性。
校验的方法主要有:
1、奇校验(odd):有效数据和校验位中“1”的个数为奇数
2、偶校验(even):有效数据和校验位中“1”的个数为偶数
3、0校验(space):不管有效数据内容是什么,校验位总是0
4、1校验(mark):同上,校验位总是1
5、无校验(noparity):数据包中不包含校验位

三、STM32串口通信功能框图

使用单片机外设之前,要先看看USART(通用同步异步收发器)的功能框图:

图片来源:STM32中文参考手册 25-3章节

我们将上面的功能框图划分成四个部分:

1、引脚

通过上图我们可以看到一共有8个引脚:

引脚 功能
TX 数据发送
RX 数据接收
SCLK 时钟,仅同步通信时使用
nRTS 请求发送(Request To Send)
nCTS 允许发送(Clear To Send)
SW_RX、IRDA_OUT、IRDA_IN 红外相关配置


在这里需要注意的是:USART1-3是支持同步通信的,但是其挂载的总线不同,如果要从USART1换成USART2,那么其时钟也要修改
对于一款芯片的引脚功能,可以通过STM32F10X数据手册——Pinouts and pin description查询
ST每个系列的芯片都有一个数据手册,里面有引脚的详细功能,对于部分引脚来说,都是多个功能复用的,在写程序的时候享用到哪个功能,就在初始化时对它进行相应的配置,即通用功能配置和相应功能的初始化配置。

2、USART通信相关寄存器(最好过一遍,或者在试验之后回过来看一下,了解一下其工作机制)

如下图所示,USART_DR寄存器是9位有效的,包含一个发送数据寄存器TDR和一个接收数据寄存器RDR,是一个地址对应的两个物理内存。对应的是USART的全双工、半双工通信机制。

图片来源:STM32中文参考手册 25.6.2章节

我们先来看一下串口数据格式:

具体用多少位,是由USART_CR1寄存器决定的:


这里的n表示不确定,是由另外的寄存器来配置的,控制停止位的寄存器是USART_CR2:


校验位是由USART_CR1寄存器控制


当校验位出错时,就会产生校验错误,这时USART_SR的PE位就会置1:

3、波特率


STM32——串口通信原理相关推荐

  1. STM32串口通信原理及实验讲解

    串口通信基本原理 串口 串口,顾名思义,即为串行接口,是处理器与外部设备进行串行通信的接口.串行通信是指数据按位进行顺序传输,这种方法占用引脚资源少,但速度相对较慢.串行通信按数据传输方向可分为三种: ...

  2. STM32串口通信原理及HAL库代码stm32f1xx_hal_uart.c阅读分析

    原理性说明: //参考网址:https://blog.csdn.net/u010561799/article/details/89526266 在USART的发送端有2个寄存器,一个是程序可以看到的U ...

  3. NXP(I.MX6uLL) UART串口通信原理————这个未复习

    参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...

  4. 【串口通信】K210与STM32串口通信、K210与OpenMV串口通信

    [串口通信]K210与STM32串口通信.K210与OpenMV串口通信 串口通信 前言 为何需要串口通信 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口发送测试 ...

  5. STM32串口通信详解以及通信异常或者卡死常见问题分析

    STM32串口通信详解以及通信异常或者卡死常见问题分析 目录 STM32串口通信详解以及通信异常或者卡死常见问题分析 一.常见的异常问题 二.STM32的串口简介 1.串口的通讯方式 ①按数据传输方向 ...

  6. STM32串口通信详解(嵌入式学习)

    STM32串口通信 1.通信基础知识 1.1 时钟信号区分 同步通信 异步通信 波特率 总线协议(电气协议) 1.2 通信方式划分 串行通信 并行通信 1.3 通信方向划分 单工通信 半双工通信 全双 ...

  7. 【STM32串口通信】

    STM32串口通信 学习计划 一.串口通信知识点 二.硬件部分 1.所需硬件 2.部分硬件连接 三.阻塞式 0.串口阻塞式发送和接收概念 1.STM32CUBEMX配置 2.编写阻塞式串口发送与接收代 ...

  8. 【嵌入式】STM32串口通信

    [嵌入式]STM32串口通信 一.串口通信协议 1.串口通信简介 2.串口通信原理 二.RS232通信协议 1.RS232协议简介 2.机械规约 3.电气规约 三.STM32的USART串口通信(查询 ...

  9. stm32串口通信(初学者对于串口通信的理解)

    stm32串口通信(初学者对于串口通信的理解) 标签: stm32串口通信单片机 2015-01-24 10:12 987人阅读 评论(0) 收藏 举报  分类: stm32 版权声明:本文为博主原创 ...

  10. STM32串口通信中使用printf发送数据配置方法 开发环境 Keil

    STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 已有 12456 次阅读2011-6-29 23:29 | 在STM32串口通信程序中使用printf发送数据, ...

最新文章

  1. [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)
  2. 一个关于异步的纠结问题
  3. 基于Spark MLlib平台的协同过滤算法---电影推荐系统
  4. CNCF 宣布 TUF 毕业 | 云原生生态周报 Vol. 33
  5. python一个try块后接一个或多个finally块_Python *与*语句完全等同于一个try – (除了) – finally块?...
  6. UVA1363 LA3521 POJ2800 ZOJ2646 Joseph‘s Problem【约瑟夫环+数学】
  7. paip.解决 数据库mysql增加列 字段很慢添加字段很慢
  8. 2019美赛参赛获奖经验
  9. visio安装后导致excel滑动滚动条闪退的问题
  10. 畅谈无线通信系统物理层之系统概述
  11. 基于MongoDB开发的物流系统(简易版)
  12. centos8.5更换阿里yum源
  13. 我爱 Ruby 的三十七个理由
  14. 数据库原理及应用教程(第4版|微课版)陈志泊-第三章习题
  15. 前端学习——微信小程序
  16. 2012年信息系统项目管理师下半年上午考试习题与答案解析
  17. CSDN的密码修改流程比之前好多了
  18. 数据库连接10060_MySQL错误:Can't connect to MySQL server (10060)
  19. oracle查看表空间的序号,Oracle查询所有序列
  20. android开发 nfc,Android NFC开发概述

热门文章

  1. 计算机指数函数符号,常用数学符号大全(注音及注解)
  2. 计算机网络 复习提纲(完整版)
  3. ubuntu 安装openproj-1.4-2.noarch.rpm
  4. 和平精英怎么玩?智能找图、鼠标滚轮宏按键玩吃鸡还能匹配手机?
  5. 数据库文件和文件组的类别
  6. Django 3实战: 仿链家二手房信息查询网(附GitHub源码) - 文末有送书活动啦!
  7. 基于Python实现仿Windows标准计算器
  8. 使用AudioRecord录制pcm格式音频
  9. ansible部署管理k8s
  10. WPS Office Pro v10.8.2.6726 绿色便携专业增强版