浅谈总线协议

总线协议是一组规则和标准,用于在计算机系统或嵌入式系统中的不同硬件设备之间进行数据通信。这些协议定义了数据传输的格式、时序、速率以及控制信号等。常见的总线协议包括:

  1. I2C(Inter-Integrated Circuit):一种简单的同步通信总线,通常用于连接微控制器和其他集成电路,如传感器和内存。它只需要两根线(时钟线和数据线)。

  2. SPI(Serial Peripheral Interface):一种高速的同步串行数据总线,用于短距离通信,通常用于微控制器和各种外围设备之间的通信。

  3. UART(Universal Asynchronous Receiver/Transmitter):一种异步串行通信总线,用于远程通信,不需要时钟线,因为通信是异步的。

  4. CAN(Controller Area Network):一种多主控制的串行通信协议,常用于汽车和工业控制系统中,因为它具有错误检测和修正功能,以及可靠的数据传输能力。

  5. 1-Wire:一种单总线通信协议,由德州仪器公司开发,使用单根数据线进行通信,常用于温度传感器等应用。

  6. RS-232、RS-485:这些是串行通信标准,用于实现计算机与电子设备之间的数据传输,RS-485支持多点通信,而RS-232通常用于点对点通信。

下面简单介绍一下单总线协议,别的协议有机会后续更新

一、

单总线协议(1-Wire)是一种由美国DALLAS公司推出的串行通信协议,它与传统的串行通信协议如SPI、I²C不同,因为它只使用单根信号线进行数据传输。这根信号线既负责传输时钟信号也负责传输数据,而且数据传输是双向的。这种设计使得单总线协议在节省I/O口线、简化硬件结构、降低成本以及便于总线扩展和维护方面具有显著优势。

单总线协议的硬件结构相对简单,通常只包含一个漏极开路或三态端口连接到数据线,并且外接一个约5KΩ的上拉电阻。当数据线处于空闲状态时,它保持高电平;如果总线保持低电平超过480us,总线上的所有器件将复位。在某些工作状态下,如温度转换或EEPROM写入,为了保证足够的电源电流,还需要在总线上提供强上拉。

单总线协议的应用非常广泛,包括数字温度传感器(如DS18B20)、温湿度传感器(如DHT11)、A/D转换器(如DS2450)、身份识别器(如DS1990A)等。这些器件都可以通过单总线进行控制和数据交换。

在通信时序方面,单总线协议非常严格,包括初始化、ROM命令和功能命令等步骤。初始化包括复位脉冲和存在脉冲,确保数据的完整性。写入和读取数据也有严格的时序要求,例如,写1的操作要求在拉低总线后的15μs内释放总线,而写0则要求至少保持60μs的低电平。读取操作时,单总线器件在主机发出读时序后才向主机传输数据。

总的来说,单总线协议因其简单、高效和成本低廉的特点,在嵌入式系统和物联网设备中得到了广泛应用。

二、

I2C(Inter-Integrated Circuit)通讯协议,又称为IIC(Inter-Integrated Circuit),是一种非常流行的串行通信协议,用于连接微控制器和各种外围设备,如传感器、存储器、实时时钟(RTC)等。I2C协议由Philips Semiconductor(现在的NXP Semiconductors)在1980年代初期开发。

以下是I2C通讯协议的一些关键特点:

  1. 两线制接口:I2C通信只需要两条线,一条是串行数据线(SDA),另一条是串行时钟线(SCL)。SDA负责数据传输,SCL用于同步数据传输。

  2. 多主机:I2C总线上可以有多个主机和多个从机。主机控制数据传输的开始和结束,从机响应主机的请求。

  3. 地址驱动:每个从设备都有一个唯一的地址,当主机想要与特定的从设备通信时,它会发送这个设备的地址。

  4. 同步通信:数据传输是同步的,由主机产生的时钟信号(SCL)同步。

  5. 高速传输:I2C支持不同的速度模式,包括标准模式(最高100 kbit/s)、快速模式(最高400 kbit/s)、高速模式(最高3.4 Mbit/s)和超高速模式(最高5 Mbit/s)。

  6. 应答机制:在数据传输过程中,接收设备通过在特定的时钟周期内拉低SDA线来发送应答信号(ACK),如果接收设备不拉低SDA线,则发送非应答信号(NACK)。

  7. 数据传输:数据传输可以是读操作(主机从从机读取数据)或写操作(主机向从机写入数据)。

  8. 字节操作:I2C协议以字节(8位)为单位进行数据传输。

  9. 可扩展性:通过增加地址位,I2C可以支持更多的设备,但实际的设备数量还受到总线电容和信号延迟的限制。

I2C通信的基本过程包括以下步骤:

  1. 启动条件(Start Condition):主机通过在SCL为高时将SDA从高电平拉低来产生启动条件,这标志着一次通信的开始。

  2. 发送地址和读写位(Address and Read/Write Bit):主机发送7位设备地址后跟一个读写位(第8位),读写位的值决定了是读操作还是写操作。

  3. 应答位(Acknowledge Bit):从设备通过拉低SDA来发送ACK,表示已准备好通信。

  4. 发送数据(Data Transmission):数据字节在SDA线上传输,每个字节后都跟着一个应答位。

  5. 停止条件(Stop Condition):主机通过在SCL为高时将SDA从低电平拉高来产生停止条件,这标志着一次通信的结束。

  6. 数据读取:如果主机需要从从机读取数据,从机将数据放到SDA线上,主机在每个字节后发送ACK,除了最后一个字节后发送NACK。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值