2024/4/5 AT24C02 总线(I²C总线)

news/2024/5/21 10:29:12 标签: 单片机

存储器的介绍:

一、易失性存储器RAM:存储速度快,掉电丢失

  • SRAM(静态RAM):极快
  • DRAM(动态RAM):需要配一个扫描电路,进行“补电”(动态刷新)

二、非易失性存储器ROM:掉电不丢失,存储较慢

  • Mask ROM(掩膜ROM):只能读不能写
  • PROM(可编程ROM):只能写一次
  • EPROM(可擦除可编程ROM):要用紫外线照射30分钟才能擦除
  • E2PROM(电可擦除可编程ROM):用程序即可擦除
  • Flash(闪存)
  • 硬盘,软盘,光盘等

I²C总线介绍:

两根通信线:SCL,SDA(半双工就是一条线可以双向传输数据但是一个时间只能一个方向传)

好处:可以使各种设备通信标准统一

I²C电路规范:

所有SCL连一起,SDA连一起

SCL和SDA均要配置成开漏输出模式。在下面每个设备引出的两条线都设一个开关,开漏输出模式输出1意思就是开关全部断开,也就是电阻无限大,又称高阻态,毫无驱动能力。

由于总线是弱上拉,设备写0的时候线会自动被拉为1;当设备写1时,设备与总线断开,但由于总线配置弱上拉,所以总线自动置1;然后不用的设备两条线全部置1 要用的设备就不断写零写一。如果cpu控制的base基级是0,那么out口会被拉低,电压因而为零,即使外界有接的vcc,vcc的电流也会被导通到ground,out端口输出仍然是0。SDA,SCL是半双工,1想象成下面开关断了,SDA,SCL靠VDD拉。当SDA,SCL为0的时候,想象成下面开关连接了,选择被控IC。

上拉电阻:【上拉电阻的通俗解释,你真正知道吗?-哔哩哔哩】【上拉电阻的通俗解释,你真正知道吗?-哔哩哔哩】icon-default.png?t=N7T8https://b23.tv/fEzm3J2

弱上拉:高电平驱动能力弱,低电平驱动能力强。上拉电阻增强了驱动能力。

开漏输出,推挽输出:开漏的线与特性:当多个开漏输出链接到一起,当它们全部都输出高电平时,总线上才是高电平,但凡有一个开漏输出引脚上是低电平,总线就会被拉低。

【推挽 开漏 高阻 这都是谁想出来的词??-哔哩哔哩】icon-default.png?t=N7T8https://b23.tv/VDIqAgm

http://t.csdnimg.cn/HVG43icon-default.png?t=N7T8http://t.csdnimg.cn/HVG43

当有空闲设备部通信时,可能会影响到正在通信的设备,所以需要加上拉电阻,使其空闲设备处于一个高阻态(不是高电频也不是低电平)的情况下,这样空闲设备就会断路

I²C时序结构:

起始条件:SCL高电平期间,SDA从高电平变成低电平

终止条件:SCL高电平期间,SDA从低电平变成高电平

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

下面不是两根线只是两种情况根据前面SDA是处于高电平还是低电平来确定的。

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

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

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

都是对主机而言的,发送应答指的是主机接收从机数据,然后主机给从机发送应答。1表示非应答是因为默认为1,如果从机根本不存在是1,从机不应答也是1,只有从机应答才是0。

SLAVE ADDRESS 是AT24C02的地址,WORD ADDRESS是AT24C02这个设备要写入数据的地址。


http://www.niftyadmin.cn/n/5472306.html

相关文章

【工具或平台】Gem5编译

Gem5编译 安装依赖 源更新 sudo apt-get update sudo apt-get upgrade 安装依赖 sudo apt install vim sudo apt install build-essential git m4 scons zlib1g zlib1g-dev libprotobuf-dev protobuf-compiler libprotoc-dev libgoogle-perftools-dev python3-dev python-is-…

C++:内联函数inline,auto关键字,基于范围的for循环,nullpter

文章目录 1.内联函数 inline1.1 概念1.2查看方法1.3 特性1.4 题外话:宏 2.auto关键字2.1 auto 简介2.2 auto使用细则 3. 基于范围的for循环4. nullpter 1.内联函数 inline 1.1 概念 inline int Add(int x, int y) {return x y; } int main(){int ret 0;ret Add…

python笔记(9)Dictionary(字典)

目录 创建字典 取值 修改字典 删除 内置函数和方法 创建字典 字典键值和value用:隔开,键值是不可变的,而且必须是唯一的,值可以变,可以是任意类型 dict {key1 : value1, key2 : value2 } 1)不允许同…

java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码

java中大型医院HIS系统源码 AngularNginxSpringBoot云HIS运维平台源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工…

数据结构之二叉树由浅入深最终章!

题外话 我说清明节想放松一下没更新大家信吗? 博客毕竟是文字不是视频,大家如果有不明白的地方,可以使用数形结合的方式,画图一边通过图片,一边通过对照代码进行推导一下,有什么问题都可以私信我或者写在评论区 正题 第一题 寻找二叉树中p,q最近公共祖先 第一题思路 先…

顺序表的应用

文章目录 目录1. 基于动态顺序表实现通讯录项目2.顺序表经典算法2.1 [移除元素](https://leetcode.cn/problems/remove-element/description/)2.2 [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/description/) 3. 顺序表的问题及思考 目录 基于动态顺序…

网络通信(二)

UDP服务器接收数据和发送数据 UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快&#xf…

java-权限修饰符、代码块

一、权限修饰符概念 权限修饰符是用来控制一个成员被访问的范围,可以用来修饰成员变量、方法、构造方法、内部类 二、权限修饰符的分类 举例: 1、private 2、空着不写 3、protected 4、public 三、权限修饰符的使用规则 实际开发中,一般使…