单片机学习(十一)I2C总线和AT24C02的使用

一、 存储器介绍 存储器分类图

image-20210905154725844

1. RAM

这类存储器中的数据都是掉电即失的,例如计算机中的内存就是DRAM,但它们数据读写速度都是要比ROM要快得多的。

SRAM:本质是电路,使用电路构成的触发器来存储数据(如JK触发器),因此这种存储器读写数据是最快的,而它们的成本也比较高,一般用作计算机的高速存储器寄存器

DRAM:使用电容来存储数据,因为电容存在漏电现象,因此需要每隔一段时间进行扫描重新充电。它们一般用来构成计算机的内存,手机的闪存等。

2. ROM

这类存储器中的数据有着掉电不丢失的特性,但它们读写数据的速度远小于RAM

Mask ROM:仅由电路构成,只读的ROM,就是只可读不可写

PROM:可以写入数据,但只能写入一次数据

EPROM:可读可写

...

二、AT24C02简介

AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息

存储介质:E2PROM

通讯接口:I2C总线

容量:256字节

电路连接

image-20210905160534839

三、I2C总线和AT24C02数据帧

I2C总线(Inter IC BUS)是由Philips公司开发的一种通用数据总线(通信协议)

两根通信线:SCL(Serial Clock)、SDA(Serial Data)

同步、半双工,带数据应答

通用的I2C总线,可以使各种设备的通信标准统一,对于厂家来说,使用成熟的方案可以缩短芯片设计周期、提高稳定性,对于应用者来说,使用通用的通信协议可以避免学习各种各样的自定义协议,降低了学习和应用的难度

1. 电路规范

所有I2C设备的SCL连在一起SDA连在一起

设备的SCL和SDA均要配置成开漏输出模式

SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右

开漏输出和上拉电阻的共同作用实现了“线与”的功能,此设计主要是为了解决多机通信互相干扰的问题

2. I2C的时序结构

我们可以将通过I2C协议实现主机与从机通信的过程分为以下六个部分这六个部分可以像拼图一样拼凑出所有的通信过程

2.1 发送起始信息

起始条件:SCL高电平期间,SDA从高电平切换到低电平,如下图所示:

image-20210908152835490

同时为了使这块拼图可以和其他的部分连接上,我们在发送起始信息(start)之后,也将SCL拉低。

2.2 发送终止信息

终止条件:SCL高电平期间,SDA从低电平切换到高电平

image-20210908153046203

同理,为了和其他拼图拼接上,我们得到的SCL原来是低电平的(这是因为后面的4块拼图结束时SCL都是低电平,因此来到终止信息时也是低电平),我们先拉高SCL然后拉高SDA即可发送终止信号了。

2.3 发送一个byte的信息

发送一个byte(字节)信息可以分解为循环发送8个bit 的信息,因此我们只需要知道如何发送一个bit的信息即可。

发送一个bit信息的操作:(1)SCL低电平期间,主机将数据位依次放到SDA线上(高位在前),(2)然后拉高SCL从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化

即如果我们希望发送0,则:

在SCL在低电平时,将SDA的电平拉低(置零

再将SCL的电平拉高,提醒从机读取信息

过一段时间(等待从机把信息读取完成)后再次将SCL拉低

具体的过程如图所示:

image-20210908153940500

例如在B7时间内,如果SDA为低电平,则发送的数据为0,如果为高电平则发送的数据为1

2.4 接收一个byte的信息

和发送信息类似,我们只需要知道如何接收一个bit的信息,然后只需要循环进行8次即可接收一个字节的信息了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwfxps.html