一、目标
要求:设计一个使用I2C通讯协议的EEPROM读写控制器。使用写按键向EEPROM中写入1~10共10字节数据;使用读按键读出之前写入的数据并显示在数码管上。
分析:①首先按键控制读写操作按键消抖模块;②其次读出数据显示在数码管上
数码管显示模块;另外核心模块需要在了解I2C通讯协议和EEPROM存储芯片后再构建。(稍后补充模块构建思路)补充:③使用IIC协议
IIC驱动模块;④IIC协议是半双工通信方式,同一时刻只能进行一种操作,相当于仲裁模块
IIC_rw_data模块。
注:各个模块的具体输入输出会在后面进行介绍。
二、关于IIC
2.1 IIC物理层
(1) 它是一个支持多设备的总线。
(2)
一个
I2C
总线只使用两条总线线路,一条双向串行数据线
(SDA)
,一条串行时钟线
(SCL)
。数据线即用来表示数据,时钟线用于数据收发同步。
(3)
每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备
之间的访问。
(4)
多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占
用总线。
(5)
总线通过上拉电阻接到电源。当
I2C
设备空闲时,会输出高阻态,而当所有设备都
空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。
2.2 IIC协议层
( I2C 协议的整体时序图、读、写时序以及 I2C 设备的器件地址和存储地址 )
2.2.1 整体时序图
状态1(总线空闲状态):SCL和SDA都为高电平,此时IIC无设备工作。因为IIC是用线与结构,只要有一方拉低电平,线就为低电平,所以空闲状态必为高电平。
状态2(起始信号):在SCL为高时,SDA出现由高到低的下降沿,表示数据的传输开始。
状态4(停止信号):在SCL为高电平时,SDA由低变高,因为数据线由低变高,表示数据传输停止。