我在高职教STM32——I2C通信之读写EEPROM(一)

我在高职教STM32——I2C通信之读写EEPROM(一)大家好 我是老耿 高职青椒一枚 一直从事单片机 嵌入式 物联网等课程的教学 对于高职的学生层次 同行应该都懂的 老师在课堂上教学几乎是没什么成就感的 正是如此 才有了借助头条平台寻求认同感和成就感的想法

欢迎大家来到IT世界,在知识的湖畔探索吧!

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助头条平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分享出来,如果您正是一名单片机爱好者或是一名同行,欢迎点赞+关注,各位的支持是本人持续输出的动力,多谢多谢!#30天学会STM32##单片机#

我在高职教STM32——I2C通信之读写EEPROM(一)



欢迎大家来到IT世界,在知识的湖畔探索吧!

前面我们详细分析了I2C通信的协议和规范,并编写了驱动程序。接下来我们就该使用这些驱动函数,与开发板上的I2C器件进行通信了。本章我们关注开发板上的AT24C02芯片,它是一个采用了EEPROM工艺的存储器,读写操作通过I2C接口完成。因此从现在开始,I2C这类通用的协议与AT24C02这个具体的存储器就要合体了。不过,大家一定要分清楚,I2C是一种通信协议,有着严密的通信时序逻辑要求,而AT24C02是一个器件,只是这个器件采样了I2C协议的接口与STM32单片机相连而已,二者并没有必然的联系,存储器芯片可以用其它接口,I2C也可以用在其它很多器件上。

【学习目标】

  1. 了解常用存储器的类型及其特征
  2. 加深对I2C通信时序的理解
  3. 领悟I2C驱动与应用的分层理念和相互关联

本章关注如何调用前面编写的I2C驱动程序来完成对AT24C02存储器的读写,为了不让篇幅太长,本章打算分四个部分来讲解,本文是第一部分。

一、浅谈存储器的种类

存储器是计算机系统必备的组成部分,用来存储程序和数据。它是一个庞大的家族,存储技术和制造工艺也是日新月异。限于篇幅,本章不可能把各类存储器的器件特点和工作原理都过一遍,这里仅对一些必要的术语和类型稍作阐述。

图1是依据存储介质特性来分类的,分成了“易失性存储器”“非易失性存储器”。其中的“易失/非易失”是指存储器断电后,数据是否会丢失的特性。由于一般易失性存储器存取速度快,而非易失性存储器可长期保存数据,所以它们都在计算机系统中占据重要角色。PC机中易失性存储器最典型的代表就是内存条,非易失性存储器的代表则是硬盘。

我在高职教STM32——I2C通信之读写EEPROM(一)

图1 常用存储器的种类(按存储介质特性分)

1.1 RAM存储器

RAM是Random Access Memory的缩写,被译为随机存储器。所谓随机存取,指的是当存储器中的数据被读取或写入时,所需要的时间与数据所在的存储位置无关。实际上,现在RAM已经专门指代那些作为计算机内存的易失性半导体存储器。

根据RAM的存储机制,又分为动态随机存储器DRAM(Dynamic RAM)以及静态随机存储器SRAM(Static RAM)两种。如图2所示,SRAM中的存储单元相当于一个锁存器,只有0、1两个稳态(当然,如果断电了,数据还是会丢失的);DRAM则是利用电容存储电荷来保存0和1两种状态,如图3所示,因此需要定时对其进行刷新,否则随着时间的推移,电容其中存储的电荷将逐渐消失。

我在高职教STM32——I2C通信之读写EEPROM(一)

图2 SRAM存储单元

我在高职教STM32——I2C通信之读写EEPROM(一)

图3 DRAM存储单元

SRAM比DRAM昂贵的多,但速度更快、功耗极低(特别是在空闲状态)。因此SRAM首选用于带宽要求高,或者功耗要求低,或者二者兼而有之。由于复杂的内部结构,SRAM比DRAM的占用面积更大,因而不适合用于更高储存密度低成本的应用。表1给出了这两类存储器的特性对比。

我在高职教STM32——I2C通信之读写EEPROM(一)

表1 SRAM与DRAM特性对比

所以在实际应用中,SRAM一般只用于CPU内部的高速缓存(Cache),而外部扩展的内存一般使用DRAM。在STM32系统的控制器中,只有STM32F429型号或更高级的芯片才支持扩展DRAM,其它型号如STM32F1、STM32F2及STM32F407等型号只能扩展SRAM。

1.2 非易失性存储器

非易失性存储器种类非常多,半导体类的有ROM和FLASH,而其它的则包括光盘、硬盘等。

1)ROM存储器

ROM是Read Only Memory的缩写,意为只读存储器。由于技术的发展,后来设计出了可以方便写入数据的ROM,而这个Read Only Memory的名称被沿用下来了,现在一般指代非易失性半导体存储器,包括后面介绍的FLASH存储器,有的地方也把它归到ROM类里边。表2汇总了一些常见的ROM类型及其特点。

我在高职教STM32——I2C通信之读写EEPROM(一)

表2 常见ROM的种类

2)FLASH存储器

FLASH存储器又称为闪存,它也是可重复擦写的储器,部分书籍会把FLASH 存储器称为FLASH ROM,但它的容量一般比EEPROM大得多,且在擦除时,一般以多个字节为单位。如有的FLASH存储器以4KB为扇区,最小的擦除单位为一个扇区。根据存储单元电路的不同,FLASH存储器又分为NOR FLASHNAND FLASH,两者对比见表3。

我在高职教STM32——I2C通信之读写EEPROM(一)

表3 NOR FLASH与NAND FLASH的对比

由于两种FLASH存储器特性的差异,NOR FLASH一般应用在代码存储的场合,如嵌入式控制器内部的程序存储空间。而NAND FLASH一般应用在大数据量存储的场合,包括SD卡、U盘以及固态硬盘等,都是NAND FLASH类型的。

1.3 开发板上的EEPROM

在实际的应用中,保存在单片机RAM中的数据,掉电后就丢失了,保存在单片机的FLASH中的数据,又不能用它来记录变化的数值。但是在某些场合,我们又确实需要记录下某些数据,而它们还时常需要改变或更新,掉电之后数据还不能丢失,比如我们的家用电表度数、电视机里边的频道记忆,一般都是使用EEPROM来保存数据。一般情况下,EEPROM拥有30万~100万次的写入寿命,而读取次数是无限的。

我们板子上的EEPROM器件型号是AT24C02,容量大小为256字节(2Kbits),数据的读写基于I2C通信协议来完成。它与STM32连接的电路如图4所示,大家注意一下图中标记了“Address: 0x50”的字样,这7位二进制数就是该器件在I2C总线上的7位地址。

我在高职教STM32——I2C通信之读写EEPROM(一)

图4 开发板上AT24C02与STM32连接原理图

图5是AT24C02数据手册中对设备地址的描述,其中高4位地址是固定的1010,而低3位地址取决于具体电路的设计,由芯片上A2、A1、A0这3个引脚的实际电平决定。从图4中可以很明显的看到,这3个引脚都接地为0,因此它在I2C总线上的地址就为0b(0x50)。R/W是读写方向位,与地址无关。

我在高职教STM32——I2C通信之读写EEPROM(一)

图5 AT24C02的设备地址

(第一部分完,共四部分)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/102643.html

(0)
上一篇 9小时前
下一篇 9小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信