IIC协议
IIC 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。
是一种简单的双向两线制总线协议标准,支持同步串行半双工通讯。

物理层面:

协议层面:



EEPROM:硬件

M24C02的SCL及SDA引脚连接到了STM32对应的I2C引脚中,结合上拉电阻,构成了I2C通讯总线,它们通过I2C总线交互。
E2PROM芯片的设备地址一共有7位,其中高4位固定为:1010,低3位则由E3/E2/E1信号线的电平决定E2PROM设备地址。
R/W是读写方向控制位,与地址无关。
在我们电路图中由于E1/E2/E3均是接的低电平,所以它的地址是1010000即0x50。

由于I2C通讯时常常是地址跟读写方向连在一起构成一个8位数,且当R/W位为0 时,表示写方向,所以加上7位地址,其值为“0xA0”,常称该值为I2C设备的“写地址”。
当R/W位为1时,表示读方向,加上7位地址,其值为“0xA1”,常称该值为“读地址”。
写数据(一页内)
起始位 -> 发地址+写标记 -> 接收ACK -> 发EEPROM内部地址 -> 接收ACK -> 发送数据1 -> 接收ACK -> 发送数据2 -> 接收ACK ... -> 发送数据n -> 接收ACK -> Stop信号
EEPROM 检测到Stop信号开始写(M24C02的写周期 5ms)
读数据(先伪写再读)
起始位 -> 发地址+写标记 -> 接收ACK -> 发EEPROM内部地址 -> 接收ACK -> 起始位 -> 发地址+读标记 -> 接收数据1 -> 发送ACK -> 接收数据1 -> 发送ACK ... -> 接收数据n -> 发送NACK -->Stop信号
EEPROM 收到主设备发的 NACK 后会停止发送数据
使用IIC协议读写EEPROM 软件方式实现 (寄存器)
① IIC驱动代码
1. 初始化 2. 发送起始信号 3. 发送结束信号 4. 发送一个字节的数据 5. 接收应答信号 6. 接收一个字节的数据 7. 发送应答信号
② EEPROM 部分代码
1. 向EEPROM的指定位置写入指定长度的数据 2. 从EEPROM的指定位置读取指定长度的数据
1172

被折叠的 条评论
为什么被折叠?



