一、通信的分类
1.并行通信
传输原理:数据各个位同时传输。(以字节或字节的倍数进行传输)
优点:速度快。
缺点:占用引脚资源多。传输成本高、传输距离近、抗干扰能力弱(串扰)应用领域:一般大量数据传输,并且传输距离较近 如计算机总线
2.串型通信
传输原理:数据按位顺序传输。(每一位都占据固定的时间长度)
优点:占用引脚资源少。(最少一根线)、传输成本低、传输距离远
缺点:速度相对较慢
应用领域:一般用于工控设备、测量设备、少部分通信设备 USB COM口
二、通信的方式
1单工(a)
只能发送或者接收数据,一般只有一根线。比如遥控器,收音机,无线电台
2.半双工(b)
在同一时刻,只能接收或者发送,至少有两根线。比如对讲机
3.双工(c)
在同一时刻,既可以接收又可以发送,至少有两根线。例,移动电话
三、同步与异步通信
三种通信方式示意图:
根据接收端与发送端的时钟异同又分为同步通信和异步通信。
1.同步通信
带时钟同步信号传输。例如:SPI, IIC通信接口。要求通信双方必须使用同一个时钟,相当于发送数据的同时接收数据,同步通信属于连续串行传输数据,一次只传输一帧数据,相比于异步通信而言,传输效率更高,缺点是时钟必须一致。
2.异步通信
不带时钟同步信号。例如:UART(通用异步收发器), 单总线;如UART接口属于异步通信,要求通信双方具有发送端和接收端,由于不要求时钟同步,所以在通信的时候,通信双方必须提前约定好通信格式(字符格式)以及通信速率,异步通信以字符为单位进行传输,在传输一个字符的时候会添加起始位和停止位,通过起始位以及停止位来达到同步的功能。
四、常见通信协议
示意图

1.UART(通用异步收发器)
UART是一种全双工,异步串型通信方式。在发送数据时,将并行数据转换成串型数据来传输;在接收数据时,将串型数据转换成并行数据。可以实现全双工传输和接收。
(1)UART串口通信需要两根信号线,一根用来串口接收,一根用来串口发送。RXD为数据输入引脚,用于数据接收。TXD为数据发送引脚,用于数据发送。GND为接地引脚。
(2)UART在发送或者接收过程中的一帧数据由四部分组成。起始位(低电平),数据位,奇偶校验位和停止位(高电平);
(3)起始位标志着一帧数据的开始,停止位标志着一帧数据的结束,数据位是一帧数据中的有效数据。通常为 5 6 7 8 位。最好是8位
(4)数据校验 :在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity),它们介绍如下:
A. 奇校验要求有效数据和校验位中"1"的个数为奇数,比如一个8位长的有效数据为:01101001,此时总共有4个"1",为达到奇校验效果,校验位为"1",最后传输的数据将是8位的有效数据加上1位的校验位总共9位。
B. 偶校验与奇校验要求刚好相反,要求帧数据和校验位中"1"的个数为偶数,比如数据帧:11001010,此时数据帧"1"的个数为4个,所以偶校验位为"0"。
C. 0校验是不管有效数据中的内容是什么,校验位总为"0",1校验是校验位总为"1"。
(5)波特率:串口异步通讯中由于没有时钟信号(如前面讲解的DB9接口中是没有时钟信号的),所以两个通讯设备之间需要约定好波特率,即每个码元的长度,以便对信号进行解码,下图中分开的每一格就是代表一个码元。常见的波特率为4800、9600、115200等。
波特率(bandrate),指的是串口通信的速率,也就是串口通信时每秒钟可以传输多少个二进制位。比如每秒钟可以传输9600个二进制(传输一个二进制位需要的时间是1/9600秒,也就是104us),波特率就是9600。(6)硬件流控制
A.为什么需要流控?
流控的目的是让串口通信非常可靠,可以保证发送和接收不会漏掉东西。
B.现在为什么不用流控?
现在计算机之间有更好更高级(usb、internet)的通讯方式,串口在发送方速率比接收方快的时候流控经基本被废弃了。现在串口的用途更多是用来输出调试信息的。而且现在的硬件已经基本不需要这个了,收发速度完全可以协调得过来
2.单总线(1-wirte)
1-wirte是种半双工,异步串型通信方式。是Maxim全资子公司Dallas的一项专有技术。是目前多数标准串行数据通信方式,与SPI / I2C不同,它采用单根信号线,既传输时钟,又传输数据,而且数据传输是双向的。它具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。 1-ware单总线适用于单个主机系统,能够控制一个或多个从机设备。当只有一个从机位于总线上时,系统可按照单节点系统操作;而当多个从机位于总线上时,则系统按照多节点系统操作。
3.SPI
SPI是英语SerialPeripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有 数字信号处理 器和数字信号解码器之间。
(1)SPI是一种高速的,全双工,同步的通信总线,并且在芯片的引脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32F4也有3个SPI接口。
(2)SPI速度:几兆到几十兆不等。TM32F4的SPI功能很强大,SPI时钟最高可以到37.5Mhz,支持DMA,可以配置为SPI 协议或者I2S协议(支持全双工I2S)。
(3)SPI总线接线图:只能一主多从。
(4)数据如何传输:SPI通讯是全双工的,主机通过MOSI在发送1位数据时,主机的MISO也会接收1位数据。发送一个字节数据,相应的会接收到一个字节的数据。
(5)SPI接口一般使用4条线通信:
a.SPI通讯需要四个管脚:
SCLK(serial clock串行时钟,由主控产生脉冲方波时钟);
MOSI(master output salve input主机将数据一位一位的传输给从机的数据通道)
MISO(master input salve output从机将数据一位一位的传输给主机的数据通道)
CS(chip select,低电平表示选择,高电平表示释放)(并不绝对)
b. SPI总线可以挂载多个设备,如何区分多个设备呢?就是通过CS管脚来进行区分。每一个SPI从设备都对应有一个CS片选脚。主控和SPI从设备进行通信时,首先会将相应的从设备的片选管脚-拉低主设备只能有一个
4.IIC
IIC(Inter-Integrated Circuit),两线式串行总线,由PHILIPS公司开发用于连接微控制器及其外围设备。 它是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。(400000bits ,115200bits) IIC是半双工通信方式。
(1)可以一主多从 或者多主多从的方式。 多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。
(2)这里要注意IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI。
(3)IIC一共只有两个总线: 一条是双向的串行数据线SDA,一条是串行时钟线SCL。外围器件的时钟线和数据线都是挂载在IIC总线(由主控芯片提供),并且在空闲状态下所有器件的时钟线(SCL)和数据线(SDA)都被总线的上拉电阻拉高,这样就可以把SDA引脚和SCL引脚设置为开漏模式即可,好处是防止短路。
(4)如果IIC总线上挂载了多个外围器件,如何与某一个器件进行单独通信?
每个挂载在IIC总线上的外围器件都有独立的器件地址,主机发送开始信号后,只需要发送想要通信的设备的地址,如果设备收到地址并且匹配正确,则开始进行单独通信。
(5)I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。
a. 开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
b. 结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
c. 应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据,这个低电平就是ACK信号。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。





2万+

被折叠的 条评论
为什么被折叠?



