硬件i2c和软件i2c

I2C协议是一种双向通信协议,需要两根线路:时钟线(SCL)和数据线(SDA)。其中:SCL是由主设备提供时钟信号来同步数据传输(SCL的作用)。SDA:用来传输数据的(双向传输)。

I2C协议的设计使得多个设备可以通过同一条总线进行通信,其中每个设备都有一个唯一的地址。这使得微控制器可以轻松地与多个设备进行通信,并能确定与哪个设备进行通信(也称寻址)。

通信协议通常包括硬件规定和软件规定两个方面:

硬件规定包括:硬件如何连接、端口地输入输出模式等

主机对SCL线任何时候都完全控制;从机任何时候都不能控制。

主机对SDA线:在空闲状态下,主机可以主动发起对SDA的控制,只有在从机发送数据与从机应答的时候,主机才会转交SDA的控制权给从机。

软件模拟iic(软件iic)

软件IIC,又称为“bit-banging IIC”,是指使用MCU的通用输入/输出(GPIO)引脚模拟IIC通信协议的方式。这种方式的优点在于,由于它不依赖于MCU的内部模块,因此它可以在任何具有GPIO功能的MCU上使用。此外,软件IIC的配置和使用通常比硬件IIC更简单。

然而,软件IIC也有其局限性。首先,由于IIC通信需要由CPU通过GPIO引脚进行模拟,因此CPU的负载较大。其次,由于GPIO引脚的性能限制,软件IIC通常不能支持和硬件IIC一样高的通信速率。

所以硬件IIC和软件IIC各有优缺点。在选择使用哪种方式时,需要根据具体的应用需求和MCU的性能进行权衡。例如,如果MCU的CPU负载较重,或者需要较高的通信速率,那么可能更适合使用硬件IIC。相反,如果MCU没有内部的IIC模块,或者需要更简单的配置和使用,那么可能更适合使用软件IIC。

硬件IIC

硬件IIC是指使用微控制器(MCU)内部集成的IIC模块进行通信的方式。这种方式的优点在于,由于IIC通信由硬件模块自动完成,因此CPU的负载较小,可以同时处理其他任务。此外,硬件IIC通常能够支持更高的通信速率。

然而,硬件IIC也有其局限性。首先,由于硬件IIC使用的是MCU内部的模块,因此它的使用受到MCU的限制。其次,硬件IIC的配置和使用通常比软件IIC更复杂。

在这里插入图片描述

发送一个字节

img

发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节。总结:低电平切换(放)数据,高电平读取(读)数据。

接收一个字节

img

接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后主机释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)。

发送应答

img

发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据

规则:数据0表示应答,数据1表示非应答。

​ 发送应答是为了告诉从机:主机是否还要数据(命令从机发不发数据)。

目的:通知从机是否继续发送数据。

接收应答

img

接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)。

规则:数据0表示应答,数据1表示非应答

从机告诉主机接收到了主机传递的数据了,主机刚发送一个字节,就立刻说有没有人收到数据(SDA高),如果有接收数据就会回应(SDA拉低)。目的:判断从机是否接收到了主机发送的数据。

通过拼接基本的时序单元,可以组成读写时序,进而实现芯片之间的通信。

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值