最后更新:2022-02-19 01:36
IIC简介
IIC (I2C,Inter-Integrated Circuit)即集成电路总线,是一种两线式串行总线,由 PHILIPS公司开发,用于连接微控制器及其外围设备。多用于主机和从机在数据量不大且传输距离短的场合下的主从通信。I2C 总线由数据线 SDA 和时钟线 SCL 构成通信线路,既可用于发送数据,也可接收数据,是一种半双工通信协议。总线上的主设备与从设备之间以字节(8 位)为单位进行双向的数据传输
标准模式:100Kbit/s
快速模式:400kbit/s
高速模式:3.4Mbit/s
iic器件和sdl、scl关系
空闲状态:
I2C 总线的 SDA 和 SCL 两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。
起始信号:
在 SCL 保持高电平期间,SDA 的电平被拉低,称为 I2C 总线总线的起始信号,标志着一次数据传输开始。起始信号由主机主动建立的,在建立该信号之前 I2C 总线必须处于空闲状态。
停止信号:
在 SCL 保持高电平期间,SDA 被释放,返回高电平,称为 I2C 总线的停止信号,标志着一次数据传输的终止。停止信号由主机主动建立的,建立该信号之后,I2C 总线将返回空闲状态。
数据传输:
在 I2C 总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在 SCL 串行时钟的配合下,在 SDA 上逐位地串行传送每一位数据。进行数据传送时,在 SCL 的高电平期间, SDA 上的电平必须保持稳定,只有在 SCL 为低电平期间,才允许 SDA 上的电平改变状态。即数据在 SCL 的上升沿到来之前就必须准备好,并在在下降沿到来之前必须保持稳定。
应答信号:
I2C 总线上的所有数据都是以字节传送的,发送端每发送一个字节,就必须在第 9 个SCL 脉冲期间释放 SDA,由接收端反馈一个应答信号。应答信号为低电平时,称为有效应答位(ACK),表示接收端成功接收了该字节;应答信号为高电平时,称为非应答位(NACK),表示接收端接收该字节失败。对于反馈有效应答位 ACK 的要求是,接收端在第 9 个时钟脉冲之前的低电平期间将 SDA 拉低,并且确保在该时钟周期的高电平期间保持低电平。如果接收端是主控端,则在它收到最后一个字节后,发送一个 NACK 信号,以通知被控发送端结束数据发送,并释放 SDA 线,以便主控接收器发送停止信号。
EEPROM 简介
写操作时序
写操作,发起始位->写写控制字->接收 ACK->写字节地址->接收 ACK->写数据接收ACK-> 发停止位。
写控制字:{7’b101000,1’b0}
读操作时序
发起始位->写读控制字->接收 ACK->写读地址->接收读数据->发NACK->发停止位。
读控制字:{7’b101000,1’b1}。
随机读
顺序读
全部代码
param
test
control
i2c_master
uart
https://blog.csdn.net/li_lys/article/details/122887251?spm=1001.2014.3001.5502
signal Tap 抓取结果
这里可以直观看出读写数据的正确性
工程链接:https://pan.baidu.com/s/1-q2C7oKcxfW3lybtOi17cQ
提取码:4e1g
本文由 在线网速测试 整理编辑,转载请注明出处。