江科大51单片机笔记【11】AT24C02(I2C总线)
一、存储器
1.介绍

RAM的特点是存储速度特别快,但是掉电会丢失;ROM的特点是存储速度特别慢,但是掉电不会丢失
SRAM是所有存储器最快的,一般用于电脑的CPU高速缓存,容量相对较少,成本较高;DRAM原理是用电容存储,容值很小,需要配一个扫描电路,需要每隔一段时间补电,一般用于电脑的内存条,手机的运行内存,容量相对较大,成本较低
ROM的前四个都是一个系列的,MaskROM只能读取不能写;PROM可编程,但是只能写入一次;EPROM即可以编程也可以擦除,清除需要拿紫外线照射30分钟,E2PROM这种只需要用电就可以擦除(本单片机所用);Flash(闪存):电脑固态硬盘,手机存储,运用最广泛;硬盘(电脑机械硬盘,利用电磁存储)、软盘(淘汰)、光盘(光信号存储)
2.简化模型
横向的线成为地址总线;竖向的线称为数据总线
我们在横线赋值就是选择地址,在竖线赋值就是写入数据
右边这样接一个二极管的连接方式可以有效防止其他行干扰
PROM跟MaskROM其实一样,蓝色的二极管是一种特殊二极管,即很容易击穿,当我们在横线给高电压,蓝色二极管就会被击穿,就会变成右边的状态,但是被击穿之后就永远被击穿了,所以我们只能写入一次,这就是PROM

二、AT24C02
1.介绍
- AT24C02是一种可以实现掉电不丢失的存储器,可用于保存单片机运行时想要永久保存的数据信息
- 存储介质:EPROM
- 通讯接口:I2C总线
- 容量:256字节

2.引脚及应用电路
- VCC、GND:电源(1.8V-5.5V)
- WP:写保护(高电平有效
- SCL、SDA:I2C接口
- A0、A1、A2:I2C地址

3.内部结构框图

三、I2C(I方C)总线(重难点)
总览:先介绍,电路,然后学六种时序函数,写数据帧,学三种数据帧,再学习AT24C02数据帧
1.介绍
- I2C总线(intel IC BUS)是有飞利浦公司开发的一种通用数据总线
- 两根通信线:SCL(serial clock)、SDA(serial data)
- 同步、半双工、带数据应答
- 通用的I2C总线,可以使各种设备的通信标准统一,对于厂家来说,使用成熟的方案可以缩短芯片设计周期、提高稳定性,对于应用者来说,使用通用的通信协议可以避免学习各种各样的自定义协议、降低了学习和应用的难度
- 左1图是一个小巧的OLED屏幕,左2图是D3231,一种时钟芯片,比1302精度高很多 ,右1图是一种陀螺仪传感器,姿态传感器,用于平衡车无人机等;这些都可以通过I2C模块进行通信

2.电路规范
- 所有I2C设备的SCL连在一起,SDA连在一起
- 设别的SCL和SDA均要配置成开漏输出模式
- SCL和SDA各添加一个上拉电阻,阻值一般为4.7K欧左右
- 开漏输出和上拉电阻的共同作用实现了“线与”的功能,此设计主要是为了解决多级通信互相干扰的问题

- 左图是一个连接图,开漏输出保证了CPU想通信某一个设备时,其他设备没有干扰,给1就会进入浮空状态
- 右图是内部结构,下面的三角是一个输入的缓存,输入阻抗很大相当于断开,相当于一个电压表监视着电压;上面是目视管,相当于电子开关,给低电平导通,给高电平断开,不干扰外界

3.I2C时序结构
(1)起始和终止
- 起始条件:SCL高电平期间,SDA从高电平切换到低电平S:Start
- 终止条件:SCL高电平期间,SDA从低电平切换到高电平P:Stop

(2)发送和接收
- 发送一个字节:SCL低电平期间,主机(单片机)将数据位依次放到SDA线上(高位在前),然后拉高SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节

- 接收一个字节: SCL低电平期间,从机将数据位依次放到SDA线上(高位在前),然后拉高SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)

(3)应答
- 发送应答:在接收完一个字节之后,主机在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答
- 接收应答:在发送完一个字节之后,主机在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)

4.I2C数据帧
(1)发送一帧数据
首先是Strat起始时序;第二个是发送“从机地址+读写位”,又分为八位,前七位是地址,地位前4位是固定的,不同芯片不同,我们24C02固定为1010,最后一位是读写标识位;第三个是RA:0,接收应答,每次发送后都会加一个接收应答,接下来是发送第一个字节,接收应答,发送第二个字节,接收应答等等等,最后是Stop结束时序

(2)接收一帧数据
结构差不多都一样,区分就是第二个的最后一位是读取位,然后最后一位要发送非发送应答

(3)符合格式(先发送再接收数据帧)

就是在发送完数据帧,不写终止时序,接上读取数据帧
5.AT24C02数据帧
- 字节写:在WORD ADDRESS处写入数据DATA

- 随机读:读出在WORD ADDRESS处的数据DATA

- AT24C02的固定地址为1010,可配置地址本开发板上为000,所以SLAVE ADDRESS+W为0xA0,SLAVE ADDRESS+R为0xA1
下面看看手册里的关于这部分的解释
- 字节写:在“字地址”处写入“数据”

- 随机读:读出在“字地址”处的“数据”

相关文章:
江科大51单片机笔记【11】AT24C02(I2C总线)
一、存储器 1.介绍 RAM的特点是存储速度特别快,但是掉电会丢失;ROM的特点是存储速度特别慢,但是掉电不会丢失 SRAM是所有存储器最快的,一般用于电脑的CPU高速缓存,容量相对较少,成本较高;DRAM…...
html css 笔记
01_浏览器相关知识 五大主流浏览器: Chrome Safari IE Firefox Opera (拥有自己的内核) 四大内核: webkit Trident Gecko blink. 02_网页相关知识 构成 网址 网站 网页 网页标准: 结构 表现 行为 分别对应 HTML CSS JavaScript 03_HTML简介 H…...
【一句话经验】ubuntu vi/vim 模式自动设置为paste
从centos过来,发现ubutun有些地方不习惯,尤其是vi的粘贴,默认自动进去了代码模式,导致每次粘贴必须得set paste,否则会出现问题。 解决办法非常简单,按照下面命令执行即可: cd ~ echo "…...
外层元素旋转,其包括在内的子元素一并旋转(不改变旋转中心),单元测试
思路:外层旋转后坐标,元素旋转后坐标,计算偏移坐标 <template><div class"outbox"><label>角度: <input v-model.number"rotate" type"number" /></label><br><div c…...
Docker容器安装软件(完整版)
文章目录 一、安装Docker1.1 docker 相关的命令1.2 配置镜像加速 二. 安装es2.1 创建网络2.2 拉取镜像2.3 创建挂载点目录2.4 部署单点es,创建es容器2.5 编写elasticsearch.yml2.6 重启es容器2.7 测试Elasticsearch是否安装成功 三. 基于Docker安装Kibana3.1 拉取镜…...
「 机器人 」扑翼飞行器通过总气动力控制四自由度运动方法
一、前言 在扑翼飞行中,总气动力(Total Aerodynamic Force)是指扑翼在运动过程中受到的所有空气动力作用的合力。它是由以下两种主要力的合成结果: 1. 升力(Lift, ):垂直于空气流方向的力,用于支持飞行器(或生物)的重量。 2. 阻力(Drag, ):平行于空气流方向的力,…...
Axios简单说明,快速上手
Ajax:异步的JavaScript和XML 作用: 数据交换异步交互 Axios:就是对原生Ajax进行封装,简化书写,快速开发 使用逻辑: 首先要安装Axios,可以通过npm在项目中安装: 打开命令行工具…...
云服务器安装宝塔面板部署
单机部署(前端vue项目) 服务器安装宝塔面板 连接到服务器 使用 SSH 连接到你的服务器: ssh rootip安装宝塔面板 运行以下命令来安装宝塔面板: yum install -y wget wget -O install.sh http://download.bt.cn/install/install_6.0.sh sh install.sh安…...
Python 编程题 第九节:二分查找、移动0、旋转字符串、判断子序列
二分查找 双指针查找 无重复数字 lst[1,15,24,36,78,92,101] nint(input()) def binary_search(n,lst):left 0right len(lst) - 1while left<right:mid(leftright)//2if lst[mid]n:return midelif lst[mid]<n:leftmid1elif lst[mid]>n:rightmid-1return -1 print…...
docker-compose部署MongoDB分片集群
前言 MongoDB 使用 keyFile 进行 节点间身份验证,我们需要先创建一个 keyFile 并确保所有副本集的节点使用相同的 keyFile。 openssl rand -base64 756 > mongo-keyfile chmod 400 mongo-keyfiledocker-compose部署分片集群 无密码方式 # docker-compose-mongodb.yml s…...
通义万相 2.1:AIGC 领域的 “王炸” 组合如何颠覆创作生态?
引言 在数字化和人工智能的飞速发展中,AIGC(AI生成内容)技术已经成为推动创作、设计和内容生成领域创新的核心力量。而当通义万相2.1与蓝耘智算平台强强联手,这一“王炸”组合不仅提升了AIGC的效率,还为创作生态带来了…...
elementPlus之日历扩展功能
在这里做个记录,感觉用得还挺多的 功能有如下: 切换月份按钮对应日历视图和中间日期都要变选择日期日历视图要变点击日历视图中的不属于当前选中月份的日期即可触发日历视图变化以及中间日期也要变 代码如下: <template><div clas…...
C# NX二次开发:获取模型中所有表达式并且更新某个表达式的值
大家好,今天要讲的是关于NX中表达式的相关UFUN函数。 UF_MODL_ask_exps_of_part (view source) tag_tpart_tagInputTag of the part to be queriedint *number_of_expsOutputNumber of expressions returnedtag_t * *expsOutput to UF_*free*All the expressions i…...
Ollama本地部署deepseek-r1蒸馏版
Docker安装Ollama 拉取镜像 docker pull ollama/ollama 启动-使用GPU docker run -d --gpusall -p 11434:11434 --name ollama ollama/ollamadocker run : Docker 的核心命令,用于创建并启动一个新的容器。 -d : 后台模式(detached mode)…...
计算机毕业设计:基于web的乡村旅游系统
基于web的乡村旅游系统mysql数据库创建语句基于web的乡村旅游系统oracle数据库创建语句基于web的乡村旅游系统sqlserver数据库创建语句基于web的乡村旅游系统springspringMVChibernate框架对象(javaBean,pojo)设计基于web的乡村旅游系统springspringMVCmybatis框架对象(javaBea…...
c#面试题整理9
1.遍历xml文档 2.解释一下这段 String s new String("xyz"); 这段在C#平台中,编译失败 3.说明一下抽象类 抽象类可以有构造函数 抽象类不能是静态和密封的类,密封的类表示无法继承,抽象类本身就不可实例化,加不好…...
【具身相关】legged_gym, isaacgym、rsl_rl关系梳理
【legged_gym】legged_gym, isaacgym代码逻辑梳理 总体关系IsaacGymlegged_gymrsl_rl三者的关系 legged_gym代码库介绍环境模块env 总体关系 IsaacGym Isaac Gym 是 NVIDIA 开发的一个高性能物理仿真平台,专门用于强化学习和机器人控制任务。它基于 NVIDIA 的 Phy…...
个人学习编程(3-12) 刷题
杨辉三角形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 主要是发现规律:一、…...
Java Kryo 序列化与反序列化
Java Kryo 序列化与反序列化 Kryo 是一个高效的 Java 序列化框架,提供比 Java 原生序列化更快、更紧凑的序列化能力。它通常用于缓存、分布式通信和数据存储。 1. 引入 Kryo 依赖 如果你使用的是 Maven,可以添加以下依赖: <dependency><groupId>com.esoteri…...
侯捷C++课程学习笔记:构造函数那些事儿(四)
C 构造函数全面解析 上图节选自爱吃喵的鲤鱼 一、构造函数基础特性 1. 核心功能定位 对象初始化中枢:负责在对象创建时完成成员变量的初始化工作生命周期唯一性:每个对象在其生命周期内仅被调用一次,类似出生证明的签发过程 2. 基础语…...
Java 序列化和反序列化为什么要实现Serializable接口
1. 什么是序列化和反序列化 序列化:将对象的状态信息转换为可以存储或传输的形式(通常是字节序列)的过程。例如,将一个 Java 对象保存到文件中或者通过网络发送给其他程序。 反序列化:将字节序列恢复为对象的过程。比…...
java虚拟机(JVM)以及各种参数详解
Java 虚拟机(JVM)提供了许多参数来调整其行为和性能,以便更好地适应不同的应用场景。理解和使用这些参数对于优化 Java 应用程序的性能非常重要。以下是一些常用的 JVM 参数及其详细说明: 1. 内存管理参数 -Xms<size>&…...
微信小程序审核失败,你的小程序涉及提供播放、观看等服务,请补充选择:文娱-其他视频类目 解决
之前审核的都没有什么问题,结果这次就不给过还提示我们这个。 我们的视频是操作演示的视频。仅用于介绍使用。 是否接受修改指引,勾选我不理解以上内容 再勾选 下面不理解内容异项 申诉理由 视频播放和观看只限于当前用户自己使用,而视…...
电力行业研究系列报告
欧洲风能:2024年统计数据及2025-2030年展望 固态电池全景图:方兴未艾,技术竞逐 电力设备新能源2025年3月投资策略:固态电池产业加速推进,关注GTC大会HVDC电源产品应用趋势 62页PPT了解国内外40家固态电池典型企业技…...
蓝桥杯嵌入式组第七届省赛题目解析+STM32G431RBT6实现源码
文章目录 1.题目解析1.1 分而治之,藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 ADC模块1.3.3 IIC模块1.3.4 UART模块1.3.5 LCD模块1.3.6 LED模块1.3.7 TIM模块 2.源码3.第七届题目 前言:STM32G431RBT6实现嵌入式组第七届题目解析源码&…...
苹果iOS 18.4将强制升级HomeKit架构,旧版设备或无法使用
在科技飞速发展的当下,智能家居领域也在不断革新。而苹果公司作为科技行业的巨头,其每一次动作都备受关注。近日,有消息称苹果计划在iOS 18.4版本中停止对旧版HomeKit架构的支持,这一举措意味着用户将被迫升级,也可能对众多使用Apple Home应用的智能家居设备用户产生深远影…...
dit block部分
我首先会仔细阅读用户指令,明确用户的需求是基于文章的前十页内容,对3.2节“Diffusion Transformer Design Space”中的“DiT block design”部分进行原文翻译,并且在翻译完成后进行总结。为了完成这个任务,我需要先定位到文章的3…...
在MATLAB中实现PID控制仿真
在MATLAB中实现PID控制仿真可以通过代码编程或Simulink图形化建模两种方式完成。以下是两种方法的详细操作步骤和示例: 方法1:使用MATLAB脚本编程(基于控制系统工具箱) 步骤1:定义被控对象的数学模型 假设被控对象是…...
ChebyKAN0、ChebyKAN1 网络阅读
目录 ChebyKAN0 Chebyshev Polynomial-Based Kolmogorov-Arnold Networks: An Efficient Architecture for Nonlinear Function Approximation 参考文献 文章内容 文章详细结构 5. Experiments and Results 5.1 Digit Classification on MNIST 5.2 Function Approximat…...
Python核心模块的高级用法及Linux系统常用命令
一、Python相关 1、正则表达式 (1)正则表达式基础 ①含义:记录文本规则的代码。 ②注意:需要导入re模块 ③特点: 语法比较复杂,可读性较差。通用性很强,适用于多种编程语言 ④步骤&#…...
