第八章 单片机常用总线讲解
void respons() {
uchar i=0; SCL=1; delay();
while((SDA==1)&&(i<255)) i++; SCL=0; delay(); }
SCL在高电平期间,SDA被从设备拉为低电平表示应答。上面代码中有一个(SDA==1)和(i<255)相与的关系,表示若在一段时间内没有收到从器件的应答则主器件默认从器件已经收到数据而不在等待应答信号,这一点是作者后加的一步,大家可不必深究,因为如果不加这个延时退出,一旦从器件没有发送应答信号,程序将永远停止在这里,而真正的程序中是不允许这样的情况发生的。 (4) 停止信号
void stop() //SCL在高电平期间,SDA一个上升沿停止信号。 {
SDA=0; delay(); SCL=1; delay(); SDA=1; delay(); }
(5) 写一个字节
void writebyte(uchar date) {
uchar i,temp; temp=date;
. . ..
for(i=0;i<8;i++) {
Temp=temp<<1; SCL=0; delay(); SDA=CY; delay(); SCL=1; delay(); }
SCL=0; delay(); SDA=1; delay(); }
串行发送一个字节时,需要把这个字节中的8位一位一位地发出去,“Temp=temp<<1;”表示将temp左移—位,最高位将移入PSW寄存器的CY位中,然后将CY赋给SDA进而在SCL的控制下发送出去。 (6) 读一个字节
uchar readbyte() {
uchar i,k; SCL=0; delay(); SDA=1; for(i=0;i<8;i++) {
SCL=1; delay(); k=(k<<1)|SDA;
.v .. ..
第八章 单片机常用总线讲解
SCL=0; delay(); } delay(); return k; }
同样的,串行接收——个字节时需将8位一位一位地接收,然后再组合成一个字节,上面代码中我们定义了一个临时变量k,将k左移一位后与SDA进行“或″运算,依次把8个独立的位放入一个字节中来完成接收。 8.1.4 总线实例应用(AT24C02)
具有
总线接口的
PROM有多个厂家的多种类型产品。在此仅介绍ATMEL公司生
产的AT24C系列PROM。主要型号有AT24C01/02/04/08/16等,其对应的存储容量分别为
128x8/256x8/521x8/1024x8/2048x8。采用这类芯片可解决掉电数据保存问题,可对所存数据保存100年.并可多次擦写,擦写次数可达10万次以上。
在一些应用系统设计中,有时需要对工作数据进行掉电保护,如电子式电能表等智能化产品。若采用普通存储器,在掉电时需要备引电池供电,并需要在硬件上增加掉电检测电路。但存在电池不可靠及扩展存储芯片占用单片机过多口线的缺点。采用具有
总线接口的串行
PROM器件可很好地解决掉电数据保存问题,且硬件电路简单。下面以AT24C02芯片为例,介绍具有
总线接口的
PROM的具体应用。
AT24C02芯片的常用封装形式有直插(DIP8)式和贴片(SO-8)式两种,实物图分别如图8.1.6和图8.1.7所示。
图8-6直插式AT24C02 图8-7 贴片式AT24C02
. . ..
无论是直插式还是贴片式,其引脚功能与序号都一样,引脚图如图8.1.8所示。
图8-8 AT24C02引脚图
各引脚功能如下:
1,2,3,(A0、A1、A2)——可编程地址输入端。 4(GND)——电源地。
5(SDA)——串行数据输入/输出端。 6(SCL)——串行时钟输入端。
7(WP)——写保护输入端,用于硬件数据保护。当其为低电平时,可以对整个存储器进行正常的读/写操作;当其为高电平时,存储器具有写保护功能,但读操作不受影响。 8(
)——电源正端。
2.存储结构与寻址
AT24C02的存储容量为2KB,内部分成32页,每页8B,共2S6B,操作时有两种寻址方式;芯片寻址和片内子地址寻址。
(1)芯片寻址。AT24C02的芯片地址为1010,其地址控制字格式为1010A2A1A0R/W。其中A2,A1,A0为可编程地址选择位。A2,A1,A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。R/W为芯片读写控制位,该位为0,表示对芯片进行写操作;该位为1,表示对芯片进行读操作。
(2)片内子地址寻址。芯片寻址可对内部256B中的任一个进行读/写操作,其寻址范围为00~FF,共256个寻址单元。 3.读/写操作时序 串行
PROM一般有两种写入方式:一种是字节写入方式,另一种是页写入方式。页写入
------
方式允许在一个写周期内(10ms左右)对一个字节到一页的若干字节进行编程写入,AT24C02的页面人小为8B。采用页写方式可提高写入效率,但也容易发生事故。AT24C系列片内地址
.v .. ..
第八章 单片机常用总线讲解
在接收到每—个数据字节后自动加1,故装载—顷以内数据字节时,只需输入首地址,如果写到此页的最后—个字节,主器件继续发送数据,数据将重新从该页的首地址写入,进而造成原来的数据丢失,这就是页地址空间的“上卷”现象。
解决“上卷”的方法是:在第8个数据后将地址强制加1,或是将下一页的旨地址重新赋给寄存器。
(1)字节写入方式。单片机在—次数据帧巾只访问
PROM一个单元。该方式下,单片机
先发送启动信号,然后送—个字节的控制字,再送一个字节的存储器单元子地址,上述几个宁节都得到示。
PROM响应后,再发送8位数据,最后发送1位停止信号。发送格式如图8.1.9所
图8-9字节写入方式发送格式
(2)页写入方式。单片机在一个数据与周期内可以连续访问1页(8个)PROM存储单元。在该方式中,单片机先发送启动信号,接着送个字节的控制字,再送1个字节的存储器起始单元地址,上述几个字节都得到
PROM应答后就可以发送最多1页的数据,并顺序存放在以指定
起始地址开始的相继单元中,最后以停止信号结束。页写入帧格式如图8.1.10所示。
图8-10页写入帧格式
(3)指定地址读操作。读指定地址单元的数据。单片机在启动信号后先发送含有片选地址的写操作控制字,PROM应答后再发送1个(2KB以内的
PROM)字节的指定单元的地
PROM做出应答,被访问
址,PROM应答后再发送1含有片选地址的读操作控制字,此时如果
单元的数据就会按SCL信号同步出现在串行数据/地址线SDA上。这种读操作的数据帧格式
单片机常用总线讲解
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)