搜索
查看: 1632|回复: 0

[分享] STM32初学笔记(五)串行通信接口简介

[复制链接]

该用户从未签到

193

主题

194

帖子

0

蝴蝶豆

金牌会员

最后登录
2021-3-12
发表于 2021-3-11 13:21:37 | 显示全部楼层 |阅读模式
STM32初学笔记(五)串行通信接口简介


通信就像人的语言和文字,个人需要通过语言和文字表达自己的思想和诉求,团队需要通过语言和文字进行沟通协作。无论做嵌入式系统集成还是类似传感器的零配件,都会用到通信;掌握通信是最基础的能力。

工业控制和仪器设备一般使用的是串行通信,像常见的COM口、USART、UART、I2C、SPI、RS232、RS422、RS485等,它们是针对不同的应用或者问题逐渐发展起来的,本篇文章简单介绍一下它们之间的区别和一些基本概念。

本篇文章主要内容:
1、什么是串行通信
2、串行通信接口协议
3、常见串行通信接口简介

1、什么是串行通信
串行通信是数据一位一位的发送或接收,与并行通信相对。经常形象的比喻为车道,串行通信只有 一条车道,并行通信是多条车道(比如8条车道)。串行通信按照数据传送方向,可分为单工(单向车道),半双工(双向单车道)、全双工(双向双车道);波特率是数据发送的速度(车速)

4.1.png

2、串行通信接口协议

串行通信接口(serial communications interface)也叫串口(Serial Interface)。通信接口分层介绍,最简单的就是物理层和协议层。物理层包括物理接口(如COM口、USART、UART、I2C、SPI等)和电气特性标准(如TTL、RS232、RS422、RS485等),协议层主要规定通信逻辑,统一收发双方的数据打包、解包标准,如通信时序和数据包格式(如起始位、数据位、校验位和停止位)。

通常不需要对通信时序有深入了解,但是有的单片机没有这些外设通讯接口,此时可以使用通用IO来模拟串行通信接口,此时就需要对通信时序非常了解。

(可能早期没有单片机的概念,也没有其他的串口,只有PC机上的COM口,而COM口遵循RS232标准,所以很多时候串口、COM口、RS232指的是同一个口,也就是DB9口,而对单片机来说,串口指的是UART,这种说法显然是有问题的,但是也不必深究。)

3、常见串行通信接口简介

3.1 UART

UART是通用异步收发传输器(UniversalAsynchronous Receiver/Transmitter)的英文缩写,很多单片机中都集成了这个模块,定义了Tx、Rx、GND三个引脚,输出的是TTL电平。若要实现两个单片机的通信,可直接将对应引脚相连接。

4.2.jpg

下面是一帧数据的格式,对于UART应用来说,不必过于关心协议层,只需要了解一些基本概念即可。

4.3.jpg

在计算机中,UART相连于产生兼容RS232规范信号的电路就成了COM口。由于单片机和计算机的串口电平不同,如果想要实现单片机和计算机的通信,就需要一个转换电路,如MAX232芯片。同理,单片机想要实现与不同规范的通信接口的通信,就需要相应的转换芯片,如与RS485规范的设备通讯,常用MAX485转换芯片。

下面简单介绍一下RS232、RS422和RS485

RS232规范
RS232接口标准是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的。传统采用标准25芯D型插头座(DB25),后来IBM的PC机将RS232简化成了9芯D型插座(DB9)连接器,从而成为事实标准。
(1)信号电压为负逻辑关系,即:逻辑“1”为-3~-15V;逻辑“0”为+3~+15V 。
(2)传输速率较低,比特率为20Kbps,一般最高的综合程序波特率只能采用19200;现在由于采用了新的UART芯片,波特率可以达到115.2Kbps。
(3)接口使用一根信号线和一根信号返回线与地线构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
(4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在15米左右。
(5)是一种双向全双工、点对点通信,无法实现多机通信,不支持热插拔。
(6)定义了9根线,但是工业控制的RS-232口一般只使用RXD、TXD、GND三条线。

4.4.png

4.5.png

RS422规范

RS422是在RS232的基础上发展而来。
(1)改进了RS232通讯距离短、速率低、点对点通信的缺点,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),一条总线上最多连接10个接收器。
(2)采用4线,单向全双工、差分传输、多点通信的数据传输协议。4 根信号线:命名为TXD-、TXD+、RXD+、RXD-,两根发送、两根接收。
(3)适用于两个站之间通信,星型网、环网,不可用于总线网。

4.6.png

RS485规范

RS-485在RS422的基础上发展而来,电气性能与RS-422基本一样。
(1)RS485采用两线制,命名为A/B;只有2 根信号线,所以只能工作在半双工模式,常用于总线网。
(2)电平逻辑“1”以两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。
(3)一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。
(4)星形结构会产生反射信号,从而影响到485通信;总线到每个终端设备的分支线长度应尽量短,一般不要超出5米;分支线如果没有接终端,会有反射信号,对通讯产生较强的干扰,应将其去掉,最好在RS485设备两头接有120Ω终端电阻。所以RS485总线一般采用手拉手连接,手拉手连接类似于分支线长度为0。

4.7.png
星形连接

4.8.png
手拉手连接

RS-485和RS422连接的设备之间构成主从式通信网络(一主多从),每台设备有一个地址(或者叫设备号)。主机发送时从机都可以收到,从机都可以向主机发送,但是从机之间不能通信。通常采用主机呼叫、从机应答的方式。

3.2 I2C
IIC(Inter-IntegratedCircuit)的中文叫集成电路总线,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I²C的正确读法为“I平方C”。从名字就可以看出,它是为集成电路之间通信而设计的。虽然单片机种类繁多,但是仍然不可能满足所有应用,IIC总线引脚少,硬件实现简单,主要是为扩展单片机外设的,传输距离短。

使用多主从架构,每个连接到总线的器件都可以通过唯一的地址和其它器件通信。多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备使用总线。连接到总线的IC数量只是受到总线的最大负载电容400pf限制。

传输速率在标准模式下可以达到100kb/s,快速模式下可以达到400kb/s。

IIC为半双工、同步通信,它定义了两根线,一条双向串行数据线SDA和一条串行时钟线SCL,SDA 和 SCL 都是双向线路,都通过一个电流源或上拉电阻连接到正的电源电压。当总线空闲时,这两条线路都是高电平,连接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能;这绝对可以算得上是实现 I2C 总线协议的关键所在。

4.9.png

在协议层,IIC定义了通信的起始和停止位、数据有效性、响应、仲裁、时钟同步和地址广播等环节。

4.10.png
数据帧格式和通信时序

IIC有三种通信方式,分别为读、写和读写复合。
4.11.png
读通信

4.12.png
写通信

4.13.png
读写复合通信

每次通信时,依次发送起始信号、发送地址和读写标志后,等待从设备应答,应答后开始发送数据,每发送一个字节的数据都要等待接收方的应答信号才能继续发送,发送完数据后发送要停止信号。

3.3 SPI
SPI,是英语SerialPeripheral interface的缩写,顾名思义就是串行外围设备接口,最初由Motorola在2000年提出。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
可以看出,SPI和IIC主要应用于嵌入式系统内部通信,用于扩展单片机外设,不同的是IIC用于低速外设,SPI用于高速外设。因为SPI没有指定的流控制,没有应答机制确认是否接收到数据,所以跟IIC总线协议比较,在数据可靠性上有一定的缺陷。
SPI,是一种高速、全双工、同步的通信总线,SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备。
标准SPI采用4根线,它们是SDI(数据输入)、SDO(数据输出)、SCLK(时钟)、CS/SS(片选);其中CS/SS分别是ChipSelect(片选)和SlaveSelect(从机选择)的英文缩写。

(1) SDO/MOSI – 主设备数据输出,从设备数据输入;
(2) SDI/MISO – 主设备数据输入,从设备数据输出;
(3) SCLK – 时钟信号,由主设备产生;
(4) CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需要将从设备对应的片选引脚电平拉低或者是拉高。

4.14.png

SPI协议层规定了传输过程中的起始信号和停止信号、数据有效性、时钟同步、通讯模式,接下来依据某一种通讯模式下的通讯时序图来剖析协议层的内容。

4.15.png

起始和停止信号实际上就是片选信号,选中就是起始信号,取消选中就是停止信号。

数据有效性说的是在什么时候采集引脚的电平信号数据是有效的。IIC中通讯中的数据是在SCL总线为高电平时对数据采样,SPI中数据的采样是在SCK的上升沿或下降沿时进行的。

SPI有四种通讯模式,主要依靠总线空闲时SCK的时钟状态和数据采样时刻来区别。实际上常用的是模式有两种,也就是时钟极性CPOL和时钟相位 CPHA均设为0或者均设为1。主机和从机必须工作在相同的模式下才能实现正常通讯。

这里涉及到钟极性CPOL和时钟相位CPHA的知识:(1)极性影响总线空闲时的时钟信号是高电平还是低电平(CPOL = 1:表示空闲时是高电平,CPOL = 0:表示空闲时是低电平);相位直接决定SPI总线从那个跳变沿开始采样数据。(CPHA = 0:表示从第一个跳变沿开始采样,CPHA = 1:表示从第二个跳变沿开始采样)。

数据传输往往是从跳变沿开始的,也就表示开始传输数据的时候,是下降沿或者上升沿。

4.16.png

后续通过示例进一步学习串行通信。

文章出处: 机械智者

回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-19 23:13 , Processed in 0.144742 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表