赞
踩
IIC(Inter-Integrated Circuit,也常写作I²C或I2C)是一种由飞利浦半导体(现为NXP半导体)在1980年代初设计的串行通信总线协议,主要用于在嵌入式系统中进行设备间短距离、低速的数据传输。IIC总线因其简洁的接口和易于实现的特性,在许多电子设备中得到广泛应用,尤其是那些需要在主板上集成多种传感器、控制器或存储器的场合。
上图是IIC总线的时序图,分为六个方面,具体是①起始信号 ②停止信号 ③应答信号 ④数据有效性 ⑤数据传输 ⑥空闲状态
① 主机首先在 IIC 总线上发送起始信号,那么这时总线上的从机都会等待接收由主机发出的数据;
② 主机接着发送从机地址+0(写操作)组成的 8bit 数据,所有从机接收到该 8bit 数据后,自行检验是否是自己的设备的地址,假如是自己的设备地址,那么从机就会发出应答信号;
③ 主机在总线上接收到有应答信号后,才能继续向从机发送数据。
① 主机发出起始信号;
② 接着主机发送从机地址+1(读操作)组成的 8bit 数据,从机接收到数据验证是否是自身的地址;
③ 在验证是自己的设备地址后,从机就会发出应答信号,并向主机返回 8bit 数据,发送完之后从机就会等待主机的应答信号;
④ 假如主机一直返回应答信号,那么从机可以一直发送数据,也就是图中的(n byte + 应答信号)情况,直到主机发出非应答信号,从机才会停止发送数据。
ESP32-S3 有两个 IIC 总线接口,根据用户的配置,总线接口可以用作 IIC 主机或从机模式。
IIC 接口特点:
下面介绍一下 ESP32S3 的 IIC 主机写入从机,7 位寻址,单次命令序列的场景,如下图所
示。
在 ESP32-S3 硬件 IIC 控制器中,都有相对应的空间存放相对应的内容。比如上图中,在cmd 内存区中存放的是就是命令序列,就比如前面提及到的起始信号、写过程、读过程、停止信号;在 RAM 内存区中存放的就是某些命令序列携带的内容。
当主机在软件配置好命令序列和 RAM 数据后,操作寄存器启动数据传输时。控制器的行
为可分为以下四步:
1、等待 SCL 线位高电平,以避免 SCL 线被其他主机或者从机占用。
2、执行 RSTART 命令发送 START 位。即发送起始信号。
3、执行 WRITE 命令从 RAM 的首地址开始取出 N+1 个字节并一次发送给从机,其中第一个字节为地址。这个过程中会产生对应的时序,携带数据进行发送。
4、发送 STOP 命令,即发送停止信号。
参考资料:ESP32-S3 使用指南-IDF 版
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。