STM32串口通信UARTx

  • 【1】单工|半双工|全双工
  • 【2】同步通信|异步通信
  • 【3】STM32串口通信基础
  • 【4】UART引脚连接方法
  • 【5】STM32的UART特点
  • 【6】串口通信过程
  • 【7】STM32中UART参数
  • 【8】UART框图

【1】单工|半双工|全双工

【1】单工:数据传输只支持数据在一个方向上传输 [打电话,你说一句,我说一句,不同时说]
【2】半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端
【3】全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端 [收发是两条线 每条线之间独立传输]

分别如下图中的a、b、c所示。

【2】同步通信|异步通信

【1】同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口
【2】异步通信:不带时钟同步信号传输。比如:UART(通用异步收发器),单总线
1\ 在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。
2\ 在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。
在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以**同步通讯效率高**,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。

【3】STM32串口通信基础

STM32的串口通信接口有两种,
分别是:
【1】UART(通用异步收发器)
【2】USART(通用同步异步收发器)。
而对于大容量STM32F10x系列芯片,分别有3个USART和2个UART。

【4】UART引脚连接方法

`
RXD:数据输入引脚,数据接收
TXD:数据发送引脚,数据发送
`

对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行TTL电平通信了。


若是芯片与PC机(或上位机[例如:QT交互界面])相连,除了共地之外,就不能这样直接交叉连接了。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。故,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口电平转换成RS232类型,再交叉连接。


经过电平转换后,芯片串口和RS232的电平标准是不一样的:

`
单片机是TTL电平:+5V表示1,0V表示0
RS232是负逻辑电平,-3~-15V为1,+3~+15V为0
`

RS-232通讯协议标准串口的设备间通讯结构图如下:

所以单片机串口与PC串口通信就应该遵循下面的连接方式:在单片机串口与上位机给出的RS232口之间,通过电平转换电路(如下面图中的Max232芯片)
实现TTL电平与RS232电平之间的转换。下图中的P10,也就是上文中提到的DB9

【5】STM32的UART特点

【1】全双工异步通信;
【2】分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s;
【3】可编程的数据字长度(8位或者9位);
【4】可配置的停止位(支持1或者2位停止位);
【5】 可配置的使用DMA多缓冲器通信
【6】单独的发送器和接收器使能位;
【7】检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志;
【8】多个带标志的中断源,触发中断;
【9】 其他:校验控制,四个错误检测标志。

【6】串口通信过程

【7】STM32中UART参数

串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口,通讯双方的数据包格式要规约一致才能正常收发数据
STM32中串口异步通信需要定义的参数
起始位、数据位(8位或者9位)、奇偶校验位(第9位)、停止位(1,15,2位)、波特率设置。

UART串口通信的数据包以帧为单位,常用的帧结构为:1位起始位+8位数据位+1位奇偶校验位(可选)+1位停止位。
如下图所示:

奇偶校验位分为奇校验和偶校验两种,是一种简单的数据误码校验方法
【1】奇校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为奇数;
【2】偶校验是指每帧数据中,包括数据位和奇偶校验位的全部9个位中1的个数必须为偶数。

校验方法除了奇校验(odd)、偶校验(even)之外,还可以有:0 校验(space)、1 校验(mark)以及无校验(noparity)。0/1校验:不管有效数据中的内容是什么,校验位总为0或者1。

【8】UART框图

这个框图分成上、中、下三个部分,具体的可以看《STM32中文参考手册》中的描述。


框图的上部分:
【1】数据RX进入到接收移位寄存器,后进入到接收数据寄存器,最终供CPU或者DMA来进行读取;
【2】数据CPU或者DMA传递过来,进入发送数据寄存器,后进入发送移位寄存器,最终通过TX发送出去。


然而,UART的发送和接收都需要波特率来进行控制的,波特率是怎样控制的呢?

这就到了框图的下部分:
接收移位寄存器发送移位寄存器都还有一个进入的箭头,分别连接到接收器控制、发送器控制。而这两者连接的又是接收器时钟、发送器时钟。也就是说,异步通信尽管没有时钟同步信号但是在串口内部,是提供了时钟信号来进行控制的

而接收器时钟和发送器时钟又是由什么控制的呢?

可以看到,接收器时钟和发送器时钟又被连接到同一个控制单元,也就是说它们共用一个**波特率发生器**。同时也可以看到接收器时钟(发生器时钟)的计算方法、USRRTDIV的计算方法。

这里需要知道一个知识点:

`
UART1时钟:PCLK2(高速)
UART2、UART3、UART4时钟:PCLK1(低速)
`

STM32串口通信UARTx相关推荐

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

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

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

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

  3. STM32——串口通信

    STM32--串口通信 宗旨:技术的学习是有限的,分享的精神是无限的. 一.异步串口通信协议 STM32 的串口非常强大,它不仅支持最基本的通用串口同步.异步通信,还具有 LIN 总线功能(局域互联网 ...

  4. openmv和stm32串口通信完成二维码识别

    openmv和stm32串口通信完成二维码识别 文章目录 前言 一.所用的硬件: 二.openmv端 2.stm32端 总结 前言 注:我只是个大一的小白,本文只完成基本功能,希望能帮助有困惑的人(我 ...

  5. Ardunio下的STM32串口通信

    文章目录 任务要求 Ardunio下的STM32串口通信 软件准备 编译烧录 标准库函数与HAL库函数的stm32编程方式差异 国人版的MCU集成开发平台 stduino IDE 总结 任务要求 安装 ...

  6. 安装STM32CubeMX,stm32串口通信

    目录 一.串口通信和RS-232标准 1.串口通信 波特率 数据位 停止位 奇偶校验 2.RS-232标准 二.安装STM32CubeMX,搭建STM32的开发环境 1.安装jdk 2.安装STM32 ...

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

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

  8. 通过python实现安卓手机与stm32串口通信

    一.材料 (1)安卓终端1台,本文使用的魅蓝手机 (2)stm32微控制器(可以串口通信的) 二.通信内容 上位机发送AA,熄灭stm32上的LED灯 上位机发送BB,点亮stm32上的LED灯 上位 ...

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

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

  10. 嵌入式作业(七):基于Ardunio的STM32串口通信

    嵌入式作业(七) 0 作业要求 1 Ardunio 完成STM32的串口通信 (1)安装Ardunio IDE (2)stm32串口通信 2 基于串口通信的标准库与hal库的区别 (1)hal库 (2 ...

最新文章

  1. hibernate中的hql查询语句list查询所有与iterate查询所有的区别
  2. DevExpress v17.2新版亮点—WPF篇(四)
  3. 谈谈学习AS3的过程
  4. SAP Spartacus lock directive锁住元素所有子元素及设置FOCUS_GROUP_ATTR的行为
  5. 网站登录JWT的实现
  6. PHP正则表达式学习(一) 模式修正符
  7. 【宝塔】【cloudreve】挂载阿里云OSS到ECS服务器内网上
  8. JSP版LCX:端口转发神器 KPortTran
  9. 最新官方版本Fliqlo 炫酷翻盖时钟屏保 多平台
  10. GEO、TCGA数据下载慢 下载中断解决办法
  11. jQuery-WEUI的Uploader实现上传多张图片并且限制上传数量的方法
  12. Go语言入门【7】指针
  13. Nexperia |超低电容 ESD 保护二极管保护汽车数据接口基础半导体器件
  14. maven打包--同时将仓库依赖和本地依赖的jar包也打进去
  15. 无线网络安全标准(转)
  16. blood pressure android app,Blood Pressure Monitor via Bluetooth/Internet in Android
  17. 3D打印:亮光黑漆面效果
  18. html图片文字环绕
  19. 私服服务器原理,传奇私服新手gm如何假设一个属于自己的服务器
  20. 虚拟机Terminator终端终结者安装教程

热门文章

  1. 关于Android的.so文件你所需要知道的 - 简书
  2. 创建win10介质进度为0_win10介质创建工具(media creation tool)下载_win10介质创建工具(media creation tool)官方下载-太平洋下载中心...
  3. steam加速_Steam玩家试用追梦加速器后,怎么说?
  4. 2015年3月计算机二级vb题库,2015年计算机二级vb机试试题
  5. 如何卸载office201032位_如何卸载流氓版office2010
  6. 通达信板块监控指标_板块监控及使用方法指标详解 通达信板块监控
  7. 几个比较好的app开发框架
  8. Redis实用教程-----------菜鸟快速入门
  9. 网页测速 php,好用实用的站长测速工具网站大全
  10. 温故知新:数据科学札记