蓝桥杯嵌入式AT24C02

news2024/9/20 22:38:39

文章目录

  • 前言
  • 一、AT24C02原理图
  • 二、IIC通信协议
  • 三、代码编写
    • 1.拷贝官方驱动程序
    • 2.编写AT24C02读写函数
      • 1.查看AT24C02芯片手册确定AT24C02器件地址
      • 2.读函数编写
      • 3.写函数编写
      • 4.代码使用
  • 总结


前言

本文将带大家了解IIC协议,并带大家编写AT24C02的驱动代码。

一、AT24C02原理图

通过原理图可以看到AT24C02有SCL和SDA两根线,这两根线分别是时钟线和数据线。
SCL和SDA对应的引脚分别是PB6和PB7,这两个器件都是挂接在同一个IIC总线下的。
在这里插入图片描述

二、IIC通信协议

这里我就不多说了,大家可以去看我之前写的文章。
IIC通信协议

三、代码编写

1.拷贝官方驱动程序

这里我们可以看到i2c_hal.c和i2c_hal.h两个文件,将这两个文件都添加进我们自己的工程当中。
在这里插入图片描述
把.c文件放入Src中.h文件放入Inc中。
在这里插入图片描述
将.c文件添加进来即可
在这里插入图片描述

2.编写AT24C02读写函数

1.查看AT24C02芯片手册确定AT24C02器件地址

AT24C02是一个2K的芯片,所以我们只需要看画红线的部分确定器件地址。
在这里插入图片描述
高4位的地址已经确定了,我们只需要判读低4位地址即可得出AT24C02的地址。A0-A2分别对应了上面原理图的E1-E3这三个引脚都接地,所以只需得出最后一位就行了。最后一位是根据读写来区分的,当最后一位为R时就代表的是1,最后一位为W时就代表的是0。
所以最后一位为R时,器件地址为0x91,所以最后一位为W时,器件地址为0x90。

2.读函数编写

这里看到读时序图
1.主机先发送start信号开始
2.发送器件地址
3.等待回应
4.发送想要写入AT24C02内部的哪个地址(AT24C02的地址是0-255)
5.等待回应
6.写入数据
7.等待回应
8.发送停止信号
在这里插入图片描述
这里最后加一个延时函数是因为发送一个字节的数据后需要等待一段时间后才可继续发送。


void EEPROM_Write(uint8_t add, uint8_t data)
{
	I2CStart();
	I2CSendByte(0xa0);
	I2CWaitAck();
	I2CSendByte(add);
	I2CWaitAck();
	I2CSendByte(data);
	I2CWaitAck();
	I2CStop();
	HAL_Delay(5);
}

3.写函数编写

在这里插入图片描述
这里需要先发送AT24C02的地址,因为只有找到了AT24C02才能够读取数据。
这个就留给大家自己分析了。

uint8_t EEPROM_Read(uint8_t add)
{
	uint8_t data = 0;
	
	I2CStart();
	I2CSendByte(0xa0);
	I2CWaitAck();
	I2CSendByte(add);
	I2CWaitAck();
	
	I2CStart();
	I2CSendByte(0xa1);
	I2CWaitAck();
	data = I2CReceiveByte();
	I2CSendNotAck();	
	I2CStop();	
	
	return data;
}

4.代码使用

这里要先初始化IIC后才能使用AT24C02。
读写函数操作很简单,大家自己去实验一下即可。

I2CInit();

u8 data = 0;
EEPROM_Write(0x01, 0x40);
data = EEPROM_Read(0x01);

总结

有不懂的请留言。

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

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

相关文章

MySQL-MHA高可用配置及故障切换

文章目录一、MHA概述二、MHA的组成1、MHA Node(数据节点)2、MHA Manager(管理节点)3、MHA 的特点四、搭建步骤实验思路实验操作故障模拟故障切换备选主库的算法一、MHA概述 MHA(MasterHigh Availability)是…

Java搭建宝塔部署实战毕设项目SpringBoot大学生就业信息管理源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的毕设项目SpringBoot大学生就业信息管理源码,适合拿来做毕业设计的同学。可以下载来研究学习一下,本期把这套系统分享给大家。 技术架构 技术框架&#xff1a…

(ICIP-2019)通过神经结构搜索进行视频动作识别

通过神经结构搜索进行视频动作识别 paper题目:VIDEO ACTION RECOGNITION VIA NEURAL ARCHITECTURE SEARCHING paper是奥卢大学发表在ICIP 2019的工作 paper地址:链接 ABSTRACT 深度神经网络在视频分析和理解方面取得了巨大成功。然而,设计高…

【Spring系列】- Spring循环依赖

Spring循环依赖 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 一个有梦有戏的人 怒放吧德德 🌝分享学习心得,欢迎指正,大…

JMeter入门教程(11) --关联

文章目录1.任务背景2.任务目标3.任务实操1.任务背景 当JMeter执行脚本时,伪装成浏览器,然后根据脚本,把当初真的浏览器所发过的内容,再对网站服务器重新发送一遍,JMeter企图骗过服务器,让服务器以为它就是…

010. 递增子序列

1.题目链接: 491. 递增子序列 2.解题思路: 2.1.题目要求: 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 (数组可能有重复的元素,相等的元素排…

IDOC的状态

这篇文章介绍IDOC Status的概念和它们的用途,明确IDOC status的类别,看一下完整的状态列表,包括INBOUND和OUTBOUND,还有入站和出站iDoc处理时iDoc状态的顺序。 另外还有监控SAP IDOC status的工具,比如AIF,…

推特营销引流入门指南

一、关注 当您关注另一个Twitter用户时,您进行订阅,即可立即阅读其内容分享。因此,请评估您关注的人,尤其是刚开始时。跟踪新用户的一种简单方法是找到他们的个人资料,然后单击“关注”按钮。 Twitter对于那些疯狂点…

机器学习笔记之受限玻尔兹曼机(三)推断任务

机器学习笔记之受限玻尔兹曼机——推断任务引言回顾:受限玻尔兹曼机的模型表示推断任务求解——后验概率(posterior)基于隐变量的后验概率求解基于观测变量的后验概率求解受限玻尔兹曼机与神经网络的联系引言 上一节介绍了受限玻尔兹曼机的模型表示(Representation…

C++图书管理系统(管理员-读者)

C图书管理系统(管理员-读者) 一、设计一款文字式交互的图书管理系统,要求具备注册登录、浏览图书、借还图书等基本功能; 二、要求以外部文件的形式存储书籍信息、馆藏记录、借阅记录、用户信息等。【可参考提供的书籍清单】 三…

如何批量查询搜狗收录?提升搜狗收录8个方法介绍

如何批量查询搜狗收录? 批量查询搜狗收录的具体流程如下: 1、打开站长工具 2、在域名输入框添加需要查询的域名 3、在功能选择区勾选需要查询的功能(这里勾选搜狗是否收录,搜狗收录总数) 4、提交查询,等待查询结果 …

Android样式和主题背景

简介: 本文将简单介绍Android样式与主题背景的相关内容 文章目录前言一、样式二、主题背景三、样式层次结构四、创建并应用样式五、自定义默认主题六、添加特定于版本的样式七、常见的主题风格总结前言 借助 Android 中的样式和主题背景,我们可以将应用…

十五管还原炉舟皿自动卸料单元

目  录 摘要 Ⅰ 1 绪论 1 1.1 十五管还原炉舟皿产生和发展 1 1.2十五管还原炉舟皿的今天与明天 2 2 总体方案设计 4 2.1自动卸料单元的作用 4 2.2十五管还原炉舟皿自动卸料单元结构的选择 4 2.3设计技术参数: 7 2.4 自动卸料单元…

Python实现基于物品的协同过滤推荐算法构建电影推荐系统

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 基于物品的协同过滤推荐(Item-based CF)的假设原理为:跟你喜欢的东西…

python的数据可视化

python画图1.使用pyecharts画图1.1 画地图1.1.1 画2D中国地图1.1.2 画2D世界地图1.1.3 画3D世界地图1.2 pyecharts的三种图片渲染工具1.2.1 snapshot_selenium1.2.2 snapshot_phantomjs1.2.3 snapshot_pyppeteer1.3 词云图1.3.1依据图片渲染出指定形状的词云图1.3.2渲染出指定大…

基于Android的学生信息管理App设计(Android studio开发)

目 录 一、 题目选择(题目、选题意义) 3 二、 设计目的 3 1、 初衷 3 2、 结合实际 3 3、 使用工具 3 三、 最终页面效果展示 4 1、 登陆界面 4 2、 主界面 5 3、 各个功能模块 6 四、 各部分设计 11 1、活动页面Activity布局文件 11 2、Activity的编程 …

基于JSP网上书城的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

Figma UI UX设计教程

Figma UI UX设计教程 使用 Figma 获得 UI 设计、用户界面、用户体验设计、UX 设计和网页设计方面的工作 课程英文名:Figma UI UX Design Essentials 此视频教程共10.0小时,中英双语字幕,画质清晰无水印,源码附件全 下载地址 课…

毕业设计-基于机器视觉的行人车辆跟踪出入双向检测计数

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

网格化微型空气质量站 浅谈工作原理

产品简介 网格化微型空气质量站是一种集数据采集、存储、传输和管理于一体的无人值守的环境监测系统,能全天候、连续、自动地监测环境,在提供PM10、PM2.5、 SO2、 NO2、CO、O3等参数数据的基础上,可扩展对VOCs、氯气、硫化氢、氨气等多种特征…