作者:shisifeiya 日期:2010-8-1
吴厚航同学在他的一篇博文提到了其测得单片机(11.0592MHz的STC89C52)的扩展RAM读写时序如下图:
使用了如下程序:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar xdata LD _at_ 0x7fff;
void delay(uint cnt)
{ uint i;
for(i=0;i<cnt;i++);
}
void main(void)
{ uchar i;
delay(1000);
while(1)
{LD = 0x00;
LD = 0xf0;
LD = 0x73;
// i = LD;
delay(1000);
LD = 0xff;
delay(1000);
}
}
他还总结了:“第一次LD读操作需要5个指令周期外(1.085us*5),以后每次LD读操作都只要3个指令周期(1.085*3)。这也是从汇编的代码里仿真后得出来的结论。而从上图也可以知道CS有效时间其实是一个指令周期(1.085us)。”可是依据我测得的图形,和他所说的第一次“第一次LD读操作需要5个指令周期外”不一样,我测得的还是3个指令周期。
以下我将使用Winbond的PLCC封装的 W78LE516和22.1184Mhz晶振的电路,工具为4通道的Tektronix DPO4104数字荧光示波器作说明。
为了方便观察4个写脉冲,程序修改为:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar xdata LD _at_ 0x7fff;
void delay(uint cnt)
{ uint i;
for(i=0;i<cnt;i++);
}
void main(void)
{ delay(1000);
while(1)
{LD = 0x00;
LD = 0xf0;
LD = 0x73;
LD = 0xff;
delay(3);
}
}
探针设置为1为D0,2为WR,3为ALE,4为CS,波形如下图。在CS低电平时间,ALE低电平时间和吴厚航同学测得数据是一致的。下图探针1的波形在第一个上升沿很陡,但到后边有两个怪异的缓慢的上升沿。
为了观察地址和数据复用的现象,我把写外部存储器的地址改成uchar xdata LD _at_ 0x7ffe。探针设置为1为D0,2为WR,3改为D2,4为CS,波形如下图。
探针设置为1为D0,2为WR,3改为ALE,4为CS,波形如下图。脉冲宽度的大概情况:ALE为86ns, CS为534ns,CS的下降沿到WR的下降沿为 176ns, WR为 274ns,WR的上升沿到CS的上升沿为 86ns,第一个CS上升沿到第一个CS下降沿的为1.09us。可以得到写一个外部寄存器的周期为3个CS低电平的时间。
吴同学的实践图纠正了我以前的被一款PMOLED驱动芯片时序图引导的认识错误,误认为单片机数据信号是在WR变为低之后才给出的。此芯片是业界PMOLED显示屏大量使用的驱动芯片,时序图如下。
附三张W78LE516的时序图。
再附两张S3C2440A RISC MICROPROCESSOR的读写外部SRAM时序图,主要是为了认清片选、数据、地址相对的有效边沿时间,以扩展知识。
文章评论(0条评论)
登录后参与讨论