0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32串口通信的基本原理介绍

STM32嵌入式开发 来源:STM32嵌入式开发 作者:STM32嵌入式开发 2020-11-05 17:47 次阅读

通信接口背景知识

设备之间通信的方式

一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。并行与串行通信的区别如下表所示。

串行通信的分类

1、按照数据传送方向,分为:

单工:数据传输只支持数据在一个方向上传输;

半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口

全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。

2、按照通信方式,分为:

同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。

异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线。

在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。

在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。

在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。

常见的串行通信接口

STM32串口通信基础

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

UART引脚连接方法

RXD:数据输入引脚,数据接受;

TXD:数据发送引脚,数据发送。

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

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

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

单片机的电平标准(TTL电平):+5V表示1,0V表示0;

Rs232的电平标准:+15/+13 V表示0,-15/-13表示1。

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

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

RS232串口简介台式机电脑后面的9针接口就是com口(串口) 在工业控制 数据采集上应用广泛上图中,最右边的是串口接口统称为RS232接口,是常见的DB9封装。

通信过程中只有两个脚参与通信。

2脚:电脑的输入RXD

3脚:电脑的输出TXD 通过2 ,3 脚就可以实现全双工(可同时收发)的串行异步 通信

5脚:接地

单片机的P3口是有两个复用接口RXD 和TXD。这是单片机进行串行通信的收发口,连接应该错位的对应到电脑的TDX RDX上。注意:单片机和RS232的电平标准是不一样的。

单片机的电平标准 TTL电平 :+5V表示1 0V表示0。

RS232的电平标准 +15/+13 V表示1 -15/-13 表示0。

所以 单片机与电脑串口通信就应该遵循下面的连接方式:

在单片机与上位机给出的rs232口之间 通过电平转换电路(最上面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换,PC串口与单片机串口连接方式图:

注意这两个DB9:DB91是在电脑上的 DB92是在单片机实验板上焊接着的。

这里的交叉连接的意思是 DB91的RXD连着DB92的TXD。

DB92的RXD连着DB91的TXD这样交叉着连接,如果电脑没有RS232口 只有USB口,可以用串口转接线转出串口,如下图所示。

这个时候在电脑上位机上需要安装串口驱动程序。

注意,这个驱动程序驱动的是PL2303芯片(在上图的大头里面) 使得RS232信息转换成USB信息。

下图为上图的内部结构:

用串口通信比USB简单,因为串口通信没有协议,使用方便简单。

STM32的UART特点

全双工异步通信;

分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s;

可编程的数据字长度(8位或者9位);

可配置的停止位(支持1或者2位停止位);

可配置的使用DMA多缓冲器通信;

单独的发送器和接收器使能位;

检测标志:

① 接受缓冲器

②发送缓冲器空

③传输结束标志;

多个带标志的中断源,触发中断;

其他:校验控制,四个错误检测标志。

串口通信过程

STM32中UART参数

串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口,通讯双方的数据包格式要规约一致才能正常收发数据。

STM32中串口异步通信需要定义的参数:起始位、数据位(8位或者9位)、奇偶校验位(第9位)、停止位(1,15,2位)、波特率设置。

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

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

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

UART(USART)框图

这个框图分成上、中、下三个部分。本文大概地讲述一下各个部分的内容,具体的可以看《STM32中文参考手册》中的描述。

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

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

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

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

责任编辑:xj

原文标题:STM32串口通信基本原理

文章出处:【微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2266

    文章

    10876

    浏览量

    354925
  • 通信接口
    +关注

    关注

    3

    文章

    234

    浏览量

    30963
  • 串口通信
    +关注

    关注

    34

    文章

    1620

    浏览量

    55428

原文标题:STM32串口通信基本原理

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LS10串口数据库模块外扩SD卡功能

    LS10串口数据库模块外扩SD卡功能
    的头像 发表于 11-23 09:42 150次阅读
    LS10<b class='flag-5'>串口</b>数据库模块外扩SD卡功能

    使用RS232串口进行设备调试的技巧

    在电子和通信领域,RS232串口是一种广泛使用的串行通信接口。尽管随着USB等新技术的兴起,RS232的应用有所减少,但在某些特定场合,如工业控制、嵌入式系统调试等,RS232仍然扮演着
    的头像 发表于 11-21 09:38 255次阅读

    RS232串口通信中常见问题及解决办法

    RS232串口通信中常见问题及解决办法主要包括以下几个方面: 一、物理连接问题 问题 :串口线未插稳或接口松动。 解决办法 :重新插拔串口线,确保连接牢固。同时检查插头和针脚是否损坏,
    的头像 发表于 11-21 09:32 454次阅读

    RS232串口通信协议详解

    在计算机硬件和通信领域,RS-232串口通信协议是一个历史悠久且广泛使用的标准。它允许计算机通过串行接口与各种外部设备进行通信,如调制解调器、鼠标、打印机等。 RS-232的历史和定义
    的头像 发表于 11-21 09:24 325次阅读

    FT232芯片设计的USB转RS232串口原理图

    FT232芯片设计的USB转RS232串口原理图
    发表于 10-21 11:06 2次下载

    快速实现C2000串口程序升级

    电子发烧友网站提供《快速实现C2000串口程序升级.pdf》资料免费下载
    发表于 08-29 10:50 0次下载
    快速实现C2000<b class='flag-5'>串口</b>程序升级

    集特推荐 双网10串口飞腾FT2000商用台式电脑主机

    前段时间为大家分享了国产龙芯、海光、飞腾D2000的商务台式机,它们的共同特点都是单网,1个RS232串口。今天就为大家推荐一款双网、可扩展10串口、14USB接口的飞腾FT200
    的头像 发表于 07-17 16:04 501次阅读
    集特推荐  双网10<b class='flag-5'>串口</b>飞腾FT2000商用台式电脑主机

    用esp32的串口Stm32F407串口通讯,通过TJA转CAN,结果esp32串口读到的一直是自己发的数据,为什么?

    我用esp32的串口Stm32F407串口通讯,通过TJA转CAN。结果esp32串口读到的一直是自己发的数据,各位大神给我看看哪里有问题么
    发表于 06-19 07:00

    485串口可以用can协议吗

    一、引言 随着工业自动化和智能控制技术的发展,通信协议在设备间数据传输和控制中扮演着越来越重要的角色。485串口和CAN协议是两种常见的通信协议,它们在不同的应用场景中发挥着重要作用。本文将对这两种
    的头像 发表于 06-16 09:21 1112次阅读

    STM32做以太网转4串口单核能做吗?

    目前要做一个以太网转4串口透传模块,一个STM32能搞定吗?是不是需要什么内核、?求解~~对内核了解不多,裸机100年
    发表于 05-13 07:27

    深度解析STM32串口通信基本原理

    在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。
    发表于 04-18 09:50 1746次阅读
    深度解析<b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b><b class='flag-5'>基本原理</b>

    激光二极管基本原理介绍

    激光二极管基本原理介绍
    发表于 03-19 10:57

    物通博联485转换网关:实现设备485串口数据转换为Modbus TCP协议

    随着工业自动化技术的不断发展,各种通信协议和接口标准在工业设备中的应用越来越广泛。其中,485串口和Modbus TCP协议是两种常见的通信协议,广泛应用于各种工业自动化设备和系统。传统的485
    的头像 发表于 03-04 17:10 1449次阅读
    物通博联485转换网关:实现设备485<b class='flag-5'>串口</b>数据转换为Modbus TCP协议

    ZDP1440串口屏应用开发如何使用虚拟串口调试

    ZDP1440串口屏应用开发如何使用虚拟串口调试呢?本文将详细方法分享给大家。
    的头像 发表于 01-25 11:32 1619次阅读
    ZDP1440<b class='flag-5'>串口</b>屏应用开发如何使用虚拟<b class='flag-5'>串口</b>调试

    什么是RS-232串口?消费级电脑通常没有232串口的主要原因

    什么是RS-232串口?消费级电脑通常没有232串口的主要原因  RS-232串口是一种标准的串行通信接口,用于在计算机和外部设备之间传输数据,目的是为计算机和外部设备之间提供可靠的数
    的头像 发表于 01-09 13:52 1083次阅读