IIC

IIC读写EEPROM

1、IIC数据起始位与停止位

SCL为高电平时,SDA数据线由高电平转换为低电平为起始信号;

而SDA由低电平转换为高电平,则为停止信号,

2、IIC数据的有效性

每一个时钟周期传输一位数据,并且只有在SCL时钟线为高电平时,数据有效。

在SCL时钟线的低电平处发生数据位的电平跳变,为下一次传输数据做准备。

3、IIC物理层

  • IIC有两条总线,一条时钟线SCK,一条数据线SDA。两条总线通过上拉电阻接到电源,默认状态时是高电平。
  • 支持多主机多从机的模式,每个设备有一个独立的地址,根据这个地址可以进行设备间的通信
  • 当有多个主机同时使用总线的时候,还可以通过仲裁的方式来决定使用总线的优先级,具体是通过线与的逻辑来实现的,即
  • 主机A与主机B同时发送数据,发送低电平的一方获得总线的使用权。
  • 连接到总线上的IIC的设备数量受到总线电容400PF的限制,根据设备地址位为7位,理论上会有128个设备

4、IIC读写数据过程

5、IIC读写EEPROM

字节写:起始信号,从机地址,R/W,ACK,写入地址,数据,ACK,停止信号

页写:在写入地址处进行连续的写入数据,不需要每次发送写入地址(1页是8个字节,当写入数据的大小超过8字节后会从头开始写入)

 

当前地址读:EEPROM内部有指针,从当前指针所指的位置读取数据

随机读:起始信号,从机地址,R,ACK,读取地址,起始信号,从机地址,R,ACK,数据,NO-ACK,停止信号

连续读:连续读取数据

 

IIC与SPI的区别

1、IIC是通过设备地址来寻址,SPI通过SS信号线来寻址,SS置低电平则为开始信号,SS置高电平则为停止信号

SPI

SPI有四根总线,一条片选线,一条时钟线,两条数据线。

片选线:由主机控制,当片选线置低电平时有效

时钟线:由主机产生,作用是为了数据同步

 

SPI由四种通信模式:CPOL/CPHA

CPOL表示时钟极性,在空闲状态下有高电平和低电平两种模式,0代表低电平,1代表高电平

CPHA表示时钟相位,在奇数边沿采用还是在偶数边沿采样,0代表奇数,1代表偶数

常用模式为11/00

 

SPI外设:可以实现全线全双工,双线单向,单线模式;其中双线模式可以使传输速率加倍

 

IIC结构体:时钟频率、地址模式、占空比、主机地址

 

IIC写入数据函数

函数参数:传入要写入的缓存区指针,写地址,写入多少字节

要考虑换页的操作:一页是8个字节,一个32页,如果是从起始位置开始写入数据,那么要计算两个数据,一个是写满多少页,一个是余下多少个字节。可以用一共写入数据的大小

比如:写入15个字节,15/8=1,15%8=7,也就是说要写满1页,然后再写7个字节。

如果不是起始位置写入数据

 

posted @ 2024-01-14 21:25  该说不唠  阅读(319)  评论(0)    收藏  举报