【51单片机入门记录】IIC总线协议 EEPROM存储器AT24C02概述

一、IIC总线协议概述

(1)IIC(Inter-IntegratedCircuit)总线

  • 是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器以及其外围设备。
  • IIC也被成为I2C/I²C,其实两者是完全相同的,只是名词不一样而已
  • 它是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据

(2)IIC总线的物理层和协议层

  • 物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输
  • 协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准

(3)特点

  1. 它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个I2C通讯总线中,可连接多个I2C通讯设备,支持多个通讯主机及多个通讯从机
  2. 一个I2C总线只使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步
  3. 每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。
  4. 总线通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。
  5. 多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线
  6. 具有三种传输模式:标准模式传输速率为100kbit/s,快速模式为400kbit/s,高速模式下可达3.4Mbit/s,但目前大多12C设备尚不支持高速模式。

二、IIC总线通讯的数据帧格式

(1)IIC总线通讯的数据帧格式:写操作

S为起始信号,SLAVEADDRESS从机地址(7bit)+W(0)一共8位,有阴影的部分是主机发送的,而没有阴影部分是从机发送到主机的,A/A(0/1),P代表停止信号

主机I2C接口产生传输起始信号S→广播从机地址→传输方向选择→接受到应答信号ACK→向从机传输数据DATA→等待从机的应答信号ACK→重复之前过程→发送停止传输信号P。

(2)IIC总线通讯的数据帧格式:读操作

S为起始信号,SLAVEADDRESS从机地址(7bit)+R(1)一共8位,有阴影的部分是主机发送的,而没有阴影部分是从机发送到主机的,A(应答)/A(0/1),P代表停止信号。

注意:假如主机一直返回应答信号,那么从机可以一直发送数据,也就是图中的(nbyte+应答信号)情况,直到主机发出非应答信号,从机才会停止发送数据。

主机I2C接口产生传输起始信号S→广播从机地址→传输方向选择→接受到应答信号ACK←从机向主机返回数据DATA←等待主机的应答信号ACK←重复之前过程←停止传输P。

(3)IIC总线通讯的数据帧格式:读和写数据

除了基本的读写,IIC通讯更常用的是复合格式,该传输过程有两次起始信号(S)

一般在第一次传输中,主机通过SLAVE_ADDRESS寻找到从机设备后,发送一段“数据”,这段数据通常用于表示从设备内部的寄存器或存储器地址;

在第二次的传输中,对该地址的内容进行读或写。也就是说,第一次通讯是告诉从机读写地址,第二次则是读写的实际内容。

三、IIC总线通讯时序

(1)I2C数据的有效性(数据的传输)

  1. 使用SDA信号线来传输数据
  2. 使用SCL信号线进行数据同步
  3. SDA数据线在SCL的每个时钟周期传输一位数据。传输时,SCL为高电平的时候,SDA表示的数据有效,即此时的SDA为高电平时表示数据“1”,为低电平表示数据“0”。
  4. 当SCL为低电平时,SDA的数据无效,一般在这个时候进行电平切换,为下一次表示数据做好准备。

(2)I2C通讯的起始和停止信号

  • 当SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示通讯的起始。
  • 当SCL现是高电平时,SDA线由低电平向高电平切换,表示通讯的停止。
  • 起始和停止信号一般由主机产生。

(3)I2C通讯的响应

  • 传输时,主机产生时钟,在第九个时钟时,数据发送端会释放SDA的控制权,由数据接收端控制SDA,若SDA为高电平,表示非应答信号(NACK),低电平表示应答信号(ACK);
  • 当设备(无论主从机)接收到I2C传输的一个字节数据或地址后,若希望对方继续发送数据,则需要向对方发生“应答(ACK)”信号;若接收端希望结束数据传输,则向对方发生“非应答(NACK)”信号,发送方接收到该信号后会产生一个停止信号,结束信号传输。

四、基于IIC总线的E2PROM-AT24C02

(1)E2PROM概述:
 

EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器,是一种掉电后数据不丢失的存储芯片,EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。

(2)AT24C02简介

AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节。该器件通过IIC总线接口进行操作,且有一个专门的写保护功能。

(3)基于IIC总线的E2PROM-AT24C02的特性

  • 与400KHz IIC 总线兼容
  • 1.8到6.0伏工作电压范围
  • 低功耗CMOS技术
  • 写保护功能,当WP为高电平时进入写保护状态
  • 页写缓冲器
  • 自定时擦写周期
  • 1,000,000编程/擦除周期
  • 可保存数据100年
  • 8脚 DIP SOIC或TSSOP封装
  • 温度范围商业级工业级和汽车级。
  • (4)基于IIC总线的E2PROM-AT24C02的管脚描述

  • 管脚名称

    功能

    A0、A1、A2

    器件地址选择

    SDA

    串行数据、地址

    SCL

    串行时钟

    WP

    写保护

    VCC

    +1.8V~6.0V工作电压

    GND

WP 保护:如果WP管脚连接到Vcc所有的内容都被写保护,只能读;当WP管脚连接到Vss或悬空,允许器件进行正常的读/写操作。

(5)IIC地址及数据方向

I2C总线上的每个设备都有自己的独立地址,主机发起通讯时,通过SDA信号线发送设备地址(SLAVE_ADDRESS)来查找从机。

12C协议规定设备地址可以是7位或10位,实际中7位的地址应用比较广泛。紧跟设备地址的一个数据位用来表示数据传输方向,它是数据方向位,第8位或第11位。数据方向位为“1”时表示主机由从机读数据,该位为“0”时表示主机向从机写数据

(6)AT24C02设备地址


 

因为单片机上的管脚均接地,所以地址为1K/2K代表的地址。

五、AT24C02数据读写操作

(1)字节写

  • 写操作需要在设备地址字确认之后有一个8位的数据字地址
  • 一旦收到这个地址,EEPROM将输出一个响应,然后接收到8位数据字后,EEPROM将输出一个响应。
  • 如果需要停止数据传输,主机必须用一个停止条件终止写序列。
  • 数据写入后,EEPROM进入一个内部计时的写周期,将数据写入到到非易失性存储器。在这个写周期中,所有输入都被禁用,EEPROM直到写完成才会响应。

Figure 8. Byte Write:

(2)页写入

  • 1K/2K EEPROM能够进行8字节的页写入;
  • 页写的初始化过程与字节写的初始化过程相同。但是微控制器在第一个数据字被写入后并没有发送一个停止条件。相反,在EEPROM 承认接收到第一个数据字之后。该微控制器可以再传输7个数据字。EEPROM在接收到每个数据字后将回一个零响应。“微控制器必须用一个停止条件终止页写序列。当内部生成的字到达页面边界时,下面的字节被放置在同一页面的开头。
  • 如果有超过8个数据字传输到 EEPROM,数据字地址将“翻转”,先前的数据将被覆盖。

(3)任意地址读取

  • 随机读需要一个“虚拟”字节写序列来加载数据字地址。一旦设备地址字和数据字地址被输入并且被EEPROM 确认微控制器必须产生另一个启动条件,微控制器现在通过发送带读设备地址来启动当前读地址。令EEPROM 确认设备地址并报出数据字。微控制器后跟随停止条件结束。

(4)读写时间周期范围

符号

参数

1.8 V,2.5V

4.5V~5.5V

单位

最小

最大

最小

最大

FscL

时钟频率

100

400

KHz

T1

SCL,SDA输入的噪声抑制时间

200

200

ns

tAA

SCL 变低至SDA数据输出及应答信号

3.5

1

us

tBUF

新的发送开始前总线空闲时间

4.7

1.2

μs

LHD:STA

起始信号保持时间

4

0.6

μs

tLow

时钟低电平周期

4.7

1.2

μs

LHIGH

时钟高电平周期

4

0.6

us

tSU:STA

起始信号建立时间

4.7

0.6

μs

tHD:DAT

数据输入保持时间

0

0

ns

tsut:DAT

数据输入建立时间

50

50

ns

tR

SDA及SCL上升时间

1

0.3

μs

tF

SDA及SCL下降时间

5

300

300

ns

tsu:STO

停止信号建立时间

4

0.6

μs

DH

数据输出保持时间

100

100

ns

(5)任意地址读取总结

  • 1、主控器发出起始信号
  • 2、主控器发出寻址字节(写);
  • 3、被控器做出应答后;
  • 4、主控器发出地址字节(写);
  • 5、被控器做出应答后;
  • 6、主控器发出停止信号
  • 7、主控器发出起始信号;
  • 8、主控器发出寻址字节(读);
  • 9、被控器做出应答后;
  • 10、主控器从被控器读出数据字节,主控器发出应答;
  • 11、主控器发出停止信号:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux(CentOS7)配置系统服务以及开机自启动

目录 前言 两种方式 /etc/systemd/system/ 进入 /etc/systemd/system/ 文件夹 创建 nginx.service 文件 重新加载 systemd 配置文件 ​编辑 配置开机自启 /etc/init.d/ 进入 /etc/init.d/ 文件夹 创建 mysql 文件 编写脚本内容 添加/删除系统服务 配置开机自启 …

精通Go语言文件上传:深入探讨r.FormFile函数的应用与优化

1. 介绍 1.1 概述 在 Web 开发中,文件上传是一项常见的功能需求,用于允许用户向服务器提交文件,如图像、文档、视频等。Go 语言作为一门强大的服务器端编程语言,提供了方便且高效的方式来处理文件上传操作。其中,r.F…

9.动态规划——2.最大序列和

例题——最大序列和 找状态 思路一() 定义一个状态 d p [ i ] dp[i] dp[i],计为前i个数构成子序列和的最大值 此法状态转移比较困难,即若 d p [ i ] dp[i] dp[i]与 d p [ i − 1 ] dp[i-1] dp[i−1]没有明确的关系,有…

Ribbon有哪些负载均衡策略

负载均衡类都实现了IRule接口。 RandomRule:随机的选用一个实例 RoundRobinRule:轮询的使用实例 RetryRule:在轮询的基础上加了一个错误重试机制,在deadline时间内会不断的重试 WeightResponeTimeRule:根据权重去做…

【计算机网络】四层负载均衡和七层负载均衡

前言 1、分层方式 首先我们知道,在计算机网络中,常用的协议分层方式:OSI和TCP/IP,以及实际生产中使用的协议划分方式。 在OSI中,各层的职责如下: 应用层:对软件提供接口以使程序能使用网络服…

深入探索位图技术:原理及应用

文章目录 一、引言二、位图(Bitset)基础知识1、位图的概念2、位图的表示3、位图操作 三、位图的应用场景1、数据查找与存储2、数据去重与排序 四、位图的实现 一、引言 位图,以其高效、简洁的特性在数据处理、存储和检索等多个领域发挥着举足…

Nest安装及使用~

前提条件 请确保您的操作系统上安装了 Node.js(版本 > 16) 📚要查看指南,请访问 https://docs.nestjs.com/ 📚要查看中文 指南, 请访问 https://docs.nestjs.cn/ $ node -v v16.18.1 $ npm -v 7.x.x安…

【C++】C++11的新特性

目录 一. 列表初始化1. 列表初始化的原理: initializer_list 二. 类型的声明1. auto2. decltype 三. nullptr四. 范围 for五. STL容器变化六. 类的新功能 一. 列表初始化 在 C 语言中, 就可以使用 {} 对数组或结构体进行初始化, 而 C11 扩大了 {} 的使用范围, 使其可以初始化所…

Mysql-数据库范式和Mysql安装

文章目录 数据库三范式第一范式:1NF第二范式:2NF第三范式:3NF Yum安装CentOS7 yum安装解决“Access denied”拒绝访问异常 数据库三范式 第一范式:1NF 第一范式:数据库中无重复的列,每一列都是不可分割的…

乐乐音乐鸿蒙版-支持krc歌词(动感歌词、翻译和音译歌词)

简介 乐乐音乐主要是基于HarmonyOS开发的音乐播放器,它支持lrc歌词和动感歌词(ksc歌词、krc歌词和hrc歌词等)、多种格式歌词转换器及制作动感歌词、翻译歌词和音译歌词。 开发环境 ArkTS、Stage模型、SDK3.1、 API 9 注:没试过在真机条件下调试。 功…

Java基础学习: JDK动态代理

文章目录 一、什么是JDK动态代理二、JDK动态代理的特点三、JDK动态代理类如何使用四、JDK动态代理原理分析1、创建代理对象2、生成代理类 一、什么是JDK动态代理 JDK动态代理是Java提供的一种动态生成代理类和代理对象的技术。它主要利用Java的反射机制实现,在运行…

Open CASCADE学习|GeomFill_Frenet

GeomFill_Frenet继承自GeomFill_TrihedronLaw类。GeomFill_Frenet类主要用于实现Frenet标架的计算。Frenet标架是一个沿曲线移动的局部坐标系,它由切向量、法向量和副法向量组成,常用于机器人学、计算机图形学等领域。 class GeomFill_Frenet : publi…

docker 数据卷

Docker数据卷是Docker中的一个核心机制,用于实现容器间数据的持久化和共享。它是宿主机上的一个特殊目录,可以供一个或多个容器使用。容器删除时,不会删除其挂载的数据卷,也不会存在类似的垃圾机制对容器存在的数据卷进行处理。 …

每日面经分享(Spring Boot: part2 DAO层)

1. Spring Boot DAO层的作用 a. 封装数据访问逻辑:DAO层的主要责任是封装与数据访问相关的逻辑。负责处理与数据库的交互,包括数据的增删改查等操作。通过将数据访问逻辑统一封装在DAO层中,可以提高代码的可维护性和可重用性。 b. 解耦业务逻…

【vue3学习笔记(二)】(第141-143节)初识setup;ref函数_处理基本类型;ref函数_处理对象类型

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 本篇内容对应课程第141-143节 课程 P141节 《初识setup》笔记 1、setup是所有组合式API“表演的舞台”,组件中所用到的所有数据、方法、监视数据、生命周期钩子等都需要配置在setup中。 2、setup的两种返回值&…

【Linux】socket套接字

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 目录 👉🏻IP地址和端口号pid和port的关系 👉🏻TCP和UDP👉🏻网络字节序&…

NineData与StarRocks商业化运营公司镜舟科技完成产品兼容认证

近日,镜舟科技与NineData完成产品兼容测试。在经过联合测试后,镜舟科技旗下产品与NineData云原生智能数据管理平台完全兼容,整体运行高效稳定。 镜舟科技致力于帮助中国企业构建卓越的数据分析系统,打造独具竞争力的“数据护城河”…

2-HDFS常用命令及上传下载流程

HDFS NameNode 安全模式(safemode) 当NameNode被重启的时候,自动进入安全模式 在安全模式中,NameNode首先会触发edits_inprogress文件的滚动。滚动完成之后,更新fsimage文件 更新完成之后,NameNode会将fsimage文件中的元数据加…

STM32——超声测距HC_SR04记录

一、HC_SR04简述 HC-SR04超声波测距模块可提供 2cm-400cm的非接触式距离感测功能,测距精度可达高到 3mm;模块包括超声波发射器、接收器与控制电路。 基本工作原理: (1)采用IO 口TRIG 触发测距,给最少10us 的高电平信呈。 (2)模块…

一文教你轻松领取华为云优惠券

随着云计算技术的快速发展,越来越多的企业和个人选择使用云服务来满足他们的需求。华为云作为全球领先的云服务提供商之一,为用户提供了丰富的产品和服务。为了帮助用户更好地体验华为云服务,本文将为大家详细介绍如何轻松领取华为云优惠券。…