51单片机入门:AT24C02

news2024/11/17 21:33:44

AT24C02简介

AT24C02是一个2K bit的EEPROM存储器,使用I2C通信方式(其中02对应2K bit,类似的,AT24C04/08对应4K bit/8K bit的存储器)。

其原理图如下:

对应的引脚及其功能:

引脚名称功能
A0/A1/A2器件地址选择
SDA串行数据线
SCL串行时钟线
WP写保护
VCC1.8~6V工作电压
GND

内部存储结构

AT24C02由32页组成,每一个页有8Byte(共256Byte,即2K Bit)。可以看出,有两种访问方式:一种按页访问,先锁定页,再对页进行操作;另一种直接通过字节访问(一个字节就一个地址,共256个地址)。

不同型号AT24Cxx之间的对比:


AT24C02通讯地址

通讯地址由不可编程部分、可编程部分、数据传输方向组成。其中,不可编程部分:1010,是固定死的;可编程部分:由硬件管脚A0/A1/A2决定;数据传输方向:读数据“1”或写数据“0”。

具体如下表格所示:

不可编程部分可编程部分R/W
10100001/0

其中前7位(不可编程与可编程部分)称为设备地址,其包含两个通信地址,一个是写操作地址:0xA0;一个是读操作地址:0xA1。


AT24C02读写时序

写操作

AT24C02支持字节写模式和页写模式。注意,EEPROM比较慢,通常要等待5ms后再写入下一个字节。对于读写操作,重点介绍字节写和随机读,其时序如下:

字节写模式:一个地址一个数据进行写入;

页写模式:就是连续写入数据。只需要一个地址,连续写入数据时地址会自增,但存在页的限制,超出一页时,超出的数据会覆盖原来先写入的数据。(但读操作会自动翻页)

字节写模式代码:

/**
  *功能:AT24C02写入一个字节
	*参数:要写入字节的地址,要写入的数据
	*返回值:无
	*/
void AT24C02_WriteByte(unsigned char WordAddress,Data){
	I2C_Start();
	I2C_SendByte(AT24C02_ADDRESS);
	I2C_ReceiveAck();
	I2C_SendByte(WordAddress);
	I2C_ReceiveAck();
	I2C_SendByte(Data);
	I2C_ReceiveAck();
	I2C_Stop();
}

读操作

AT24C02支持当前地址读模式、随机地址读模式、顺序读模式。

当前读模式:基于上一次读/写操作的最后位置继续读出数据。

随机地址读模式:指定地址,读出数据。

顺序读模式:连续地读出数据。

随机地址读模式代码:

/**
  *功能:从AT24C02读取一个字节
	*参数:要读出字节的地址
	*返回值:读取的数据
	*/

unsigned char AT24C02_ReadByte(unsigned char WordAddress){
	unsigned char Data;
	I2C_Start();
	I2C_SendByte(AT24C02_ADDRESS); //向AT24C02发起通信
	I2C_ReceiveAck();
	I2C_SendByte(WordAddress);     //将要读取的地址写入
	I2C_ReceiveAck();
	
	I2C_Start();
	I2C_SendByte(AT24C02_ADDRESS|0x01);//读操作
	I2C_ReceiveAck();
	Data=I2C_ReceiveByte();  //用变量将数据保存
	I2C_SendAck(1);          //非应答
	I2C_Stop();
	
	return Data;
}

IIC发送非应答“1”后,结束通讯。若IIC发送应答“0”,从机会继续向主机发送数据,可实现顺序读模式。

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

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

相关文章

ThingsBoard物联网网关在暖通自控中的应用

ThingsBoard是用于数据收集、处理、可视化和设备管理的开源物联网平台。 场景 智能办公场景中的物联网需求包括能源管理、安全监控、环境监测、空间优化和设备自动化,以提升效率、节约成本并增强员工的舒适度和安全性。 通过监测建筑内部的温度、湿度、光照等数据&a…

WordPress插件Disable WP REST API,可根据是否登录来禁用REST API

前面跟大家分享了代码版禁用WordPress REST API的方法(详见『WordPress4.7以上版本如何禁用JSON REST API?』),不过有些站长不太敢折腾自己的网站代码,那么建议试试这款Disable WP REST API,它可以&#xf…

linux命令arp的使用

arp arp 命令用于显示和修改 IP 到 MAC 转换表 补充说明 arp 命令 是 Address Resolution Protocol,地址解析协议,是通过解析网络层地址来找寻数据链路层地址的一个网络协议包中极其重要的网络传输协议。而该命令可以显示和修改 arp 协议解析表中的缓…

为什么要用虚拟时钟Virtual clock?

通常RTL设计要求对芯片/module的输入信号进行reg_in打拍处理,对芯片/module的输出也要求做reg_out打拍处理,这是良好的代码习惯,为时序收敛留下足够裕量,也避免顶层例化综合后的子模块时出现模块间IO时序不满足的情况。综合阶段可…

编写一个llvm编译器插件,完成在store汇编指令前对内存合法性的check。

dds(iceoryx、fastdds等)中间件采用了共享内存,如果app内存越界将共享内存踩踏坏了,将会形成灾难。本插件可以检测到app是否在写共享内存,如果是,我们可以让app assert。从而提高dds的稳定性 插件效果: 插件源码&…

2024 年 5 种领先的小语言模型:Phi 3、Llama 3 等

2024 年 5 种领先的小语言模型:Phi 3、Llama 3 等 近年来,GPT-3 和 BERT 等大型语言模型的发展改变了人工智能的格局,它们以其强大的功能和广泛的应用而闻名。 然而,除了这些巨头之外,一种新的 AI 工具类别也正在掀起…

Windows环境下训练OpenCV分类器

文章目录 1、Windows下安装OpenCV及依赖库2、获取opencv_createsamples.exe和opencv_traincascade.exe3、准备样本文件正负样本描述文件生成5、训练分类器5.1、使用opencv_createsamples.exe生成positives.vec文件5.2、使用opencv_traincascade.exe训练分类器 1、Windows下安装…

浅谈AI大模型的数据特点和应用问题

【摘要】AI大模型的训练、推理及应用落地都需要大量的数据,其数据具有参数和数据量大、质量要求高、行业垂直属性强、资源消耗大等特点,由此带来的个人隐私泄露、数据中毒、数据篡改等数据安全风险已成为业界必须应对的重要议题。目前大模型的规模化应用…

怎么用二维码看excel表格?生成文件二维码的制作技巧

Excel表格怎么放到二维码中,让其他人通过扫码查看数据呢?现在文件放入二维码中展示在很多的场景中都有应用,比如通知、数据、作品、报告等类型的内容都可以通过扫码的方式在手机上展现,那么如何将文件生成二维码呢? 文…

VUE-watch和watchEffect的区别

区别简短扼要地说: watch-官方定义:侦听一个或多个响应式数据源,并在数据源变化时调用所给的回调函数。是需要指定监听的数据,并且只有在响应式数据变化的时候去执行 watchEffect-官方定义:立即运行一个函数&#xff0…

VUE3和VUE2

VUE3和VUE2 上一篇文章中,我们对VUE3进行了一个初步的认识了解,本篇文章我们来进一步学习一下,顺便看一下VUE2的写法VUE3是否能做到兼容😀。 一、新建组件 我们在components中新建一个组件,名称为Peron,…

ARM-2

c语言实现三盏灯的控制 #ifndef __LED_H__ #define __LED_H__typedef struct {volatile unsigned int MODER;volatile unsigned int OTYPER;volatile unsigned int OSPEEDER;volatile unsigned int PUPDR;volatile unsigned int IDR;volatile unsigned int ODR;volatile unsig…

@ApiModelProperty失效问题,和Freemaker自定义MybatisPlus模板

MybatisPlus生成模板,修改,set get方法的影响, 手动去掉getset方法加上Lombok注解 Size读取text类型为-1的长度bug, 去掉id不能为空NotNull的校验 (增加lombok注解,TableField注解自动填充,…

基于EBAZ4205矿板的图像处理:09基于sobel边缘检测的图像锐化

基于EBAZ4205矿板的图像处理:09基于sobel边缘检测的图像锐化 项目全部文件 随后会上传项目全部文件 先看效果 锐化的有点过头了,不过我也懒得改了,想要改也很简单,无非就是给卷积运算后的结果加个系数,通过改系数调…

学习Uni-app开发小程序Day17

今天开始,就把uni-app前期使用的全部学完了,现在就把以前学习的,做成一案例,中间有未讲的,在进行补充,这里是根据老师视频进行项目案例编写的。 先弄出效果图,然后在根据效果图进行代码的编辑 …

Android:使用Kotlin搭建MVP架构模式

一、简介Android MVP架构模式 MVP全称:Model、View、Presenter; View:负责视图部分展示Model:负责数据的请求、解析、过滤等数据层操作。Presenter:View和Model交互的桥梁。对应MVC中的C(controller&#x…

AJAX(JQuery版本)

目录 前言 一.load方法 1.1load()简介 1.2load()方法示例 1.3load()方法回调函数的参数 二.$.get()方法 2.1$.get()方法介绍 2.2详细说明 2.3一些例子 2.3.1请求test.php网页并传送两个参数 2.3.2显示test返回值 三.$.post()方法 3.1$.post()方法介绍 3.2详细说明 …

Debug-010-git stash的用法及使用场景

问题原因: 其实也不是最近,就是之前就碰到过这个问题,那就是我正在新分支开发新功能,开发程度还没有到可以commit的程度,我不想提交(因为有些功能没有完全实现,而且没有自测的话很容易有问题,提…

【C++初阶】—— 类和对象 (下)

📝个人主页🌹:EterNity_TiMe_ ⏩收录专栏⏪:C “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 类和对象 1. 运算符重载运算符重载赋值运算符重载前置和后置重载 2. 成员函数的补充3. 初始化列…

Python 调整PDF文件的页面大小

在处理PDF文件时,我们可能会遇到这样的情况:原始PDF文档不符合我们的阅读习惯,或者需要适配不同显示设备等。这时,我们就需要及时调整PDF文档中的页面尺寸,以满足不同应用场景的需求。 利用Python语言的高效性和灵活性…