E2PROM 蓝桥杯 stm32 AT24C02读写函数

news2024/9/21 15:28:56

本文 代码使用 HAL 库 。

文章目录

  • 前言
  • 一、AT24C02 读写函数:
      • 1. 读函数
      • 2. 写函数:
  • 二. AT24C02 读写地址,原理图
  • 三. 延时问题
  • 总结
        • 下一节讲解 MCP4017。
        • 使用 E2PROM 来计算板子的上电次数 实验效果。


前言

本文 先列出 AT24C02 读写函数 ,再对其进行详细讲解 。
比赛会给出我们 iic 的底层驱动代码,我们需要自己写出 AT24C02 读写函数。

一、AT24C02 读写函数:

这里 写入读取 的数据是 单 字节的,不要超过相应的范围 。

1. 读函数

void EEPROM_Write(u8 add, u8 dat)
{
	I2CStart(); //起始信号
	I2CSendByte(0xa0); //控制字,写
	I2CWaitAck(); //等待响应
	
	I2CSendByte(add); //发送地址
	I2CWaitAck();
	I2CSendByte(dat); //发送要写入的数据
	I2CWaitAck();
	I2CStop(); //停止
	delay1(5); //延时 5 ms
}

2. 写函数:

u8 EEPROM_Read(u8 add)
{
	u8 dat;
	
	I2CStart();  //起始信号
	I2CSendByte(0xa0); //控制字,写
	I2CWaitAck(); //等待响应
	I2CSendByte(add); //发送地址
	I2CWaitAck(); 
	
	I2CStart();  
	I2CSendByte(0xa1); //控制字,读
	I2CWaitAck();
	dat = I2CReceiveByte(); 
	I2CSendNotAck(); //发送非确认信号
	I2CStop(); //停止
	
	return(dat);
}	
  • 例如:
    向地址 0x20 处,写入 数据 0x55, 再将其数据读出。( AT24C02 内部有256个地址,是从 0x00 到 0xFF )
u8 data =0;

EEPROM_Write(0x20, 0x55);
data = EEPROM_Read(0x20);

二. AT24C02 读写地址,原理图

1.下面是 AT24C02 的参考电路:
A0 , A1 , A2 (官方图片写错了,应该是 A2,不是 A3) 是 器件地址选择引脚,都接地。
在这里插入图片描述

2.参考 AT24C02 的数据手册 可以我们可以得到 E2PROM 设备地址
在这里插入图片描述
由于 AT24C02 是一个 2K 位串行CMOS E2PROM ,所以我们使用第一个设备地址。

一共有 8 位,最后一位是 R / W (读写位)。

从上面的图中可以看到 A0 , A1 , A2 都接地,就写为 0。
当读数据时,最后一位是 1;写数据时,最后一位是 0

所以,读数据时,器件地址:1010 001, 即 0xa1 代表读 AT24C02 的数据。
写数据时,器件地址:1010 000, 即 0xa0 代表向 AT24C02 写数据。

三. 延时问题

需要注意的是,连续多个字节写入EEPROM要进行 5ms 的延时,这是因为EEPROM处理数据的速度远小于单片机的速度,为了防止数据丢失,所以需要延时。

delay1(5); //延时 5 ms

总结

下一节讲解 MCP4017。

使用 E2PROM 来计算板子的上电次数 实验效果。

大家可以使用 E2PROM 来计算板子的上电次数(按下 RESET 复位键即可增加上电次数),实验效果放在B占,在以下网址:
https://www.bilibili.com/video/BV19R4y187eS/?vd_source=986c364d205fa1124b337bc665f57c4f

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

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

相关文章

【蓝桥杯】简单数论3——素数

1、素数判断 素数定义:只能被1和自己整除的正整数。注:1不是素数,最小素数是2。 判断一个数n是不是素数:当n≤时,用试除法;n>时,试除法不够用,需要用高级算法,例如Miller_Rabin算法。 试除法:用[2, n…

MySQL —— 库操作

目录 一、库操作 1. 创建数据库 2. 创建数据库案例 二、字符集和校验规则 1. 查看系统默认字符集以及校验规则 2. 查看数据库支持的字符集 3. 查看数据库支持的字符集校验规则 4. 校验规则对数据库的影响 三、操纵数据库 1. 查看数据库 2. 显示创建语句 3. 修改数…

Pandas 数据可视化

数据可视化Joyful Pandas基本绘图动手学数据分析2 第二章:数据可视化2.7 如何让人一眼看懂你的数据?2.7.1 任务一2.7.2 任务二2.7.3 任务三2.7.4 任务四2.7.5 任务五2.7.6 任务六2.7.7 任务七Joyful Pandas Datawhale社区 Joyful Pandas 基本绘图 一维…

《深入浅出计算机组成原理》学习笔记 Day9

乘法器1. 顺序乘法2. 并行加速方法3. 电路并行参考1. 顺序乘法 以 13913 \times 9139为例,131011012,9101001213_{10} 1101_2, 9_{10} 1001_21310​11012​,910​10012​。用列竖式的方式计算: 在二进制下,由于只有 0 和 1,计…

逆序对问题、树状数组与离散化

目录 一、前言 二、逆序对问题 1、暴力法 2、归并排序法 3、树状数组与逆序对(最巧妙最好的方法) (1)倒序 (2)正序 (3)离散化 三、例题 1、小朋友排队(lanqiao…

springBoot——SpringBoot 整合 Mybatis 流程

SpringBoot 整合持久层SpringBoot 整合 Mybatis 流程一、添加依赖1. pom.xml二、写配置文件1. application.yml三、写 Java 文件1. entity2. dao3. service4. controller5. mapper四、建立数据库五、测试SpringBoot 整合 Mybatis-Plus 流程一、添加依赖1. pom.xml二、写配置文件…

linux基本功系列之chattr命令

文章目录一. chattr命令介绍二. 语法格式及常用选项三. 参考案例3.1 给指定文件添加隐藏属性,阻止文件被修改:3.2 撤销i属性3.3 允许补充(追加)内容,无法覆盖/删除内容总结前言🚀🚀&#x1f680…

LabVIEW监控操纵杆,键盘或鼠标

LabVIEW监控操纵杆,键盘或鼠标在LabVIEW中从操纵杆/鼠标/键盘获取数据在LabVIEW中监控我的输入设备如何知道键盘上按了哪些键?用轮询的方式监控鼠标,键盘或操纵杆的动作。要在LabVIEW中监控这些设备,可以使用内置的输入设备采集VI…

【STM32】寄存器原理

如果我们想要深入去学习STM32单片机的存储原理和方式,就要花时间去了解STM32单片机有关寄存器的基本原理 单片机型号:正点原子STM32F103ZET6 目录 寄存器的定义 寄存器分类 存储器映射 寄存器映射 通过地址访问控制单元运作 通过定义宏来取代直接访…

C++ 哈希表查询_进入哈希函数结界的世界

1. 前言 哈希表或称为散列表,是一种常见的、使用频率非常高的数据存储方案。 哈希表属于抽象数据结构,需要开发者按哈希表数据结构的存储要求进行 API 定制,对于大部分高级语言而言,都会提供已经实现好的、可直接使用的 API&…

基于PythonOpenCv的视频图像处理

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

【教程】虚拟环境与Pytorch安装保姆级教学

【教程】虚拟环境与Pytorch安装保姆级教学NVIDIA驱动安装虚拟环境创建激活/退出相关库的安装Pycharm内设置虚拟环境Pytorch安装安装地址可能遇到的问题处理报错安装卡顿测试是否安装完成参考NVIDIA驱动安装 NVIDIA驱动可在官网进行安装:NVIDIA驱动官网 命令行输入…

一文上手决策树:从理论到实战

一、基础概念 决策树是一类极为常用的机器学习方法,尤其是在分类场景。决策树通过树形结构来递归地将样本分割到不同的叶子结点中去,并根据每个叶子结点中的样本构成对该结点中的样本进行分类。 我们可以从两个视角来理解决策树模型。 第一种视角是将…

Python副业技术总结,手把手教你用宝塔面板部署Django程序

前言 最近写了几个Django项目,写完以后怎么让对方测试成了问题,因为之前都是自己在本地写的练习项目,对于部署这一块很陌生,不知道怎么操作,内心很忐忑。没办法,只能硬着头皮上,一边百度&#…

17种编程语言实现排序算法-插入排序

开源地址 https://gitee.com/lblbc/simple-works/tree/master/sort/ 覆盖语言:C、C、C#、Java、Kotlin、Dart、Go、JavaScript(JS)、TypeScript(TS)、ArkTS、swift、PHP。 覆盖平台:安卓(Java、Kotlin)、iOS(SwiftUI)、Flutter(Dart)、Window桌面(C#)、…

ARP渗透与攻防(四)之WireShark截获用户数据

ARP-WireShark截获用户数据 系列文章 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 ARP渗透与攻防(三)之流量分析 1.WireShark工具介绍 wireshark的官方下载网站: WireShark wireshark是非常流行的网络封包分析软件,功能十分强大。可以…

PowerShell 学习笔记:压缩、解压缩文件

在自动构建的时候&#xff0c;最常用的就是压缩备份项目的源文件&#xff0c;PowerShell提供了相关命令。Compress-Archive&#xff08;压缩文件&#xff09;Compress-Archive[-Path] <String[]>[-DestinationPath] <String>[-CompressionLevel <String>][-P…

Crossplane - 比 Terraform 更先进的云基础架构管理平台?

&#x1f449;️URL: https://crossplane.io/ &#x1f4dd;Description: 将云基础架构和服务组成自定义平台 API 简介 在 11 月的 KCD 上海现场&#xff0c;听了一场阿里云的工程师关于他们自己的多云基础架构管理工具的介绍&#xff0c;前边的引言部分有介绍到 Terraform&am…

连续系统的数字PID控制仿真-3

在连续系统的数字PID控制仿真-2的基础上&#xff0c;利用S函数实现PID离散控制器的Simulink仿真。在S函数中&#xff0c;采用初始化函数、更新函数和输出函数&#xff0c;即 mdlInitializeSizes函数、mdIUpdates函数和mdlOutputs函数。在初始化中采用sizes 结构&#xff0c;选择…

什么是GRACE CPU --- Grace CPU架构详解

深入详解GRACE CPU架构 NVIDIA Grace CPU 是 NVIDIA 开发的第一款数据中心 CPU。 通过将 NVIDIA 专业知识与 Arm 处理器、片上结构、片上系统 (SoC) 设计和弹性高带宽低功耗内存技术相结合&#xff0c;NVIDIA Grace CPU 从头开始构建&#xff0c;以创建世界上第一个超级芯片 用…