AT24C02(I2C总线)通信的学习

2024-02-20 06:04
文章标签 学习 通信 总线 i2c at24c02

本文主要是介绍AT24C02(I2C总线)通信的学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、存储器介绍
  • 二、AT24C02芯片
  • 二、I2C总线
    • I2C电路规范
      • I2C时序结构
      • I2C数据帧
      • AT24C02数据帧
  • 总结


前言

学习AT24C02(I2C总线)芯片

一、存储器介绍

在这里插入图片描述
RAM()存储速度较快,但容易丢失数据。ROM(Read Only Memory)存储速度较慢,但掉电不丢失数据。在使用时需要两者结合先存入RAM再转存到ROM中。
在这里插入图片描述

二、AT24C02芯片

AT24C02是一种可以实现掉电不丢失的存储器,可以用于保护单片机运行时想要永久保存的数据信息。
存储介质:E2PROM
通讯接口:I2C总线
容量:256字节
在这里插入图片描述
在这里插入图片描述
注:高电平为写保护。

在这里插入图片描述

二、I2C总线

多设备通信协议

  • I2C总线(inter IC BUS)是由Philips公司开发的一种通用数据总线
  • 两根通信线:SCL(Serial Clock)、SDA(Serial Data)
  • 同步、半双工、带数据应答
  • 通用的I2C总线,可以使各种设备的通信标准同一,对于厂家来说,使用成熟的方案可以缩短芯片设计周期、提高稳定性、对于应用者来说,使用通用的协议可以避免学习各种各样的自定义协议,降低了学习和应用的难度。
    在这里插入图片描述

I2C电路规范

  • 所有I2C设备的SCL连接在一起,SDA链接在一起
  • 设备的SCL和SDA均要配置成开漏输出模式
  • SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右
  • 开漏输出和上位电阻的共同作用实现了”线与“的功能,此设计主要是为了解决多机通信互相干扰的问题
    在这里插入图片描述
    在这里插入图片描述

I2C时序结构

  • 起始条件:SCL高电平期间,SDA从高电平切换到低电平

  • 终止条件:SCL高电平期间,SDA从低电平切换到高电平
    在这里插入图片描述

  • 发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位在前),然后拉高SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节。
    在这里插入图片描述

  • 接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位在前),然后拉高SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接受之前,需要释放SDA)
    在这里插入图片描述
    如果主机不释放SDA,那么从机就没办法获得SDA的控制权,也就是没办法将数据放到SDA上。

  • 发送应答:在接收完一个字节之后,主机在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答。

  • 接受应答:在发送完一个字节之后,主机在下一个时钟接受一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)
    -在这里插入图片描述
    ACK-Acknowledge character

I2C数据帧

在这里插入图片描述
发送数据给从机,从机接收到了就要返回应答给主机,所以主机是接收应答RA

  • 先发送再接收数据帧(复合格式)
    在这里插入图片描述

AT24C02数据帧

  • 字节写:在WORD ADDRESS处写入数据DATA
    在这里插入图片描述

  • 随机读:读出在WORD ADDRESS处的数据DATA
    在这里插入图片描述

  • AT24C02的固定地址为1010,可配置地址本开发板上位000
    所以SLAVE ADDRESS+W位0xA0,SLAVE ADDRESS+R为0xA1


每个设备也是有地址的,就跟电脑的外设一样知道地址才能找到外设,找到设备后再确定存储设备内部的地址。

  • 字节写:再”字地址“处写入”数据“
    在这里插入图片描述
    -随机读:读出再”字地址“出的”数据“
    在这里插入图片描述

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

这篇关于AT24C02(I2C总线)通信的学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/727256

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx