嵌入式进阶:STM32——IIC协议 和 EEPROM

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的指定位置读取指定长度的数据

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值