蓝桥杯STM32G431RBT6学习——M24C02

news2024/11/17 16:03:47

蓝桥杯STM32G431RBT6学习——M24C02

前言

IIC是单片机的通用协议,在蓝桥杯单片机、嵌入式中都是考点。国信长天开发板板载M24C02(IIC驱动)作为调电存储模块,可以通过IIC对其写入数据后,掉电进行保存以供读取。其硬件接线如下:
在这里插入图片描述

M24C02解读

该芯片是一款EEPROM,也就是所谓的调电存储芯片,其使用方式十分简单,在数据手册中也写的非常清晰。
该芯片支持总线控制,通过一个驱动地址完成设备的选定及写入/读取控制,当我们只使用一片EEPROM的时候直接设备号给0即可,不同型号地址如下:
在这里插入图片描述

该芯片具有以下两种写入模式:
1、字节写入: 一次性向EEPROM写入一个字节的数据;
2、片写入: 一次性写入8/16字节的数据(拒绝于芯片内存,详见数据手册)。
该芯片具有以下三种读取模式:
1、当前地址读取: 从数据手册的意思是,直接从上次写入的地址+1的位置进行读取(: The internal data word address counter maintains the last
address accessed during the last read or write operation, incremented by one. );
2、随机读取: 直译过来确实是这个名字,但是没看出半点随机的意思,从指定地址读取一个字节数据;
3、连续读取: 顾名思义能够连续读取多个字节的数据,直到给他发停止信号为止。
在进行检测测试的时候我们可以使用字节写入/读取,当需要进行长数据操作时可以使用片写入、连续读取更方便。

STM32CubeMX配置

在这里插入图片描述
因为使用的是软件IIC,官方也提供了底层驱动,因此直接使能一下引脚就行了,当然其实不配置也行,因为底层驱动中给出了初始化函数。

Keil代码编写

1、字节写入:
在这里插入图片描述
数据手册提供了完整的字节写入说明,但是英语不好还是直接看图吧,流程相当简单,步骤如下:
IIC启动信号->发送写入的设备号(最后一位决定读写)->等待应答->发送写入的地址->等待应答->发送写入的数据->等待应答->IIC停止信号
具体代码如下:

//函数功能:  对M20C02进行字节写入数据  
//函数参数:  参数1:写入的地址,参数2:写入的数据
//函数返回值:写入结果ERROR(失败)/SUCCESS(成功)
unsigned char M24C02_Write(unsigned char addr, unsigned char data)
{
	I2CStart();					//IIC启动
	I2CSendByte(0xA0);			//发送写入的设备号
	if(I2CWaitAck() == ERROR)   //等待应答
		return ERROR;
	I2CSendByte(addr);			//发送写入的地址
	if(I2CWaitAck() == ERROR)	//等待应答
		return ERROR;
	I2CSendByte(data);			//发送写入的地址
	if(I2CWaitAck() == ERROR)	//等待应答
		return ERROR;
	I2CStop();					//停止信号
	return SUCCESS;
}

2、片写入:
在这里插入图片描述
片写入的流程与字节写入基本一致,区别在于每次写入数据以后都需要等待等待应答信号。
具体代码如下:

//函数功能:  对M20C02进行片写入数据  
//函数参数:  参数1:写入的地址,参数2:写入的数据,参数3:数据的长度
//函数返回值:写入结果ERROR(失败)/SUCCESS(成功)
unsigned char M24C02_PageWrite(unsigned char addr, unsigned char *data, unsigned int size)
{
	I2CStart();
	I2CSendByte(0xA0);
	if(I2CWaitAck() == ERROR)
		return ERROR;
	I2CSendByte(addr);
	if(I2CWaitAck() == ERROR)
		return ERROR;
	for(int i = 0;i < size;i++)		//区别与字节写入,可以一直写入8/16个数据
	{
		I2CSendByte(data[i]);
		if(I2CWaitAck() == ERROR)
			return ERROR;
	}
	I2CStop();
	
	return SUCCESS;
}

3、读取:
与写入方式类似,读取方式也是大同小异,此处记录随机读取的方式(因为这个假读取很无语),需要注意的是假读取以后要重新开始一个IIC信号用于读取的时序。
具体代码如下:

//函数功能:  对M20C02进行字节读取数据  
//函数参数:  读取的地址
//函数返回值:读取成功返回读取到的数据,反之返回ERROR
unsigned char M24C02_Read(unsigned char addr)
{
	unsigned char data = 'd';
	
	I2CStart();
	I2CSendByte(0xA0);
	if(I2CWaitAck() == ERROR)
		return ERROR;
	I2CSendByte(addr);
	if(I2CWaitAck() == ERROR)
		return ERROR;
	I2CStart();
	I2CSendByte(0xA1);
	if(I2CWaitAck() == ERROR)
		return ERROR;
	data = I2CReceiveByte();
	I2CStop();
	
	return data;
}

后记

芯片的数据手册确实是一个很重要的东西,学会看数据手册能够有效的完成任务,就是英语不好会些许难受。

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

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

相关文章

Linux(centos7)基本操作---进程管理

进程管理进程管理&#xff08;process&#xff09;相关的名词解释静态进程查看动态进程查看进程控制作业管理&#xff08;jobs&#xff09;文件虚拟系统&#xff08;proc&#xff09;进程管理&#xff08;process&#xff09; 相关的名词解释 PID&#xff1a;进程的身份证号,…

对象之间的拷贝与转换

这里写目录标题Lambda 的 builderidea 自动生成插件 GenerateAllSetterMapStructDozer在开发的时候经常会有业务代码之间有很多的 JavaBean 之间的相互转化&#xff0c;比如 PO/DTO/VO/QueryParam 之间的转换问题&#xff0c;本文总结一下各种转换方法Lambda 的 builder 使用构…

【Qt】11.Linux下,Qt程序打包

目录 获取Release模式下的可执行文件 打包的目录结构搭建 安装linuxdeployqt 环境准备 下载linuxdeployqt 编译安装 复制快捷方式 配置环境变量 使生效 查看版本 安装unixODBC库 解压 配置 编译安装 重启系统 打包 原因 解决方法 打成deb包 打deb包目录构建…

Python虚拟环境大总结(virtualenv pipenv)

文章目录1 virtualenv1.1 安装1.2 测试安装是否成功1.3 主要命令1.4 virtualenvwrapper1.4.1 创建虚拟环境1.4.2 列举所有虚拟环境1.4.3 激活虚拟环境1.4.4 取消激活虚拟环境1.4.5 删除虚拟环境1.4.6 创建指定版本的虚拟环境2 pipenv2.1 安装2.2 创建虚拟环境2.3 进入虚拟环境2…

游戏之外,元宇宙也在寻求与更多领域进行融合

在大众对元宇宙的构想中&#xff0c;“游戏”是优先级最高的落地场景之一。《头号玩家》、《赛博朋克2077》等作品中&#xff0c;“游戏”也多次成为元宇宙的主要载体&#xff0c;描画出人们对于这一前沿风口的想象。 2022年以来&#xff0c;监管侧陆续传来元宇宙产业发展的利…

python算法加密 pyarmor与docker

如觉得博主文章写的不错或对你有所帮助的话&#xff0c;还望大家多多支持呀&#xff01;关注、点赞、收藏、评论。 目录一、 基本语法 加密 Python 脚本二、运行加密脚本三、pyarmor&docker3.1 Dockerfile3.2 requirements.txt3.3 加密函数lock_by_pyarmor.py3.4 主函数myp…

元宵节营销活动策划,轻松拿下用户

热闹的春节刚过&#xff0c;又将迎来团圆美满的元宵节&#x1f3ee;。我们今天就来讲讲&#xff0c;关于节日营销的小巧思&#xff01; 【产品游戏】 在每一个关于节日的营销里&#xff0c;将游戏作为切入点与产品相结合&#xff0c;往往可以获得意想不到的效果。对于场景单一…

DynaSLAM-6 DynaSLAM论文解读

目录 1.论文摘要解读 1.1 原论文内容 1.2 个人理解 2.论文discusses related work部分 2.1 原论文内容 3.论文SYSTEM DESCRIPTION部分 3.1 使用Mask R-CNN对潜在的动态内容进行分割 3.2 低成本追踪 3.3 使用Mask R-CNN和多视角几何对动态内容进行分割 3.4 跟踪线程…

分享会上狂吹MySQL的4大索引结构红黑树、二叉树B+Tree,没想到~~~~

索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着满足 特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0c; 这样就可以在这些数据结构 上实现高…

品优购网页制作

目录 favicon图标 TDK三大标签SEO优化 title网站标题 description网站说明 keywords关键字 首页制作 快捷导航模块 左浮动 右浮动 header头部模块制作 1.logo模块 2.search模块 3.热词模块 4.购物车模块 子绝父绝 nav导航模块 1.nav左边导航位置 2.上方导航位置 …

PCB覆铜很“上头”?一文帮你搞定实操要点和规范

1、覆铜覆盖焊盘时&#xff0c;要完全覆盖&#xff0c;shape 和焊盘不能形成锐角的夹角。2、尽量用覆铜替代粗线。当使用粗线时&#xff0c;过孔通常为非通常走线过孔&#xff0c;增大过孔的孔径和焊盘。修改后&#xff1a;3、尽量用覆铜替换覆铜走线的模式&#xff0c;后者常常…

11.深度优先搜索

一、算法内容 1.简介 深度优先搜索DFS&#xff08;Depth First Search&#xff09;按照深度优先的方式进行搜索&#xff0c;可以理解为“一条路走到黑”地穷举所有可行的方案&#xff0c;并不断尝试&#xff0c;直到找到一种情况满足问题问题的要求。那么这个方案就是一个问题…

shell 循环学习练习

目录 一&#xff0c;嵌套循环实现9*9乘法表 二&#xff0c;判定一个成绩&#xff1a; 三&#xff0c;循环创建用户&#xff1a;用户名为user01-user20 一&#xff0c;嵌套循环实现9*9乘法表 (for和while都可以) 选做&#xff1a;格式对齐&#xff0c;以及使用单层循环完成9*9乘…

精细管理——CRM销售漏斗管理

CRM销售漏斗涵盖了从接触客户到谈判、成单、回款的整个销售过程。一个典型的销售漏斗是由一个特定时间段里&#xff0c;例如一年或者一个季度或者一个月这个时间范畴之内&#xff0c;一系列有可能转化成订单的潜在销售机会所组成。在CRM客户管理系统中&#xff0c;销售漏斗管理…

Unity-TCP-网络聊天功能(四): 消息粘包、心跳机制保活(心跳包)、断线重连

8. 粘包Bug、心跳机制保活(心跳包)、断线重连粘包bug1&#xff1a;下线后&#xff0c;如果发送多条消息&#xff0c;在客户端上线时&#xff0c;一瞬间接收到&#xff0c;效果如同粘包&#xff0c;需要拆包。举例&#xff0c;连续发送三条160长度消息&#xff0c;可能实际显示2…

java常用类: System类直接常用方法

java常用类型: Ineteger等包装类 String类&#xff0c;StringBuffer类和StringBuilder类 Math类及常用方法 System类及常用方法 Arrays类及常用方法 BigInteger类和BigDecimal类及常用方法 日期类Date类,Calender类和LocalDateTime类 文章目录System简介System.exit(0) 退出Sys…

蓝桥杯重点(C/C++)(随时更新,更新时间:2023.2.2)

点关注不迷路&#xff0c;欢迎推荐给更多人&#xff0c;大约两天更新一次&#xff0c;建议点赞收藏加关注 本次更新内容&#xff1a;1.STL部分详细讲述&#xff0c;放到一篇新的文章中 2. 部分细节优化 目录 1 技巧 1.1 取消同步&#xff08;节约时间&#xff0c;甚至能多…

Shield UI for JavaScript 1.7.44 Crack

Shield UI for JavaScript Shield UI JavaScript 框架提供具有响应式设计的 JavaScript HTML5 组件&#xff0c;这些组件经过优化以获得最佳性能。 Shield UI 在 70 多种小部件类型中提供了最快和高度可定制的网格和图表控件。每个单独的控件都由行业领先的 24/7 支持包提供支持…

以莫罗湾为例,利用高精度地形高程模型应对海岸环境变化

Morro Bay是位于加州 San Luis Obispo附近的浅海河口区&#xff0c;存在大量野生动物&#xff0c;也是人们户外活动的好去处。但是沉积变化和鳗草&#xff08;大叶藻&#xff09;的大量消失对河口景观产生了不利影响。为了更好地认识环境改变的路径并提取修复对策&#xff0c;M…

2023年山东最新建筑八大员(资料员)考试试题题库及答案

百分百题库提供建筑八大员&#xff08;资料员&#xff09;考试试题、建筑八大员&#xff08;资料员&#xff09;考试预测题、建筑八大员&#xff08;资料员&#xff09;考试真题、建筑八大员&#xff08;资料员&#xff09;证考试题库等,提供在线做题刷题&#xff0c;在线模拟考…