a15818662231的个人空间 https://www.eechina.com/space-uid-139581.html [收藏] [复制] [分享] [RSS]

博客

新唐单片机

已有 833 次阅读2018-8-18 09:40 |个人分类:单片机| 新唐单片机

一、概述
1.IIC总线介绍
2.IIC总线模拟方法
3.AT24Cxx存储芯片介绍

二、讲解
1.IIC总线介绍

1)IIC总线概述
IIC总线是由飞利浦公司研发的两线式串行通讯总线。两线制包括串行时钟线(SCL)和串行数据(SDA)。IIC遵从主/从结构,我们把发送数据到总线上的器件,定义为发送器,把从总线上读取数据的器件,定义为接收器。主器件和从器件都可以工作与接收和发送状态。注意:总线必须由主机(MCU)控制。

2)IIC总线和UART通讯区别
相同点:IIC总线和UAST通讯都是串行通讯方式
不同点:
①UART属于异步、全双工通讯,IIC属于同步、半双工通讯。
②UART数据长度为5~8位,IIC数据长度固定为8位

3)IIC总线物理连接
①所有器件的同名端相连
②在两条总线上分别加上一个上拉电阻(4.7K~100K)。
l
4)IIC总线通讯方式
①IIC总线通讯方式概述
IIC总线上每一个从设备都有一个对应的唯一地址,主从设备之间通讯就是依靠这个地址来确定与那个从器件进行通讯。

②IIC通讯地址
IIC通讯地址由两部分组成:固定地址(器件地址)+可编程地址(引脚地址)
固定地址:从器件出厂时,产家已经分配好的芯片号(一般是4位)
可编程地址:从器件芯片引脚上的地址功能。(一般是3个),如果引脚接电源,就表示1,如果接地,表示0.
③IIC总线挂载数量
a)IIC总线挂载数量受通讯地址限制
b)IIC总线挂载数量受总线最大电容400pF限制
5)IIC总线协议
①IIC总线协议的基本时序信号
空闲信号:当SCL和SDA都保持着高电平。
起始信号:当SCL在高电平期间,SDA出现由高到低的跳变(下降沿),表示通讯开始。
停止信号:当SCL在高电平期间,SDA出现由低到高的跳变(上升沿),表示通讯结束。
应答信号:在每个字节(8个位)传输完成之后的下一个时钟脉冲(第9个时钟脉冲),在SCL为高电平期间,SDA为低电平,则表示一个应答信号。
非应答信号:在每个字节(8个位)传输完成之后的下一个时钟脉冲(第9个时钟脉冲),在SCL为高电平期间,SDA为高电平,则表示一个非应答信号。
注意:起始和结束信号一定是由主设备产生,但是应答信号或非应答信号是由接收器发出,发生器则检测这个信号(发送器和接收器都可以是主机或者是从机)。 ---- 谁接收,谁应答
②IIC总线数据传输
当产生了起始信号之后,数据就开始传输,SCL时钟线上的每一个时钟脉冲就会伴随着SDA数据上的一位数据传输(先发高位,再发低位),SDA数据线上的数据,只能在SCL为低电平期间进行改变,在SCL为高电平期间,必须保持数据稳定。在每个字节传输完成之后,都需要跟随着一个应答位。如果不再通讯,则主机产生一个结束信号。
③IIC寻址方式
IIC寻址方式:设备地址(4+3)+1位数据传输方向控制位(读写控制),0:写方向,1:读方向

2.IIC总线模拟方法
IIC总线主要模拟IIC通讯协议的各个基本信号
1)空闲信号:当SCL和SDA都保持着高电平
SCL_H
SDA_H
2)起始信号:当SCL在高电平期间,SDA出现由高到低的跳变(下降沿),表示通讯开始
SCL_H
SDA_H
IIC_Delay   >4.7us   //SCL维持至少4.7us后才能拉低SDA
SDA_L
IIC_Delay   >4.0us   //SDA拉低后至少保存4.0us
SCL_L
3)停止信号:当SCL在高电平期间,SDA出现由低到高的跳变(上升沿),表示通讯结束
SCL_L
SDA_L
SCL_H
IIC_Delay   >4.0us   //SCL维持至少4.0us后才能拉高SDA
SDA_H
IIC_Delay   >4.7us   //结束信号和下一次起始信号之间至少间隔4.7us

4)发送应答信号
在每个字节(8个位)传输完成之后的下一个时钟脉冲(第9个时钟脉冲),在SCL为高电平期间,SDA为低电平,则表示一个应答信号
SCL_L      //SCL低电平数据才能变化
SDA_L     //产生应答信号
IIC_Delay   >4.7us   //SCL低电平宽度至少4.7us
SCL_H     //传输应答信号
IIC_Delay   >4.0us   //SCL高电平宽度至少4.0us
SCL_L

5)发送非应答信号
在每个字节(8个位)传输完成之后的下一个时钟脉冲(第9个时钟脉冲),在SCL为高电平期间,SDA为高电平,则表示一个非应答信号
SCL_L      //SCL低电平数据才能变化
SDA_H     //产生非应答信号
IIC_Delay   >4.7us   //SCL低电平宽度至少4.7us
SCL_H     //传输应答信号
IIC_Delay   >4.0us   //SCL高电平宽度至少4.0us
SCL_L

接收方调用发送应答或非应答函数,告诉发送方自己是否已经接收到数据。
6)检测应答信号
SCL_L           //准备应答信号
IIC_Delay   >4.7us   //SCL低电平宽度至少4.7us
SCL_H
IIC_Delay   >4.0us   //SCL高电平宽度至少4.0us
if( Read_SDA )         //SDA数据线读出高电平,表示非应答
{
     SCL_L
     return 0;            //检测到非应答返回0
}
SCL_L
return 1;               //检测到应答返回1

3.AT24Cxx存储芯片介绍
1)AT24Cxx芯片概述
AT24Cxx是一款EEPROM存储芯片,特点是可读可写,掉电数据不丢失。目前常用的有24C02、24C04、24C08、24C16、24C32。EEPROM存储大小单位为bit。
2)AT24C02基本功能
AT24C02内含2Kbit(256字节)存储空间,分成32页,每页8个字节。写周期为5ms.
3)AT24C02芯片管脚
第1、2、3管脚为地址输入脚。和芯片的出厂地址(1010)构成IIC通讯的器件地址。地址输入脚根据硬件原理图的连接确定,如果管脚接电源,则为1,接地则为0。
第4、8管脚分别是芯片电源正极和负极
第5、6管脚分别是IIC通讯接口的串行数据线(SDA)和串行时钟线(SCL)。
第7管脚为读写保护管脚,管脚接地(低电平)芯片可以正常读写,如果管脚接电源(高电平)时,表示芯片仅仅可读。
3)AT24C02芯片时序操作
①字节写操作
起始信号 --- 芯片地址(4+3+1) --- 检测应答 --- 发送芯片内部地址 --- 检测应答 --- 发送一个字节数据 --- 检测应答 ---- 停止信号
②页写操作
起始信号 --- 芯片地址(4+3+1) --- 检测应答 --- 发送芯片内部地址(存储数据的起始地址) --- 检测应答 ---- 发送一个字节数据 --- 检测应答 --- 再发送一个字节数据 ---- ......(每发送完一个字节数据之后,需要检测应答一次) ---- 停止信号
注意:AT24C02的地址在一个页内可以自增,但是不能跨页
③单字节读操作
起始信号 ---- 芯片地址(4+3+1,注意:此时的读写方向为写方向) ---- 检测应答 --- 发送芯片内部地址 --- 检测应答 ---- 起始信号 ---- 芯片地址(4+3+1,注意:此时的读写方向为读方向) --- 检测应答 ----- 读取一个字节数据 ---- 发送一个不应答信号 --- 停止信号
④连续读操作
起始信号 ---- 芯片地址(4+3+1,注意:此时的读写方向为写方向) ---- 检测应答 --- 发送芯片内部地址 --- 检测应答 ---- 起始信号 ---- 芯片地址(4+3+1,注意:此时的读写方向为读方向) --- 检测应答 ----- 读取一个字节数据 ---- 发送一个应答信号 --- 再读取一个字节数据 ---- 再发送一个应答信号......(每读取一个字节数据,就需要发送一次应答信号)直到不再读取---- 发送一个不应答信号 ---- 停止信号
注意:读操作时,地址可以跨页自增。

4.IIC器件编程思路
1. 软件模拟实现IIC通讯的各个基本时序信号
1)起始信号
2)停止信号
3)发送应答和非应答
4)检测应答
2.根据IIC器件数据手册,编写IIC器件通讯过程
电话,15818662231






路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部