登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 第九章:IIC总线与EEPROM

[复制链接]
发表于 2017-2-17 18:45:41 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C51
学习安排: 见:http://bbs.hpuedd.com/forum.php?mod=viewthread&tid=837&extra=&page=3
开始时间: 2017-02-17
结束时间: 2017-02-19
本帖最后由 夜色星空 于 2017-2-17 18:45 编辑
因PWM的38KHZ载波没有调出来

所以这将是最后一贴

对于IIC的学习

它是一种只需要两根线(不算电地线)就可进行数据交互的通讯协议

好比DS18B20的复位(存在)脉冲一样

IIC用起始位来通知外围器件将要发送数据

然后进行数据传输

再进行截止以表示数据传输完毕



首先是起始位

IIC一共只需要两根线

SCL与SDA

当主机(一般为单片机)发送起始信号时就相当于通知从器件(如AT24C02)做好准备

而起始信号一般为

当SCL为高时将SDA拉低

如图

1-1.PNG

然后就是数据传输

先保证SCL为低,然后将SCL调为高或低(1/0),调整好后再将SCL拉高,通知从器件接收一位数据
也就是传输二进制
高位在前,低位在后
每传输八位数据(一字节)后要进行应答

(从器件接收到数据后,在下一个SCL拉高时将SDA拉低表示接收到数据)

如果发送的为读取命令

此时主机只需要让SDA为高电平

然后控制SCL的变化就可以

如,想读出从器件的数据(假设为0011 0011)

当发送完读指令后,接受一位应答位(SCL被主机拉高,SDA被从器件拉低)

然后主机将SCL拉低,维持SDA为高

先传输高位0

主机将SCL拉高时从机将SDA拉低(高位0传输完毕)

主机读取当前IO口状态(为低,0)

然后再将SCL拉低,延时,再拉高

再读取IO口状态(为低,0)

再执行拉高,拉低,延时,读状态(为1)

以此类推

读出八位数据后

主机发送应答位表示继续读取

发送非应答位,表示停止读取

(在数据发送完毕后,将SDA置高表示非应答)


然后,无论读写,当停止操作时,发送停止位,表示结束通讯

停止位与起始位相反

它是在SCL为高时,将SDA拉高,表示结束

如图,一次完整的通讯

1-2.PNG

(注意,图中数字只是说明传输位数,并不是低位在前)


知道了如何传输,然后就是传输命令与数据了

先上图(以黑金V2.5为例)

1-3.PNG

介绍一下引脚作用

SCL,SDA——数据传输

WP——数据保护(具体请看

A2,A1,A0地址引脚

因为IIC总线可以串接多个器件

所以每个器件就要有它单独的地址

如图,那么

A0=1;

A1=0;

A2=0;

再加上AT24C02的地址格式

1010 A2 A1 A0 R/W

所以,我们要写数据到板子上的EEPROM(AT24C02)

则对应命令代码为

1010 0010(0XA2)

然而,光有这一条命令还不够

AT24C02是一个具有2K存储空间的EEPROM(电可擦可编程只读存储器)

1-4.PNG

(手头没有中文的,先放一个英文的)

(大意应该是,有32页,每页8字节,也就是可以存储32*8字节数据)

如此多的存储空间,我们只用一字节进行传输(多字节会有一些问题)

那么就有了第二条指令,选择一块空间进行存储

AT24C02的存储空间的地址为从0X00——0XFF

在这任选一块地址发送给EEPROM

然后按照第一条指令进行读写操作

然后结束通讯

这样,单字节的读写就完成了

(需要注意,EEPROM进行写操作时,会占用一些时间,此时进行读操作将得不到正确结果,好比LCD的忙状态)


然而,当单个写入或读取时用单字节通讯效率不高

此时就有了页写入,页读取

EEPROM中有32页每页有8字节

我们完全可以用

一字节传输+ACK(应答)+一字节传输

这种方式进行通讯

并且EEPROM支持这种页写入方式

这体现在你每次应答时它会自动将地址‘+1’

比如你发送的地址为0X00时

应答一次,再进行读写,那么此时你读写的对象就变成了0X01这块空间

注意,EEPROM最多只支持页写入

也就是最多写入一页

它将每8个字节合为一页(AT24C02为8字节/页)

也就是说0X00——0X07为一页

当你在0X07处应答时,它会跳转至0X00

(貌似叫“上溢”)

将0X00的数据覆盖


也就是说如果想与EEPROM进行通讯

则需要

起始信号

发送指令

应答

发送地址

应答

发送数据

。。。

(发送非应答)(若为单字节写则不用)

结束信号


然而,还需要注意,因为一般主机速度都比从机快

所以适当延时是必要的

附上一些比较实用的时序图

2-1.PNG 2-2.PNG

HEX




评分

参与人数 1铜板 +66 收起 理由
如果让他嘎斯 + 66 很赞~

查看全部评分

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表