【STM32】常用通信协议

串口通信

        串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。是我们在硬件调试过程中最常见的一种通信方式。比如开发板和电脑之间,想要收到开发板的输出信息,就必须用到串口。串口通信又分为不同的方式,常见的有UART、RS232、RS485、RS422。

TTL电平接口

        TTL(Transistor Transistor Logic)即晶体管-晶体管逻辑,TTL电平信号由TTL器件产生。最常见的就算是直接从MCU(主控芯片)产生。TTL电平信号被利用的最多是因为通常数据表示采用二进制规定,+5V等价于逻辑"1",0V等价于逻辑"0",这被称做TTL(晶体管-晶体管逻辑电平)信号系统,这是计算机处理器控制的设备内部各部分之间通信的标准技术。

比如上图中STM32F051的PA9和PA10就是串口的收发管脚,051主控会通过内部串口控制器将数据转换为0、1电平,然后交由这两条线传输。这个电平制式就是TTL电平。

UART硬件连接

        UART只是对信号的时序进行了定义,而未定义接口的电气特性;

        UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用UART通信时一般不能直接相连;

        UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接很不方便;

UART存在的问题

  1. 速度有限:UART通信的速度通常受限于波特率(波特率是每秒传输的位数),因此在高速数据传输方面有一定的限制。与其他通信协议相比,UART的传输速度较低。
  2. 仅支持点对点通信:UART通信通常只支持点对点通信,这意味着每个UART连接只能连接两个设备。如果需要进行多点通信,就需要多个UART连接,这可能会导致复杂性增加。
  3. 电气干扰:UART通信使用单一的电平表示数据位,这使得它对电气干扰非常敏感。在嘈杂的环境中,UART通信可能会受到影响,导致数据错误或丢失。
  4. 缺乏流控制:UART通信通常缺乏硬件流控制机制,这意味着发送方无法有效地控制接收方的数据接收速度。如果发送方速度过快,接收方可能会丢失数据。
  5. 数据位数限制:UART通常支持的数据位数有限,通常为8位。这可能会导致问题,特别是在需要传输大量数据或需要高精度的应用中。
  6. 不适合远程通信:UART通常用于近距离通信,不适用于远程通信。它的通信距离有限,通常不适合跨越大距离的通信。

RS-232电平

        我们常见的电子电路中常使用TTL的电平标准,如我们的计算机内部识别的就是TTL电平,但TTL电平有个缺点就是它不适合远距离传输,所以为了增加串口通讯的远距离传输及抗干扰能力,我们通常会使用RS-232电平,RS-232电平使用-15V表示逻辑1,+15V表示逻辑0。MCU和一些应用模块通信通常都是TTL电平。电脑,工业设备或者一些模块通常都是232电平,最常见的就是我们电脑的DB9的接口,如果开发板想要和电脑进行通信,必须转换为232的电平。

        TTL到232的转换就需要借助电平转换芯片来做,下面是常用的一个MAX232电平转换芯片原理图。

        TXD和RXD接到MCU的引脚上,通过芯片转换的TO-PC-RX和TO-PC-TX就是RS232电平了,可以直接接到我们的电脑上进行通信。

RS-485电平

        RS-485和RS-232一样,都是串行通信标准,现在的标准名称是TIA485/EIA-485-A,但是人们会习惯称为RS-485标准,RS-485常用在工业、自动化、汽车和建筑物管理等领域。

        RS-485总线弥补了RS-232通信距离短,速率低的缺点,RS-485的速率可高达10Mbit/s,理论通讯距离可达1200米;RS-485和RS-232的单端传输不一样,是差分传输,使用一对双绞线,其中一根线定义为A,另一个定义为B。

        RS485采用差分信号负逻辑,逻辑"1”以两线间的电压差为-(2~6)V表示;逻辑"0"以两线间的电压差为+(2~6)V表示。所以原来一条线能表示的信号,现在需要两条线才能表示。所以RS485通信是半双工的。

差分信号

        长距离布线会有信号衰减,而且引入噪声和干扰的可能性更大,在线缆A和B上的表现就是电压幅度的变化,但是,采用差分线的好处就是,差值相减就会忽略掉干扰依旧能输出正常的信号,把这种差分接收器忽略两条信号线上相同电压的能力称为共模抑制

        标准规定,逻辑1:+2V to +6V;逻辑0:-6V to -2V。

        RS-485不需要使用特定的总线电压,只看最小差分电压,在较长的电缆长度上,接收器接收到的电压可能会降低到+/- 200 mV,这对于RS-485仍然是完全可以接受的,这也是RS-485的优点之一。

拓扑结构

        RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,多采用的是两线制接线方式,这种接线方式为总线拓扑结构,在同一总线上最多可以挂接32个节点。

        RS-485总线同I2C,也是主从模式,支持点对点单从机模式,也支持多从机模式,不支持多主机模式。

RS-485收发器

        RS-485是差分传输,如果用单片机控制RS-485接口的设备,需要用到收发器,这一点和CAN总线是类似的,如下是一个MCU控制一个RS-485的图示。

 RS-485数据链路

        主机发送给从机或者从机发送给主机,都会占用到A和B线,所以RS-485多用在半双工模式。

典型电路

        TTL到485的转换同样需要电平转换芯片来做,下面是常用的一个MAX485电平转换芯片原理图。

RS422

        EIA-422(过去称为RS-422)是一系列的规定采用4线,全双工,差分传输,多点通信的数据传输协议。它采用平衡传输采用单向/非可逆,有使能端或没有使能端的传输线。和RS-485不同的是EIA-422不允许出现多个发送端而只能有多个接受端。硬件构成上EIA-422 (RS-422)相当于两组EIA-485(RS-485),即两个半双工的EIA-485(RS-485)构成一个全双工的EIA-422(RS-422)。

RS422只是485的扩展,将原来的半双工变为双工通信。典型电路图如上图,原理相同,这里不再赘述

SPI

        串口、网口通常用于设备之间的通信,如果是设备上芯片直接通信,我们通常选择更加高速的通信总线,比如SPI、IIC等。

        SPI是采用主从方式工作,主机通常为MCU,从机通常为EPROM、Flash,AD/DA,音视频处理芯片等。一般由SCLK、CS、MOSI,MISO四根线组成,有的地方可能是:SCK、SS、SDI、SDO等名称,都是一样的含义,当有多个从机存在时,通过CS来选择要控制的从机设备。

        典型电路图,左边四个黄色引脚接到MCU上,通过程序控制MCU的SPI控制器来完成对外扩Flash的读写。

IIC(I2C)

        IIC(Inter-Integrated Circuit)是一个多主从的串行总线,又叫I2C,是由飞利浦公司发明的通讯总线,属于半双工同步传输类型总线。IIC总线是非常常见的数据总线,仅仅使用两条线就能完成多机通讯,一条SCL时钟线,另外一条双向数据线SDA。

        通信双方约定好通信时钟后,SCL来输出时钟,主机会首先发送要通信的从机地址,然后通过SDA线发送数据。

        下图是STM32的MCU和E2PROM芯片AT24C02芯片连接的一个典型电路图。通过程序控制MCU的IIC控制器来完成对E2PROM的读写。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值