历史上的今天
返回首页

历史上的今天

今天是:2024年09月02日(星期一)

正在发生

2021年09月02日 | 关于51单片机中的几种通信模式与总结

2021-09-02 来源:eefocus

前言


在硬件传输过程中少不了各模块的通信,就近来学习到的知识做一个简单的梳理与总结


通信的基本概念

通信的方式分为多种,按照数据传送方式可以分为串行通信与并行通信,按照通信的数据同步方式,可以分为异步通信与同步通信,按照数据的传输方向可以分为单工,半双工和全双工通信。


串行通信与并行通信


串行通信

使用一条数据线,一位一位进行传输,适合于远距离通信

传输特点:传输线少,长距离传送成本低,

并行通信

将数据字节的各位用多条数据线同时进行传送,通常是8位,16位,32等数据一起传输

特点:控制简单,传输速度快,长距离传输成本高,抗干扰ability差。


异步通信与同步通信


异步通信

发送与接收设备使用各自的时钟控制数据的发送与接收过程,异步通信以字符为单位进行传输

特点:不要求收发双方时钟严格一致,传输效率不高


同步通信

要建立发送方对于接收方时钟的直接控制,使得双方能够达到完全同步,保持位同步关系,也保持字符同步关系,实现方式有两种:外同步与自同步


单工,半双工与全工


单工通信

是指数据传输只能沿一个方向,不能反传输,只能由发送向接收传输


半双工通信

半双工是指数据传输可以沿两个方向,但需要分时进行


全双工通信

数据可以同时进行双向传输


串口通信(RS232)

全双工点对点通信

RS232C通信协议 通常遵循96-N-8-1格式

“96”表示通信波特率为9600,通常使用的是异步串口通信,没有时钟线,

“N”表示无校验位,用于校验数据防止出现偏差,

“0”表示数据位数为8位

“1”表示1位停止位,可由0.5,1,1.5,或2个逻辑1的数据位表示


串口相关寄存器

(1) 串口控制寄存器SCON

在这里插入图片描述

SM0与SM1为工作方式选择位:

在这里插入图片描述

SM2:多机通信控制位,主要用于方式 2 和方式 3。当 SM2=1 时可以利用收到的 RB8 来控制是否激活 RI(RB8=0 时不激活 RI,收到的信息丢弃;RB8=1 时收到的数据进入 SBUF,并激活 RI,进而在中断服务中将数据从 SBUF 读走)。当SM2=0 时,不论收到的 RB8 为 0 和1,均可以使收到的数据进入 SBUF,并激活 RI(即此时 RB8 不具有控制 RI 激活的功能)通过控制 SM2,可以实现多机通信。


REN:允许串行接收位。由软件置 REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。


TB8:在方式 2 或方式 3 中,是发送数据的第 9 位,可以用软件规定其作用。

可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。

在方式 0 和方式 1 中,该位未用到。


RB8:在方式 2 或方式 3 中,是接收到数据的第 9 位,作为奇偶校验位或地址帧/数据帧的标志位。在方式 1 时,若 SM2=0,则 RB8 是接收到的停止位。


TI:发送中断标志位。在方式 0 时,当串行发送第 8 位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使 TI 置 1,向 CPU 发中断申请。在中断服务程序中,必须用软件将其清 0,取消此中断申请。


RI:接收中断标志位。在方式 0 时,当串行接收第 8 位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使 RI 置 1,向 CPU 发中断申请。也必须在中断服务程序中,用软件将其清 0,取消此中断申请

(2)电源控制寄存器 PCON

在这里插入图片描述

SMOD:波特率倍增位。在串口方式 1、方式 2、方式 3 时,波特率与 SMOD 有关,当SMOD=1 时,波特率提高一倍。复位时,SMOD=0。


串口工作方式


(1)方式0

串行口为同步移位寄存器的输入输出方式,主要用于扩展并行输入或输出口。

(2)方式1

为10位异步通信口,1位起始位,8位数据位,1位停止位。

(3)方式2和方式3

11位数据的异步通信口,TXD为数据发送引脚,RXD为数据接收引脚,


串口的使用方法


1,计算波特率


方式0=fosc/12

方式2=(2SMOD/64)*fosc

方式 1 的波特率 =(2SMOD/32)·(T1 溢出率)

方式 3 的波特率 =(2SMOD/32)·(T1 溢出率)

其中 T1 溢出率 = fosc /{12×[256 -(TH1)]}


2,串口初始化的步骤:


确定T1的工作方式(TMOD 寄存器)

确定串口的工作方式(SCON寄存器)

计算T1的初值(设定波特率),装载TH1,TL1;

启动T1(TCON中的TR1位)

如果使用中断,需开启串口中断控制位(IE寄存器)

RS485通信

为半双工通信,两线制,可以一对多点进行组网

RS485通信特点:

(1)接口电平低,不易损坏芯片。RS485 的电气特性:逻辑“1”以两线间的电压差为+(2~6)V 表示;逻辑“0”以两线间的电压差为(2~6)V 表示。接口信号电平比 RS232 降低了,不易损坏接口电路的芯片,且该电平与 TTL 电平兼容,可方便与 TTL 电路连接。

(2)传输速率高。10 米时,RS485 的数据最高传输速率可达 35Mbps,在1200m 时,传输速度可达 100Kbps。

(3)抗干扰能力强。RS485 接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。

(4)传输距离远,支持节点多。RS485 总线最长可以传输 1200m 以上(速率≤100Kbps)一般最大支持 32 个节点,如果使用特制的 485 芯片,可以达到128 个或者 256 个节点,最大的可以支持到 400 个节点


i2c通信

I2C(Inter-Integrated Circuit)总线是由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的

一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C 总线只有两根双向信号线。一根是数据线 SDA,另一根是时钟线 SCL。由于其管脚少,硬件实现简单,可扩展性强等特点,因此被广泛的使用在各大集成芯片内。


I2c物理层

物理层特点:

在这里插入图片描述

(1)支持多设备总线,支持多个通讯主机及通讯从机

(2)只使用两条总线线路,一条双向串行数据线(SDA).一条串行时钟线(SCL) 数据线用来表示数据,时钟线用于数据收发同步

(3)每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。

(4)总线通过上拉电阻接到电源,当I2C设备空闲时,会输出高阻态,当所有设备都空闲输出高阻态,上拉电阻把总线拉成高电平

(5)当多个主机使用总线时,防止数据冲突,会利用仲裁的方式决定哪个设备占用总线

(6)具有三种传输模式,标准模式传输速率为 100kbit/s,快速模式为400kbit/s,高速模式下可达 3.4Mbit/s,但目前大多 I2C 设备尚不支持高速模式

(7)连接到相同总线的 数量收到最大电容400pf的限制

常用的一些术语:

主机:启动数据传送并产生时钟信号的设备

从机:被主机寻址的器件

多主机:同时有多于一个主机尝试控制总线但不破坏传输,

主模式:用 I2CNDAT 支持自动字节计数的模式; 位 I2CRM,I2CSTT,I2CSTP控制数据的接收和发送

从模式:发送与接收操作都是由I2C模块自动控制的

仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏的过程

同步:两个或多个器件同步时钟信号的过程;

发送器:发送数据到总线的器件

接收器:从总线接收数据的器件


I2C协议层

定义了通信的起始和停止信号,数据有效性,响应,仲裁,时钟同步和地址广播等环节

(1)数据有效性

I2C总线在进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平与低电平状态才允许变化

![)

数据传输以字节为单位,传输字节数不受限制

(2)起始和停止信号

SCL线为高电平期间,SDA由高电平向低电平的变化表示为起始信号,SCL线为高电平期间,SDA线由低电平向高电平的变化表示为终止信号

在这里插入图片描述

(3)应答响应

在发送器件传输完一个字节的数据后,后边必须跟一个校验位,校验位是接收端通过控制SDA(数据线)来实现,以提醒发送端数据我这边已经

接收完成,数据传送可以继续进行。这个校验位其实就是数据或地址传输过程中

的响应。响应包括“应答(ACK)”和“非应答(NACK)”两种信号。作为数据接收端时,当设备(无论主从机)接收到 I2C 传输的一个字节数据或地址后,若希望对方继续发送数据,则需要向对方发送“应答(ACK)”信号即特定的低电平脉冲,发送方会继续发送下一个数据;若接收端希望结束数据传输,则向对方发送“非应答(NACK)”信号即特定的高电平脉冲,发送方接收到该信号后会产生一个停止信号,结束信号传输。

应答响应时序图

每一个字节必须保证是 8 位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有 9 位)。

这些信号中,起始信号是必须的,结束语应答信号可以不要


总线的寻址方式

7位寻址与10位寻址

10 位寻址和 7 位寻址兼容,而且可以结合使用。10 位寻址不会影响已有的 7 位寻址,有 7 位和 10 位地址的器件可以连接到相同的 I2C 总线。以 7 位寻址为例进行介绍。

当主机发送了一个地址后,总线上的每个器件都将头 7 位与它自己的地址比较,如果一样,器件会判定它被主机寻址,其他地址不同的器件将被忽略后面的数据信号。至于是从机接收器还是从机发送器,都由 R/W 位决定的。从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的 7 位寻址位有 4 位是固定位,3 位是可编程位,这时仅能寻址 8 个同样的器件,即可以有 8 个同样的器件接入到该 I2C 总线系统中。


SPI通信

SPI是串行外设接口,是 Motorola 公司推出的一种同步串行接口技术,是一种高速的,全双工,同步的通信总线。

SPI优点:支持全双工通信 通信简单 数据传输速率快

缺点:没有指定的流控制,没有应答机制确认是否接受到数据,所以与IIC总线协议比较在数据可靠性上有一定的缺陷

特点:

(1):高速,同步,全双工 非差分,总线式

(2):主从式通信模式(一个SPI通讯系统需要包含一个(只有一个)主设备,一个或多个从设备,SPI的接口读写操作,都是由主设备发起,当存在多个从设备时,通过各自的片选信号进行管理)

SPI的物理层

以主从方式工作,通常有一个主设备和一个或多个从设备,需要至少四根线,MISO,MOSI,SCLK,CS

在这里插入图片描述
在这里插入图片描述

SPI通信模式


SPI的四种通信模式,不同从设备在出厂时就配置为某种模式,只能改变主设备的SPI并进行配置,通过CPOL(时钟极性)和CPHA(时钟相位)来控制我们主设备的通信模式

时钟极性CPOL用来配置SCLK的电平处于何种状态(空闲态还是有效态),时钟相位CPHA用来配置数据采样是在第几个边沿;

CPOL=0,表示当SCLK=0时处于空闲态,所以有效状态就是SCLK处于高电平时;


CPOL=1,表示当SCLK=1时处于空闲态,所以有效状态就是SCLK处于低电平时;


CPHA=0,表示数据采样是在第1个边沿,数据发送在第2个边沿;


CPHA=1,表示数据采样是在第2个边沿,数据发送在第1个边沿。

在高电平有效状态时,第一边沿为上升沿,第二边沿为下降沿;在低电平有效状态时,第一边沿为下降沿,第二边为上升沿

推荐阅读

史海拾趣

DATEL Inc公司的发展小趣事

随着技术的不断进步,DATEL Inc.的数据采集产品逐渐在军事领域找到了用武之地。公司接到一项为军方开发高精度数据采集系统的订单。经过深入研究和反复测试,DATEL Inc.成功交付了一套满足军方严苛要求的数据采集系统,为军方提供了准确、可靠的数据支持。这一突破不仅为DATEL Inc.赢得了军方的高度认可,也进一步扩大了公司在军事领域的影响力。

Apex [Apex Microtechnology]公司的发展小趣事

Apex Microtechnology一直致力于开发在性能、质量和可靠性方面引领行业的产品。通过不断创新和研发,公司成功推出了多款具有竞争力的功率模拟产品,为全球客户提供高效的解决方案。同时,Apex Microtechnology也积极拓展全球市场,与众多知名企业建立了合作关系,进一步提升了其在电子行业的影响力。

EMS GmbH公司的发展小趣事

作为欧洲最领先的生产商之一,EMS GmbH公司与各大国际整车厂建立了长期稳定的合作关系。这些合作不仅为公司带来了稳定的订单和收入来源,还使EMS GmbH能够深入了解市场需求和技术趋势,从而不断优化产品和服务。通过与国际整车厂的紧密合作,EMS GmbH公司在汽车转换器注塑件领域赢得了良好的口碑和声誉。

Dawn Electronics Inc公司的发展小趣事

随着市场的不断发展,Dawn Electronics Inc公司意识到技术创新的重要性。公司加大了研发投入,成立了专门的研发团队,积极探索新的技术方向。经过不懈的努力,公司成功研发出了一种新型的智能传感器,具有更高的精度和更低的功耗,这一创新技术迅速被市场接受,为公司带来了可观的收益。

泽耀科技(Ashining)公司的发展小趣事

随着市场的不断变化和消费者需求的升级,泽耀科技(Ashining)意识到只有不断创新才能在竞争中立于不败之地。公司加大了对研发的投入,引进了一批高素质的研发人才,并建立了完善的研发体系。经过多次尝试和实验,泽耀科技成功突破了某项关键技术,并推出了升级版的产品。这些新产品不仅性能更加优越,而且具有更高的性价比,深受消费者的喜爱。

3L Electronic Corporation公司的发展小趣事

作为一家有社会责任感的企业,3L Electronic Corporation始终关注环境保护和可持续发展。公司积极采用环保材料和生产工艺,减少对环境的影响。同时,公司还参与社会公益事业,回馈社会。这些举措不仅提升了公司的社会形象,也为公司的长期发展创造了良好的社会环境。

请注意,上述故事是基于公开信息和行业常识的概括描述,并不代表3L Electronic Corporation公司的真实发展历程。如需了解更多关于该公司的详细信息,建议查阅其官方网站或相关新闻报道。

问答坊 | AI 解惑

nRF24L01外围电路问题

ant1和ant2为什么要这样接啊,ant1外围电路阻抗等于多少?如何计算啊?C6起什么作用,大小如何决定呢。 那位大哥帮忙下…

查看全部问答>

電子電路設計需要哪些基礎知識

電子線路設計需要哪些基礎知識 如電源部份掌握的知識 邏輯部份如CPU工作的系統條件與外圍器件如何溝通的 數電 模電 PCB 設計 輔助軟件應用等…

查看全部问答>

关于NAND flash 驱动,Driver高手请进...

小弟对NAND flash的single-die有些了解,但对multi-die的不太了解,也没用过,请问大虾们: 1. multi-die和single-die的具体区别是什么,写driver时需要注意什么?(datasheet上咋没说明,555.。。。) 2. 在调timing时,应该调到什么样的程度才 ...…

查看全部问答>

奇怪,我的VS2005找得到WINCE5模拟器,却启动不成功。WINCE5模拟器是完全安装VS2005是装上去的。

奇怪,我的VS2005在模拟器管理里找得到WINCE5模拟器,却启动不成功。WINCE5模拟器是完全安装VS2005是装上去的。…

查看全部问答>

Wince 模拟u盘问题。

现在想把wince5 模拟成U盘,用了wince5的源码usbfn,storage目录中。 注册表也做了相应的改动,现在pc机已经能够识别出Upan。 可是在通信过程中,PC机老是会发 0x23指令,而次指令并不支持。导致reset。 在网上查到: 一个U盘插上,Windows要连 ...…

查看全部问答>

两个线程之间的切换所需要的时间

请教大家一个线程的切换问题:请高手们指点指点    在我的程序中用到好几个线程,而且在线程中频繁用到SLEEP()延时函数, 这样可能会造成线程间的频繁切换,可能会使软件的运行效率降低, 我想知道两个线程之间的切换需要多少时间 ...…

查看全部问答>

缺氧报警器

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 …

查看全部问答>

SOIC窄体16PIN1.27mm脚距,这种封装在元件库里焊盘一般宽和长是多少?

SOIC窄体16PIN1.27mm脚距,这种封装在元件库里焊盘一般宽和长是多少? 在orcad中发现宽有0.6mm,长竟然有2.5mm。 焊盘的画法是否有相应的标准来参照啊…

查看全部问答>

stm32的tim输出比较模式区别

timing  toggle  active inactive四种模式有什么区别 比较匹配时,输出管脚可以保持它的电平(OCxM=000)、 被设置成有效电平(OCxM=001)、   ?? 被设置成无有效电平(OCxM=010)   ? ? 或进行翻转 ...…

查看全部问答>

滤波电路和放电路对片式钽电容器参数性能的不同选择

转载的:(http://blog.163.com/qhrong718@126/blog/static/882427522011024567513/?fromdm&isFromSearchEngine=yes) 一,滤波电路中使用的片式钽电容器的性能选择     滤波电路是片式钽和氧化铌电容器最常用电路, 电容 ...…

查看全部问答>