嵌入式——EEPROM(AT24C02)

目录

一、初识AT24C02

1. 介绍

2. 引脚功能

补:

二、AT24C02组成

1. 存储结构

2. AT24C02通讯地址

3. AT24C02寻址方式

(1)芯片寻址

(2)片内子地址寻址

三、AT24C02读写时序

1. 写操作

(1)字节写入方式

流程:

(2)页写入方式

2. 读操作

(1)立即读方式

流程:

(2)指定地址读方式

流程:

(3)连续读方式

补充:


一、初识AT24C02

1. 介绍

        AT24C02是 低工作电压的 2Kb 串行电可擦除 只读存储器,可存储 256个字节 数据,内部有一个 16字节页写缓冲器。AT24C02工作电压 1.8~5.5V,采用二线制 IIC数据传输协议,支持硬件写保护,能擦写 100万次,数据可保存 100年。

        通过器件地址输入端 A0、A1和 A2可以实现将 最多 8个 AT24C02器件 连接到 IIC总线上

     补:EEPROM 是一种 掉电后数据不丢失的储存器,常用来存储一些配置信息,在系统重新上电时就可以加载。 ​​​​


详细描述可以参考:        

    常用存储器http://t.csdnimg.cn/TyKsuicon-default.png?t=N7T8http://t.csdnimg.cn/TyKsu

2. 引脚功能

补:

    ① A2、A1、A0:器件地址输入引脚。AT24C02 在一个总线上最多可寻址 8个器件,A2、A1 和 A0 必须连接。

    ② SDA:可实现 双向串行数据传输。该引脚为 开漏输出,可与其他 多个开漏输出器件 或开集电极器件线 或连接。

    ③ SCL:在 SCL输入时钟信号的 上升沿将数据送入 EEPROM器件,并在时钟的 下降沿将数据读出。

    ④ VCC、GND:2~6V 电源输入。

二、AT24C02组成

1. 存储结构

        AT24C02的存储容量为 256 Byte,由 32页 组成且每页8 Byte

2. AT24C02通讯地址

        主器件通过 发送一个 起始信号 启动发送过程,然后 发送它所要 寻址的 从器件的地址。高 4位 固定为 1010,接下来的 3位 A2、A1、A0为器件 的地址位(由器件 1~3引脚外接电平决定),用来 寻址哪个器件 被主器件访问,8位 地址的 最低位作为读写控制位( 1表示对 从器件进行读操作,0 表示对从器件 进行写操作 )。

        在主器件 发送起始信号 和从器件地址字节后,AT24C02监视 总线并当 其地址与发送的从地址相符时 响应一个 应答信号(通过SDA线),再根据 读写控制位 R / W 的状态进行 读或写操作

(1)不可编程部分:1010。

(2)可编程部分:由硬件管脚 A0 / 1 / 2决定。

(3)数据传输方向:读数据‘1’还是写数据‘0’。写操作地址:0xA0    读操作地址:0xA1

3. AT24C02寻址方式

        AT24C02有两种寻址方式:芯片寻址、片内子地址寻址

(1)芯片寻址

        AT24C02芯片地址固定为1010,它是 IIC总线器件的 特征编码,其地址控制字的格式为 1010 A2 A1 A0 R/WA2 A1 A0 引脚接高、低电平后得到 确定的 3位编码,与1010 形成的 7位编码,即为 该器件的地址码。由于 A2 A1 A0共有 8种组合,故系统最多可外接 8片 AT24C02R / W是 对芯片的 读 / 写控制位

(2)片内子地址寻址

        确定AT24C02芯片的 7位地址码 后,片内的存储空间 可用 1字节的 地址码寻址,寻址范围为00H~FFH,可对片内的 256个单元进行 读 / 写操作。

三、AT24C02读写时序

1. 写操作

        AT24C02有两种写入方式:字节写入方式 和 页写入方式。字节写模式 就是一个地址一个数据进行写入。页写模式 就是连续写入数据。

        只需要写一个地址,连续写入数据时 地址会自增,但存在 页的限制超出一页时,超出数据覆盖原 先写入的数据。但 读会自动翻页

(1)字节写入方式

        单片机(主器件)先发送启动信号和 1 字节的控制字,从器件 发出应答信号后,单片机再发送 1 字节 的存储单元子地址(AT24C02芯片内部 单元的地址码),单片机收到 AT24C02应答后,再发送 8位数据 和 1 位终止信号

流程:

    ① 主器件 发送起始命令 和 从器件地址信息(R / W 位置0),等待 从器件应答。

    ② 主器件 发送 一个地址字节( 数据要写入的 AT24C02 地址单元 ),等待 从器件应答。        

    ③ 主器件 发送待 写数据字节,等待 从器件应答。

    ④ 主器件 发送停止信号后,AT24C02 开始 内部数据的 擦写,在内部擦写过程中,AT24C02 不再应答 主器件的 任何请求。

(2)页写入方式

        单片机先发送启动信号和 1 字节 的控制字,再发送1字节的 存储器起始单元地址,上述几字节都得到 AT24C02的 应答后,就可以发送最多 1页的数据,即一次写入最多 16个字节的数据至 AT24C02。

        数据页写操作的 启动和字节 写一样,不同在于 传送了1 字节数据 后并不产生 停止信号。主器件可以发送 15个额外的字节,每发送一个字节数据后,AT24C02 产生一个 应答位并将字节 地址低 4 位 加 1( 1111 加 1 变成 0000),高 4 位 保持不变。同时数据 顺序存放在由 已指定的起始地址开始的 相继单元中

        如果在 发送停止信号 之前 主器件 发送超过 16个 字节数据,先前 写入的 数据将被 顺序覆盖,AT24C02 只保留 最后传输的 16个字节 数据。

        主器件发送停止信号后,AT24C02 启动内部写周期,将数据写到数据区。所有接收的数据在一个写周期内 写入,写一个字节与同时写 16个 字节的 时间相同,整个写周期大约需要 10ms。

2. 读操作

        AT24C02的读操作也有三种方式:立即读方式、指定地址读方式和指定地址连续读方式

(1)立即读方式

        AT24C02的 地址计数器内容为 最后操作字节 的地址加 1。也就是说,如果上次 读 / 写 的操作地址为 N,则立 即读的地址 从地址 N+1 开始。如果 N=255,则地址计数器 将翻转到 0 且继续输出数据。

流程:

    ① 主器件 发送起始命令 和 从器件地址信息( R / W 位置 1 )。

    ② AT24C02 发送 应答信号,应答 后发送一个 8位 字节数据

    ③ 主器件 发送 停止信号,结束 读操作。

(2)指定地址读方式

        单片机 发送启动信号后,先 发送含有芯片 地址的 写操作控制字,AT24C02 应答后,单片机再发送 1 字节 的指定单元 的地址,AT24C02 应答后再发送 1个 含有芯片 地址的 读操作 控制字,此时如果 AT24C02 做出应答,被访问 单元的数据就 会按 SCL信号同步 出现在SDA线上,供单片机 读取。

流程:

    ① 主器件 发送起始命令 和 从器件地址信息( R / W 位置 0 ),等待 从器件应答。

    ② 主器件 发送一个 地址字节( 要读的数据 地址单元 ),等待 从器件应答。

    ③主器件 重发起始 信号,执行一次 立即 地址读操作。

(3)连续读方式

        连续读操作可通过 立即读 或 指定地址读操作启动,在 AT24C02 发送完一个 8 位 字节数据后,主器件 产生一个 应答信号来 响应,告知 AT24C02 主器件要求 更多的数据,只有 AT24C02检测到应答信号后,其 内部的 地址寄存器 就自动加 1 指向 下一个单元,并顺序 将指向 单元的数据送到 SDA 线上。对应 每个主机产生的 应答信号,AT24C02 将发送 一个数据字节,当 主器件不发送应答信号而 发送停止位 时结束此操作。

        从 AT24C02 输出的数据按顺序由 N 到 N+1 输出。读操作时,地址计数器在 AT24C02 整个地址内 增加,这样 整个寄存器区域 可在一个读操作内全部读出当前读取的 字节地址为255时,地址计数器 将翻转到 0 并继续 输出 数据字节。

补充:

        在 IIC总线 上每次传送的 数据字节数不限,但 每一个字节必须为 8 位,而且 每个传送的字节 后面必须 跟一个 应答信号每次 都是先传 最高位,通常 从器件在 接收到 每个字节后都会 做出响应,即释放 SCL线 返回高电平,准备 接收下一个 数据字节,主器件 可继续 传送。

        如果 从器件 正在处理一个 实时事件而 不能接收数据 时,可以 使时钟线 SCL 保持 低电平,从器件 必须使 SDA 保持高电平,此时 主器件产生 1 个 结束信号,使传 送异常结束,迫使主器件 处于 等待状态。当 从器件处理 完毕时将 释放 SCL 线,主器件 继续 完成传送。


                                                                相关代码近期补充。

可参考这篇文章:

    嵌入式—— IIC

http://t.csdnimg.cn/npQnHicon-default.png?t=N7T8http://t.csdnimg.cn/npQnH

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构实验之栈与队列八:栈的基本操作

数据结构实验之栈与队列八:栈的基本操作 Description 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 Input 首先输入整数t&am…

Linux|centos7下的编译|ffmpeg的二进制安装

Windows版本的ffmpeg: ###注意,高版本可能必须要windows10以及以上才支持,win7估计是用不了的 下载地址:Builds - CODEX FFMPEG gyan.dev 或者这个下载地址:https://github.com/BtbN/FFmpeg-Builds/releases 这两个…

ClickHouse--12-可视化工具操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 可视化工具操作1 tabixhttp://ui.tabix.io/ 2 DBeaverhttps://dbeaver.io/download/ 可视化工具操作 1 tabix tabix 支持通过浏览器直接连接 ClickHouse&#xff…

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱12(附带项目源码)

效果演示 文章目录 效果演示系列目录前言悬停显示物品详情源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、制作、快…

11.【CPP】模版(深入理解模版的实例化,从编译链接的原理理解模版为何无法分离编译)

非类型模版参数 1.模版参数分为类型模版参数和非类型模版参数,非类型模版参数一般都是整形常量(整形:size_t,int,char等) 2.浮点数、类对象以及字符串是不允许作为非类型模版参数的。非类型模版的参数必须在编译的时候就能确定结…

leetcode hot100 拆分整数

在本题目中,我们需要拆分一个整数n,让其拆分的整数积最大。因为每拆分一次都和之前上一次拆分有关系,比如拆分6可以拆成2x4,还可以拆成2x2x2,那么我们可以采用动态规划来做。 首先确定dp数组的含义,这里dp…

第13章 网络 Page744~746 asio核心类 ip::tcp::endPoint

2. ip::tcp::endpoint ip::tcp::socket用于连接TCP服务端的 async_connect()方法的第一个入参是const endpoint_type& peer_endpoint. 此处的类型 endpoint_type 是 ip::tcp::endpoint 在 在 ip::tcp::socket 类内部的一个别名。 libucurl 库采用字符串URL表达目标的地…

LeetCode 100题目(python版本)待续...

一.哈希 1.两数之和 题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复…

Linux系统上配置网络防火墙的工具iptables 和 ufw 区别详细介绍

iptables 和 ufw(Uncomplicated Firewall)都是用于在Linux系统上配置网络防火墙的工具,但它们在用户友好性和使用方式上有所不同。 iptables: iptables 是Linux内核中的一个功能强大的工具,用于设置、…

百倍量化之ACS和Demarker指标以及混合策略

1. ACS指标含义 1.1 ACS指标 ACS策略主要通过计算 ADX(平均方向性移动指数)相对于收盘价的比值及其标准差来分析市场趋势的强度和稳定性。它结合了市场趋势的强度和价格的变动率。如果 acs 的值较大,说明相对于当前价格,市场的趋势强度大;如果这个值较小,则表明相对于当…

Acwing---846. 树的重心

树的重心 1.题目2.基本思想3.代码实现 1.题目 给定一颗树,树中包含 n n n 个结点(编号 1 ∼ n 1∼n 1∼n)和 n − 1 n−1 n−1 条无向边。 请你找到树的重心,并输出将重心删除后,剩余各个连通块中点数的最大值。 …

【C Primer Plus第六版 学习笔记】 第十七章 高级数据表示

有基础&#xff0c;进阶用&#xff0c;个人查漏补缺 链表&#xff1a;假设要编写一个程序&#xff0c;让用户输入一年内看过的所有电影&#xff0c;要储存每部影片的片名和评级。 #include <stdio.h> #include <stdlib.h> /* 提供malloc()的原型 */ #include <s…

QEMU源码全解析 —— 内存虚拟化(4)

接前一篇文章&#xff1a; 本文内容参考&#xff1a; 《趣谈Linux操作系统》 —— 刘超&#xff0c;极客时间 《QEMU/KVM》源码解析与应用 —— 李强&#xff0c;机械工业出版社 QEMU内存管理模型 浅谈QEMU Memory Region 与 Address Space 特此致谢&#xff01; QEMU内存…

el-date-picker 选择年后输出的是Wed Jan 01 2025 00:00:00 GMT+0800 (中国标准时间)

文章目录 问题分析 问题 在使用 el-date-picker 做只选择年份的控制器时&#xff0c;出现如下问题&#xff1a;el-date-picker选择年后输出的是Wed Jan 01 2025 00:00:00 GMT0800 (中国标准时间)&#xff0c;输出了两次如下 分析 在 el-date-picker 中&#xff0c;我们使用…

代码随想录第三十四天

第八章 贪心算法 part04 ​ ● 860.柠檬水找零 ​ ● 406.根据身高重建队列 ​ ● 452. 用最少数量的箭引爆气球 详细布置 860.柠檬水找零 本题看上好像挺难&#xff0c;其实挺简单的&#xff0c;大家先尝试自己做一做。 https://programmercarl.com/0860.%E6%9F%A0%E6%…

数学建模【非线性规划】

一、非线性规划简介 通过分析问题判断是用线性规划还是非线性规划 线性规划&#xff1a;模型中所有的变量都是一次方非线性规划&#xff1a;模型中至少一个变量是非线性 非线性规划在形式上与线性规划非常类似&#xff0c;但在数学上求解却困难很多 线性规划有通用的求解准…

计算机网络之网络安全

文章目录 1. 网络安全概述1.1 安全威胁1.1.1 被动攻击1.1.2 主动攻击 1.2 安全服务 2. 密码学与保密性2.1 密码学相关基本概念2.2 对称密钥密码体制2.2.1 DES的加密方法2.2.2.三重DES 2.3 公钥密码体制 3. 报文完整性与鉴别3.1 报文摘要和报文鉴别码3.1.1 报文摘要和报文鉴别码…

Jenkins面试系列

1. Jenkins 是什么? Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。 2. 为什么使用 Jenkins? Jenkins是一种使用Java编程语…

Vim相关配置

记录一下有关vim的一些设置&#xff0c;以免电脑寄了不好重新配置 vscodevim 首先是vscode中的vim模式 在应用商店中搜索vim插件安装即可 然后在setting中添加以下有关vim 的配置 "vim.easymotion": true,"vim.surround": true,"vim.incsearch"…

从零开始手写mmo游戏从框架到爆炸(十二)— 角色设定

导航&#xff1a;从零开始手写mmo游戏从框架到爆炸&#xff08;零&#xff09;—— 导航-CSDN博客 写了这么多的框架&#xff0c;说好的mmo游戏呢&#xff1f;所以我们暂时按下框架不表&#xff0c;这几篇我们设计英雄角色、怪物、技能和地图。本篇我们来对游戏角色…