串行是所有“时分复用”的总称,使用昂贵的术语。这意味着数据会随着时间散布,通常是一个接一个地发送。您命名的所有协议都是串行协议。
串口对于通用异步接收器发送器,是最常用的串行协议之一。它几乎和我一样大,非常简单。大多数控制器在板上都有一个硬件UART。它使用一条数据线进行传输,并使用一条数据线接收数据。最常见的是传输8位数据,如下所示:1个起始位(低电平),8个数据位和1个停止位(高电平)。低电平起始位和高电平停止位意味着始终存在从高到低的转换来启动通信。那就是描述UART的原因。无电压电平,因此您可以使用3.3 V或5 V(无论您的微控制器使用哪种)。请注意,要通过UART进行通信的微控制器必须在传输速度,比特率方面达成一致,因为它们只有开始位的下降沿才能进行同步。这就是所谓的异步通信。
对于长距离通信(不一定是几百米),5 V UART并不是很可靠,这就是为什么它被转换为更高的电压的原因,“ 0”通常为+12 V,“ 0”通常为-12V。 1“。数据格式保持不变。然后便有了RS-232(实际上应该将其称为EIA-232,但没有人这样做。)
时序依赖性是UART的一大弊端,解决方案是USART,用于通用同步/异步接收器发送器。这样既可以做UART,又可以做同步协议。在同步中,不仅有数据,而且还有时钟传输。每一位都有一个时钟脉冲告诉接收器它应该锁存该位。同步协议或者需要更高的带宽(例如在曼彻斯特编码的情况下),或者需要额外的时钟线(例如SPI和I2C)。
SPI(串行外围接口)是另一个非常简单的串行协议。主机发送一个时钟信号,并在每个时钟脉冲上将一位移出到从机,另一位移入从机。因此,信号名称为时钟的SCK,对于主机输出从机输入为MOSI,对于主机输入从机输出为MISO。通过使用SS(从选择)信号,主机可以控制总线上的多个从机。有两种方法可以将多个从设备连接到一个主机,一种在上面提到,即使用从设备选择,另一种是菊花链连接,它使用较少的硬件引脚(选择线),但是软件变得复杂。
I2C(集成电路间,发音为“ I squared C”)也是一种同步协议,这是我们所看到的第一个带有“智能”的协议。其他的则愚蠢地将位移入和移出,就是这样。I2C仅使用2条线,一条用于时钟(SCL),另一条用于数据(SDA)。这意味着主机和从机通过同一根导线发送数据,并再次由创建时钟信号的主机控制。I2C不会使用单独的从选择来选择特定的设备,但是具有寻址功能。主机发送的第一个字节包含一个7位地址(以便您可以在总线上使用127个设备)和一个读/写位,指示下一个字节还是来自主机还是应该来自主机。奴隶。在每个字节之后,接收器必须发送“ 0”以确认接收到该字节,主机用第9个时钟脉冲锁存。如果主机要写入一个字节,则重复相同的过程:主机将一位接一位地放在总线上,每次给出一个时钟脉冲以表示已准备好读取数据。如果主机要接收数据,则仅产生时钟脉冲。给定时钟脉冲时,从机必须注意下一个位已准备就绪。该协议已获得NXP(以前为Phillips)的专利,以节省许可成本,Atmel使用TWI(2线接口)一词,该词与I2C完全相同,因此任何AVR设备都不会具有I2C,但会具有TWI。如果主机要接收数据,则仅产生时钟脉冲。给定时钟脉冲时,从机必须注意下一个位已准备就绪。该协议已获得NXP(以前为Phillips)的专利,以节省许可成本,Atmel使用TWI(2线接口)一词,该词与I2C完全相同,因此任何AVR设备都不会具有I2C,但会具有TWI。如果主机要接收数据,则仅产生时钟脉冲。给定时钟脉冲时,从机必须注意下一个位已准备就绪。该协议已获得NXP(以前为Phillips)的专利,以节省许可成本,Atmel使用TWI(2线接口)一词,该词与I2C完全相同,因此任何AVR设备都不会具有I2C,但会具有TWI。
同一条线上的两个或多个信号可能会导致冲突,如果一个设备发送“ 1”而另一设备发送“ 0”,则可能会出现问题。因此,总线采用线或运算:两个电阻将总线拉至高电平,而设备仅发送低电平。如果他们想发送高电平,他们只需释放总线。
TTL(晶体管晶体管逻辑)不是协议。这是一种较旧的数字逻辑技术,但该名称通常用于指代5 V电源电压,通常不正确地指代应称为UART的东西。
关于这些,您可以写一本书,看来我很顺利。这只是一个非常简短的概述,让我们知道是否需要澄清一些事情。