51单片机笔记(1)-I2C总线+AT24C02(存储芯片)
+普中科技开发板说明手册
记录用
存储器介绍
易失性存储器/RAM: 静态RAM-SRAM 速度最快 容量小 成本高
动态RAM-DRAM 电容+扫描电路 需动态刷新 eg.电脑内存条
非易失性存储器/ROM: 掩膜ROM-Mask ROM 只读不写 可编程ROM-PROM 仅可写一次
可擦除可编程ROM-EPROM 可擦除 电可擦除可编程ROM-E2PROM 电可擦除
Flash(闪存)
硬盘、软盘、光盘等
存储器简化模型:
地址总线+数据总线排布为网格,用不同位置连接 断开存储数据。
-Mask ROM 连接处使用二极管
-PROM 置相对的两个二极管,其中一个易击穿 穿前断路穿后短路/置熔丝,相反
AT24C02(存储芯片)介绍
可实现掉电不丢失
- 存储介质:E2PROM
- 通讯接口:I2C总线
- 容量:256字节
- 工作电压:1.8V-5.5V
***I2C总线
作用:实现多设备协作通信。
一种通用数据总线(统一通信协议)
两根通信线-SCL(Serial Clock)、SDA(Serial Data)
同步:拥有单独的时钟线
半双工:只有一条数据线,分时段来回通信
带数据应答:检测是否接收到数据(串口无此功能)
I2C电路规范
所有I2C设备的SCL连在一起,SDA连在一起
SCL和SDA都要配置成开漏输出模式(0有驱动能力,1无;高电平时引脚断开,CPU与其中一个设备通信时不受其他设备干扰)
//原本IO口为弱上拉模式,开关闭合→输出为0 开关断开,数据由上传入通路→输出为1
//开漏模式:无上拉电阻 下方直接接开关:开关闭合接GND→输出为0 开关断开 引脚浮空→输出为1(电路断开 电平不稳定)
SCL和SDA各添加一个上拉电阻(一般为4.7KΩ左右)
理解:弹簧+标尺模型进行通信 拉下杆为0 松手则为1
I2C时序结构 A(主机89C52)→B(从机24C02)
主机、从机程序不同,一般只编写主机程序
S蓝 起始条件:SCL高电平期间,SDA从高电平→低电平
P红 终止条件:SCL高电平期间,SDA从低电平→高电平
字节传输
S绿 发送一个字节:SCL低电平期间,A将数据位从高到低依次放到SDA线上,然后拉高SCL,B在SCL高电平期间读取数据位。循环8次即可发送一个字节*(SCL高电平期间SDA不允许有数据变化)*
R紫 接收一个字节:SCL低电平期间,B将数据位从高到低依次放到SDA线上,然后拉高SCL,A在SCL高电平期间读取数据位。循环8次即可接收一个字节*(SCL高电平期间SDA不允许有数据变化,A在接收前需释放SDA)*
应答(额外一位 用于判断是否应答)
SA黄 发送应答:接收完一个字节后,主机在下一个时钟发送一位数据,数据0表应答,1表非应答。
RA黑 接收应答:发送完一个字节后,主机在下一个时钟接收一位数据,判断B是否应答,数据0表应答,1表非应答。(A接收前需释放SDA)
I2C数据帧
发送一帧数据(向谁发什么):S→s(address:A6 A5 A4 A3 A2 A1 A0 R/W)→RA→s→RA→s→……RA→P
接收一帧数据(向谁收什么):S→s(address:A6 A5 A4 A3 A2 A1 A0 R/W)→RA→R→SA→R→……SA→P
复合格式(先发送再接收,向谁收指定的什么):S→s(address)→RA→s→RA→s→……RA→S→s(address)→RA→R→SA→R→……SA→P
字节写:在地址处写入数据Data
随机读:读出地址处数据Data