I2C软件模拟EEPROM通讯实验

本文介绍了如何使用STM32通过软件模拟I2C与EEPROM进行通讯,详细讲解了I2C时序、设备寻址以及模拟I2C的步骤,包括GPIO配置、数据传输等,并提供了实验结果。
摘要由CSDN通过智能技术生成

I2C是一种串行通讯总线,由于只有串行数据线SDA和串行时钟线SCL两个总线而被广泛使用。

I2C软件模拟通信的本质是用芯片上任意两个引脚模拟I2C通信,也就是说通过控制任意两个引脚电平的高低变化来模拟I2C时序。写代码之前,需要非常熟悉I2C时序图。

准备基础知识:

如下I2C时序图,I2C总线在空闲状态下SCL和SDA都保持高电平。

I2C总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时,SDA 由高向低时,开始传送数据。

结束信号:SCL为高电平时,SDA 由低向高时,结束传送数据。

应答信号:在一个字节传输的8个时钟后的第9个时钟期间,接收器必须回送一个应答位(ACK)给发送器。

本项目所用芯片STM32F103RCT6,最小系统自带I2C存储器AT24C02,原理图如下:

由于I2C可以接多个主设备,多个从设备(外围设备),因此进行通讯是需要进行器件寻址,以此分辨是于哪个设备进行通讯,每个设备地址唯一。

EEPROM器件寻址:起始条件使能芯片读写操作后,EEPROM都要求有8位的器件地址信息。该器件地址信息的LSB为读/写操作选择位,高为读操作,低为写操作。若比较器件地址一致,EEPRON输出应答立答“0”。如果不一致,则返向待机状态。

AT24C系列E2PROM芯片地址的固定部分为1010。设备地址需要看芯片引脚的具体连接情况,本项目中1,2,3引脚均接地,则A2,A1,A0三位均为0,因此写地址为10100000,即0xA0;读地址为10100001,即0xA1。

要点:

模拟I2C是GPIO应设置为通用开漏输出或通用推挽输出,电平每跳变一次,需要加延时函数。

设备地址需要看芯片引脚的具体连接情况,数据地址的长度根据芯片不同而不同。

SCL时钟电平为低时,才可以改换SDA数据线的电平,SCL为高时SDA必须保持稳定。SDA数据在SCL时钟为低电平时准备好,在SCL上升沿的过程发送出去。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Artemis_yuer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值