stm32(十四)IIC总结

一:IIC总线知识

SDA:双向数据线,主机可以通过SDA线发送数据给丛集,丛集也可以通过SDA线发送数据给主机
SCL:时钟信号线,驱动数据线收发数据的脉冲信号由SCL提供,SCL脉冲信号永远由主机发出

在总线上SDA和SCL都有上拉电阻,因为IIC总线接口的芯片SDA,SCL输出都是开漏输出(没有输出1的能力)

主机:主动寻址从机,发送起始(占用总线),停止条件(释放总线)

从机:从机永远不会主动的发送数据给主机,从机是接受主机发送过来的指令,数据,在主机发送的时钟信号线的驱动作用下发送数据给主机。

发送器:发送数据到总线

接收器:接受总线上的数据

仲裁器:解决多主机模式主设备占用总线竞争问题----不关注

二:IIC总线协议

1.空闲状态:当主机不占用总线跟从机通信的时候,SDA和SCL都处于高电平,
        这种状态我们称为空闲状态。

2.起始条件:  SCL高电平期间,SDA有一个下降沿。
作用及特点:由主机发出,占用总线,而从机将会被从低功耗模式唤醒。

3.停止条件:  SCL高电平期间,SDA有一个上升沿。
作用及特点:由主机发出,释放总线,而从机将会进去低功耗模式

通过以上起始条件和停止条件的特点来看,在正常的数据传输期间,如果SCL为高电平期间,SDA数据线不允许改变。

4.位传输:当SCL为高电平期间,发送方会保持SDA数据线上面数据的稳定。
    当SCL为低电平期间,发送方可以发送新的一位数据到SDA上。

1)主机发送一位数据到总线上
   首先主机把SCL拉低
   然后主机发送一位数据到SDA数据线上
   最后主机把时钟信号线拉高,

2)主机从总线上接受一个数据
   首先主机把SCL拉低
   (从机会把一位数据发送到总线上)
   主机把SCL拉高
   读取SDA数据线上的数据
   (如果主机用的是IIC控制器,在上升沿的时候会读取数据)

5.应答:接受数据的一方,在第9个时钟脉冲的时候要给发送方一个应答

1)主机发送一个数据给从机后,需要读取从机给的响应
   首先主机把时钟信号线拉低
    (从机此时会根据接受是否正常,给出相应的响应)
   主机把时钟信号线拉高
   主机读取SDA数据线上的数据,如果等到0,则有读到响应
2)主机读取从机发送过来的一个字节数据后,需要给从机一个响应   
   首先主机把时钟信号线拉低
   主机根据实际情况,判断要不要把SDA拉低
   主机把时钟信号线拉高

常用存储设备存储类型:
ROM:只读存储器,掉电数据不丢失
RAM:随机存储器,可读可写,掉电数据会丢失
Eeprom:电可擦除PROM,可读可写,掉电数据不丢失
Flash:闪存,可读可写,掉电数据不丢失

存储设备的存储容量=寻址空间*字长

AT24C02
   at24c02是一种EEPROM存储芯片
特点:
   工作电压范围:1.8V~5.5V
   存储容量:256(寻址空间)* 8(字长)(2K bits)
   总线接口:IIC总线
   IIC总线通讯速度:1MHz(5V),400KHz(1.8V,2.5V,2.7V)
   具有写保护功能
   可以按字节写,也可以按页写
   写周期最大5ms
   可擦写100W次,数据保存时间100年


IIC总结

SDA跟SCL的拉低拉高要严重注意,有一个不一样就会错误

在连续读写中,要知道
写入地址是开始页的第几位
在开始页要写入的个数
要写入的页数
不足一页的个数

程序中
先分写入地址是不是页的开始,写入的数据大于一页还是小于一页,声于数据小于一页的情况
 

你可能感兴趣的:(stm32)