您现在的位置是:首页 > 科技前沿
微控制器连接协议:W1、I2C、SPI、UART
智慧创新站
2024-11-22【科技前沿】139人已围观
简介串行通信串行通信是许多集成电路器件的基本数据传输方式。从本质上讲,数据以一给方向从发送方传输到接收方,一次传输1位。为了防止传输错误,传输的数据可以包括错误检查代码,通常是CRC。为确保传输成功,接收方可以发送确认信息。串行通信优于并行通信,因为距离或制造成本,因此具有多个连接(内联、电线、电缆等)...
串行通信是许多集成电路器件的基本数据传输方式。从本质上讲,数据以一给方向从发送方传输到接收方,一次传输1位。为了防止传输错误,传输的数据可以包括错误检查代码,通常是CRC。为确保传输成功,接收方可以发送确认信息。
串行通信优于并行通信,因为距离或制造成本,因此具有多个连接(内联、电线、电缆等)的成本太高。直到今天,串行通信被广泛用于将不同类型的硬件相互连接,形成了非常不同的协议的基础。
1-Wire协议
使用1-Wire协议,只需使用一根数据传输/电源线1,即可在服务器和多个客户端之间建立一对多连接。连接为半双工,双向,16.3Khz传输速度。
通常,使用漏极开路MOSFET来连接器件。服务器和客户端之间的连接使用上拉电阻器处于高压状态。为了传输数据,将上拉电阻器接地,然后在服务器和客户端之间建立低压连接以进行数据传输。高压状态用于为为连接的客户端供电的电容器充电。
消息为8位MSB。典型的事务工作方式如下:
服务器发送复位脉冲
客户端发送确认消息
服务器发送8位命令
服务器和客户端交换8位数据组
为了防止传输错误,可以使用8位CRC
I2C(Inter-Integrated-Circuit)是一种2线协议,用于在客户端和服务器之间实现多对多连接:两条线是串行数据(SDA)和串行时钟(SCL)。该连接是半双工、双向的,具有固定的、可配置的传输速度,为0.1、0.4、1.0、3.4或5.0MBit。
SDA和SCL线路始终保持在高压级,其中SDA线路使用上拉电阻。当服务器开始传输时,它会关闭其MOSFET栅极,使SDA线降至低电平状态。然后,通过向SDA和SCL线路施加不同的电压,传输信息。SDA线路上的低电压也意味着一个主节点正在通信,使其他主节点保持安静。SCL线路上的低电压对客户端表示相同的信息。
I2C总线中的所有设备都有7位地址。为了对设备进行寻址和接收构象,使用了2位。因此,I2C中的所有消息都是9位MSB。典型的传输方式是:
服务器发送一个7位地址和一个读/写位
寻址客户端使用位确认(从而完成9位消息格式)
根据消息的不同,服务器要么将写入数据发送到客户端,以区分寄存器/缓冲区和要写入的数据,要么期望客户端将其数据写入服务器从中读取的指定寄存器/缓冲区
当SDA和SCL再次处于高电平状态时,传输完成
I2C系统具有一组复杂的寄存器,用于捕获系统的全局状态并协调不同设备的交互方式。寄存器地址及其数据特定于供应商和设备。
SPI协议SPI,串行外设接口,是多个客户端到一台服务器的多对一连接协议。它需要4根线:用于时钟的SCL、用于选择客户端的SCS、用于服务器数据传输的SDTS、用于客户端数据传输的SDTC。如果连接是全双工、双向的,并且对传输速度没有限制(可以达到10MB或更多)。
位帧是可配置的,通常为8位,但也使用12位或16位。数据与LSB一起发送。
在基极状态下,SCS为高电平(使用上拉电阻),SCL、SDTS和SDTC为低电平。当服务器启动通信时,它使用MOSFET门将SCS拉至低电平,并通过SCL发送数据。然后,服务器使用SDTS,所选客户端使用SDTC进行全双工通信。
典型的通信如下:
服务器确定连接到客户端的时钟速度
服务器将SCS设置为低电压,并通过SDTS发送数据
寻址客户端在SDTC线路上以选定的时钟速度进行响应
服务器和客户端交换数据
服务器将SCS设置为高电压,将SCL设置为低电压
SPI需要为每个连接的客户端提供专用的SDTC线,这对集成电路设计有很大影响。因此,菊花链可用于设计仅在SDTC线上的电路,并对数据传输协议进行额外更改。有趣的是,SPI协议没有固定的标准,但有几个特定于供应商的实现遵循相同的准则。
UART和RS-232这两个协议控制两个设备之间的直接一对一连接。具体来说,RS-232定义了物理传输特性:电信号、它们的时序和含义,以及硬件引脚和连接器的物理尺寸。只需两根线即可实现最小的RS-232连接:用于传输数据的TXD和用于接收数据的RXC。在这个物理标准之上。UART定义了逻辑消息传递,这是完全可配置的:单工、半双工或全双工,通信速度至少为115,2KBit。
在基本状态下,TXD和RXD线路均为高电平。发送方将TXD切换到高电平并立即开始传输数据,而接收方使用RXD确认数据。发送方和接收方也使用这些线路来同步其时钟
传输的数据为7–11位LSB,包括起始位和停止位。
典型的消息交换如下:
发送方发送起始位、5位或9位消息以及停止位
接收方在其移位寄存器中缓冲传入消息
当不再接收数据时(例如,一个完整的时钟周期处于逻辑低电平状态),来自移位发送器的数据被刷新到集成电路的其他部分
UART标准的历史意义很有趣。尽管RS-232(COM端口)的早期物理表现形式几乎从当今的终端消费计算机中消失了,但该标准在许多微控制器中被仿真,以允许通过USB进行串行连接。
很赞哦!(154)