i2c时序图_stm32F4之使用I2C读写24C02

概述

​ 上一篇写了模拟 I2C,这篇用 I2C 操作 24C02。

一.24C02简单介绍

​ 1.串行E2PROM是基于I2C-BUS 的存储器件,

​ 2.可以支持100万次擦除,数据可以保存100年,

​ 3.支持每次读写1字节

​ 4.写周期最大5ms(即最好保证在5ms后进行读写,否则可以数据将会读取错误)

二.24C02的读写时序图

从手册中可以找到以下两个读写图,我也将以以下两个图为例进行函数编写,其他读写图请查手册

d2bcd5f090e9b9a7d23bf6c96cd42c94.png

43f6f87fb205fd0d37989444658cc2a5.png

三.用模拟的I2C协议封装24C02的读与写

​ 该设备为IIC设备,因此我们要先确定其设备地址,STM32F4探索者的开发板上为2K的E2PROM,A2=A1=A0 因此设备地址为(0XA0/0xA1)

9d576c17e831a3a81e961ce53af20741.png

根据下图进行编程:

字节写:

d2bcd5f090e9b9a7d23bf6c96cd42c94.png

使用封装好的I2C函数,进行函数24C02的写函数封装:

函数编写流程为 :start->发送设备地址->等待ACK->发送需要被写的内存地址->等待ACK->发送数据写入E2PROM->等待ACK->STOP

void sendOneByte(u8 Adddrsend, u8 Datasend)
{
    IIC_start();
    IIC_Send_Byte(0xA0);
    IIC_Wait_Ack();
    IIC_Send_Byte(Adddrsend);
    IIC_Wait_Ack();
    IIC_Send_Byte(Datasend);
    IIC_Wait_Ack();
    IIC_stop();
    delay_ms(10);
}

字节读:

43f6f87fb205fd0d37989444658cc2a5.png

读函数编写流程:start->发送设备地址->等待ACK->发送需要被读的内存地址->等待ACK->发送读指令(设备地址)->等待ACK-->读内存数据->等待no ACK->STOP

u8 receiceOneByte(u8 Adddreceive)
{
    u8 receive=0;
    IIC_start();
    IIC_Send_Byte(0xA0);
    IIC_Wait_Ack();
    IIC_Send_Byte(Adddreceive);
    IIC_Wait_Ack();
    IIC_start();
    IIC_Send_Byte(0xA1);
    IIC_Wait_Ack();
    receive=IIC_Read_Byte(0);
    IIC_stop();
    return receive;
}

最后就可以对24C02进行简单的读写,可以配合我另一篇文章看,更为清晰。

后续我还会继续分享stm32 的相关知识,相信你会学到更多知识,我会在[stm32 ] 专栏持续更新,来关注本专栏吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值