IIC读写EEPROM

IIC的物理层特点

在这里插入图片描述
SCL和SDA是两根总线, 支持多设备。所有要进行通信的设备都要引出两个引脚,连接到这两根总线上。

  1. IIC协议只使用两条总线,** 一条双向的串行数据线(SDA), 一条串行时钟线(SCL)**,一根数据线,一次只能传输一位。用到时钟,是同步通讯
  2. 每个连接到上边的设备都有个独立的地址,主机能利用这个地址进行不同设备之间的访问。
  3. 总线通过上拉电阻接到电源,当IIC设备空闲时,设备输出高阻态,当所有设备都空闲时,所有设备都输出高阻态,上拉电阻会把总线拉成高电平
  4. IIC的传输模式,具有多种传输速度,标准100KBit/s,快速模式400KBit/s,高速模式3.4MBit/s,大多数IIC设备不支持高速模式,传输速度由时钟的频率决定,频率越高自然越快。
  5. 当多个设备通信时,会有优先级、仲裁

IIC的协议层

IIC的协议定义了通讯的起始和停止信号、数据有效性、响应、仲裁、时钟同步和地址广播等环节

1、IIC读写的基本过程(以stm32和EEPROM通信为例)

1、写数据
在这里插入图片描述

  1. 首先由主机发送一个开始信号
  2. 然后主机在数据总线上广播从机地址
  3. 确定数据的传输方向(是读还是写)
  4. ‘ A ’ 代表EEPROM的应答,因为主机广播了地址,EEPROM知道在找它,产生应答信号发往主机
  5. 主机发送一个字节的数据,从机接收到之后,会返回给主机一个应答信号,直到从机返回一个非应答信号,主机才会停止线传输,并发送一个停止信号。

2、读数据
在这里插入图片描述
对于主机读数据,开始信号,地址、读写控制信号、应答信号,仍然由主机产生,从机在一个响应信号之后,发送一个字节的数据给主机,这时是主机产生应答信号,然后从机继续给主机传输,直到主机说我不要了,产生非应答信号,主机最后在发送一个停止信号。

2、通讯的起始和停止信号

在这里插入图片描述

  • 当SCL线是高电平时,SDA从高到底的过程表示起始信号
  • 终止信号:SCL线高电平时,检测到SDA上升沿则为终止信号
  • 起始和终止信号都是由主机产生

3、数据有效性

在这里插入图片描述
IIC在传输数据的时候,仅当SCL线为高电平时,SDA表示的数据才有效。高电平采集数据,低电平切换数据

4、地址

在配置从机地址的时候,一般地址用7位2进制数表示,但是一般情况下,会和最后的读写控制位合并,正好一个字节
在这里插入图片描述

5、主机的发送和从机的响应

当主机发送完成数据之后,主机会释放SDA线的控制权,,怎么释放?让发送端处于高阻态,就相当于断开状态,在下一个高电平时刻,数据总线的控制权交给数据接收端。由接收端产生应答信号ACK(或者非应答信号NACK)
在这里插入图片描述

IIC的具体配置

时钟

IIC的时钟是由CCR的低12位来决定的 Thigh和Tlow是SCL线的高低电平持续的时间,可以看出在标准模式下,SCL的高低电平持续时间是一样的。
在这里插入图片描述
在这里插入图片描述

数据控制部分

  • DATA REGISTER数据寄存器8位有效,数据寄存器通过数据移位寄存器,一位一位的从SDA线上传输,这个移位寄存器是缓存的作用
  • 比较器:当作为从机的时候,主机要广播一个地址,这个比较器的作用就是,把自己自身地址寄存器的值和总线上收到的地址作比较,以便知道是否是在 “叫自己” 。
  • PEC做错误校验,一般不用
    在这里插入图片描述

发送过程

发送过程有两行,第一行是操作控制寄存器(CR),第二行是操作完之后的检验是否完成的事件,严格符合IIC的通信标准
在这里插入图片描述

IIC结构体讲解

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值