单片机 第五章课件Word文档下载推荐.docx
- 文档编号:1394552
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:18
- 大小:147.80KB
单片机 第五章课件Word文档下载推荐.docx
《单片机 第五章课件Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机 第五章课件Word文档下载推荐.docx(18页珍藏版)》请在冰点文库上搜索。
2)数据传输与起停///gd
IIC总线上的主要通信协议:
在总线进行正常数据传输时,如果时钟线CLK处于高电平,数据线DATA上必须保持稳定电平,接收器从总线上读取数据,高电平代表数据1,低电平为数据0。
只有CLK为低电平时,才允许数据发送器变化数据,将待发送位写到数据线上。
IIC总线数据交换的起始和停止信号靠时钟线和数据线的不同状态组合产生。
时钟线保持高电平时,数据线电平由高到低的跳变为起始信号,由低到高的跳变为停止信号。
总线时钟信号,由当前主控器发出,也就决定了什么时候发出起始和停止信号。
主器件在发出起始信号后,送出地址字节,其中高7位是总线上各个器件的编码地址;
第8位是方向位(R/W),表明主器件与从器件间的数据传输方向;
0表示主器件对从器件进行写操作,1表示主器件对从器件进行读操作;
第9位是接收方的应答;
然后是8位数据字节+ACK(应答);
最后是停止信号。
3)数据传输的三种方式
(1)主器件写
(2)主器件读
(3)组合方式
4)寻址约定
IIC总线利用起始信号第一个(或前几个)字节传送地址,软件地址至少长7位。
第一个字节的高7位是从器件地址;
包括固定地址和可编程地址两部分,例如IIC总线分配给8路,7位DAC器件的地址为0100AAA,其中高4位0100是固定地址,低3位AAA是可编程地址。
可以用固定地址对器件分类;
而用可编程地址对系统中多个相同器件编址。
固定地址第一字节的高4位为1111或0000时的特殊规定见表5-4。
表5-4IIC总线的特殊寻址字节
第一字节
意义
A6A5A4A3A2A1A0
R/W
呼叫地址及读/写控制
0000000
起始字节(广播地址)
1
CBUS地址
0000001
*
为不同总线而保留的地址
0000010
保留
0000011
00001**
00000**
11110**
10位寻址
第一个字节的前5位是11110,表示此次寻址是10位寻址方式,A1,A0两位和第二个字节的8位组成10位地址。
方向位在第一个字节末尾位R/W位,各从器件应对之进行记录,再等待第二个字节。
对第一个字节,应由高两位地址相符的所有器件给出应答,而对第二字节,只有地址完全相同的器件给出应答信号。
10位地址扩大了地址空间,但IIC总线原有的协议不变,可以与7位地址同时接入总线。
S
X
ACK
5)设备内部总线与IIC总线的接口
设备内部的并行总线与IIC总线的接口有两种方式:
中断和查询。
中断方式需要IIC总线专用的接口芯片;
查询方式在不进行传输时,应尽量采用较低频率查询总线,使CPU有更多时间用于执行其他任务。
6)仲裁
IIC总线支持多个主器件操作。
当多个主器件申请总线控制权时,并没有优先次序,需要系统进行总线裁决,决定哪一个主器件能够得到总线控制权。
2.串行EEPROM扩展
IIC总线标准的串行存储器有24XXXX系列和85XXXX系列,包含1~256KB等不同规格的容量。
下面介绍24XXXX系列的基本原理的扩展实例。
24XXXX的特点是单电源供电,工作电压范围为2.5~5.5V,CMOS低功耗技术(100kHz,2.5V和400kHz,5V兼容),自定时写周期(包含自动擦除),页面写周期的典型值为2ms,具有硬件写保护。
24XXXX的结构和引脚如图5-20所示。
其中:
SCL——串行时钟端。
SDA——串行数据端。
WP——写保护,当WP为高电平时存储器只读;
当WP为低电平时存储器可读可写。
A0、A1、A2——片选或块选。
SDA为漏极开路端,需接上拉电阻Vcc。
数据的结构为1B。
信号为电平触发,而非边沿触发。
输入端内接有滤波器,能有效抑制噪声。
自动擦除(逻辑1)在每一个写周期内完成。
24XXXX采用IIC规程,运用主/从双向通信。
器件发送数据到总线上,则定义为发送器,器件接收数据则定义为接收器。
主器件(通常为微控制器)和从器件可工作于接收器和发送器状态。
总线必须由主器件控制,主器件产生串行时钟(SCL),控制总线的传送方向,并产生起始和停止条件。
串行EEPROM为从器件。
无论主控器件,还是从控器件,接收一个字节后必须发出一个确认信号ACK。
起始和停止位控制总线有效。
操作在起始位控制下开始,在停止位控制下结束。
起始位SCL为低,SDA由高到低变化。
停止位SCL为高,SDA由低到高变化。
当SCL为高时,数据稳定有效。
在SCL脉冲的低电平期间数据SDA改变,变为所传输的数据位。
对每一个SCL脉冲,只能传送一位数据。
1)控制字节要求
起始位以后,主器件送出8位控制字节。
控制字节的结构(不包括起始位)如表5-5所示:
表5-5控制字节的结构
1010
A2A1A0
IIC从器件地址
片选或块选
读/写控制位
说明:
(1)控制字节的高4位用来确认从器件的类型,此4位码由Philips公司的IIC规程规定。
若从器件为串行EEPROM,则这4位码为1010。
通常串行EEPROM器件一直处于等待状态,直到1010码发送到总线上为止。
当1010码发送到总线,其他非串行EEPROM从器件均不会响应。
(2)控制字节的A2A1A0三个控制位为片选位,或者为存储器内部的块地址选择位。
按3线—8线译码组合,最多可有8片片选或块选。
标准的IIC规程允许选择16KB的存储器,通过对几片器件或一个器件内的几个内部块的存取,可完成对16KB存储器的选择,如表5-6所示。
表5-624XXXX的A2A1A0
器件
容量
(kb)
内部
块数
页面
字节
引脚
控制字(位)
A2A1A0
A2A1A0
24C01
8
均为片选位
与引脚匹配
24C02
2
24C04
4
16
片选片选块选
24C08
片选块选块选
24C16
均为块选
控制字节的A2A1A0的选择必须与外部引脚的硬
件连接或者内部块选择匹配。
24XXXX的存储矩阵内部分为若干块,每一块有若干页面,每一页面有若干字节,内部页缓冲器每次只能写入一页字节数据。
(3)控制字节最低位为读/写操作控制码。
如果此位为1,下一个字节进行读操作(R);
此位为0,下一个字节进行写操作(W)。
当串行EEPROM产生控制字节确认位以后,主器件在总线上将传送相应的字地址或数据信息。
2)确认要求
在每一个字节接收后,接收器件必须产生一个确认信号位ACK,主器件必须产生一个与此确认位相应的额外时钟脉冲。
在此时钟脉冲的高电平期间,将SDA线拉到稳定的低电平为确认信号(ACK)。
若不在从器件输出的最后一个字节中产生确认位,主器件必须发一个数据结束信号给从器件。
在这种情况下,从器件必须保持数据线为高电平(用ACK表示),使得主器件能产生停止条件。
注意,如果内部编程周期(烧写)正在进行,24XXXX不产生任何确认位。
3)写操作
(1)字节写
在主器件发出起始信号以后,主器件发送写控制字节,即1010A2A1A00(其中R/W控制位为低电平)。
指示从接收器件被寻址,由器件发送的下一个字节地址将被写入到24XXXX的地址指针。
主器件接收来自24XXXX的另一个确认信号以后,发送数据字节,并写入到寻址的存储地址。
24XXXX再次发出确认信号,同时主器件产生停止信号P,启动内部写周期。
在内部写周期内24XXXX将不产生确认信号(见图5-21)。
(2)页面写
如同字节写方式,先将写控制字节、字地址发送到24XXXX,接着发n个数据字节。
主器件发送不多于一个页面字节的数据字节到24XXXX,这些数据字节暂存在片内页面缓存器中,在主器件发送停止信号以后写入到存储器。
接收每一个字节以后,低位顺序地址指针在内部加1。
高位顺序字地址保持为常数。
如果主器件在产生停止信号以前要发送多于一页字的数据,地址计数器将会循环,并且先接收到的数据将被覆盖。
像字节写操作一样,一旦停止信号被收到,则内部写周期将开始(见图5-22)。
(3)写保护
当WP端连接到Vcc,24XXXX被用作串行ROM,此时编程将被禁止,即整个存储器为写保护状态。
4)读操作
当从器件地址的R/W位被置为1时,启动读操作。
存在三种基本读操作类型:
读当前地址内容、读随意地址内容、读顺序地址内容。
(1)读当前地址内容
24XXXX片内包含一个地址计数器,此计数器保持被存取的最后一个字的地址,并在片内自动加1。
因此,如果以前存取(读或者写操作均可)的地址为n,下一个操作从n+1地址中读出数据。
在接收到从器件的地址中R/W位为1的情况下,24XXXX发送一个确认位并且送出8位数据字。
主器件将不产生确认位(相当于产生ACK),但产生一个停止信号。
24XXXX不再继续发送(见图5-23)。
(2)读随意地址内容
这种方式允许主器件读存储器任意地址的内容,操作如图5-24所示。
主器件发1010A2A1A0后,发W位,再发读的存储器地址,在收到从器件的确认位ACK后,产生一个起始条件S,以结束上述写过程,再发一个读控制字节,从器件24XXXX在发ACK信号后发出8位数据,主器件发ACK后发一个停止位,24XXXX不再发后续字节。
(4)读顺序地址内容
读顺序地址内容的方式与读随意地址内容的方式相同,只是在24XXXX发送第一个字节(数据n)以后,主器件不发ACK和停止信号,而是发ACK确认信号,控制24XXXX发送下一个顺序地址的8位数据字,直到x个数据读完(见图5-25)。
(5)防止噪声
24XXXX使用了一个Vcc门限检测电路。
在一般条件下,如果Vcc低于1.5V,门限检测器对内部擦/写逻辑不使能。
SCL和SDA输入端接有施密特触发器和滤波器电路,即使在总线上有噪声存在的情况下,它们也能抑制噪声峰值以保证器件正常工作。
5)串行EEPROM和8051接口
图5-26为8051单片机与4KB的24C04串行EEPROM的典型连接。
图中P1.6提供24C04的时钟SCL,P1.7和24C04进行数据传送。
A2、A1、A0为选片端,此处仅用一片24C04芯片,可将此三位直接接地,以使片选A2、A1、A0为全0。
但24XXXX芯片也约定此三位如悬空即内部自动拉为地电平,故图5-26中A2A1A0对外悬空,即表示A2A1A0接地,所以在控制字节中A2A1A0三位均为0。
图中的WP为EEPROM的写保护信号,高电平有效。
因要进行写入操作,所以应把它接低电平。
下面为模拟IIC总线数据传送编程。
24XXXX系列是采用了IIC接口的串行EEPROM器件。
而51系列单片机大多无IIC总线接口功能,这就要靠软件来模拟了。
IIC总线在标准方式下的最高时钟频率为100kHz,时钟信号最小低电平时段为4.7us,高电平时段不得小于4us,这就决定了器件的最大数据传送率不大于10kb/s。
可用展宽tLOW的办法来降低数据传送率。
用普通I/O线模拟IIC总线数据传送时,必须遵从定时规范。
图5-27单独绘出了启动、停止、发送应答ACK(0数据位)以及发送反态应答位(1数据位)的时序规范。
现将常用的程序段编成子程序。
#include<
reg51.h>
absacc.h>
Typedefunsignedcharbyte;
Typedefunsignedintword;
SbitSDA=P1^0;
SbitSCL=P1^1;
/*********************************
*文件名:
c24cx2.c
*描述:
IIC总线存储器驱动,供调用
有函数:
sartIIC(),stopIIC(),outbyte(),
Inbyte(),Ack-IIC(),read24(),write24()
*********************************/
#include<
intrins.h>
VoidstartIIC(void)
{SDA=1;
-nop-();
SDA=0;
SCL=0;
}///zg
VoidstopIIC(void)
{
SDA=0;
SCL=1;
SDA=1;
}
/*********************************
*函数名:
outbyte
*描述:
向IIC总线送出一个字节SDA
*输入:
要写入的字节
*返回:
1,写入成功;
0,写入失败
bitoutbyte(byteval)
bitack;
bytei=8;
do{
SDA=val&
0x80;
//此时根据val最高位的值,与0x80相与后其结果只可能是0/1
val<
<
=1;
_nop_();
SCL=0;
}while(--i!
=0);
ack=!
SDA;
//读入SDA并取反——从器件发来的ack信号,正常的ack应该是低
//电平。
returnack;
//如果ack=0,写失败。
inbyte
从IIC总线读出一个字节
无
从IIC总线读出的字节
byteinbyte(void)
{bytet=0,i=8;
SDA=1;
Do{
t<
if(SDA)t++;
returnt;
Ack-IIC
IIC总线的应答信号Acknowledge
1位,正应答输入1;
负应答输入0;
无
VoidAck-IIC(bita)
SDA=a;
read24
从IIC总线存储器24C02中读出一个指定字节
要读出的字节地址
*返回:
读出的字节
Unsignedcharread24(unsignedcharaddress)
Dataunsignedchardd;
startIIC();
outbyte(0xa0);
//24C02
outbyte(address);
outbyte(0xa1);
dd=inbyte();
ACK-IIC
(1);
stopIIC();
returndd;
write24
向IIC总线存储器24C02中写入一个指定字节
要写出的字节地址和字节内容
Voidwrite24(unsignedcharaddress,byteval)
outbyte(va1);
ackpol
向IIC总线存储器24C02中写入一个指定字节后查询是否写完
1位。
返回0写入成功,返回1写入错误
Bitackpol(void)
Bytect2=0xf0;
StartIIC();
If(outbyte(0xa0))
{stopIIC();
return0;
}
}while(--ct2!
Return1;
III、本课小结
掌握iic的eeprom芯片的编程方法。
IV、作业
以内部RAM30H开始的8个数据写入IIC的EEPROM24c02的第二页。
编出完整的C51程序。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 第五章课件 第五 课件