我们知道,时序图分为理想时序图和实际工作时序图。理想时序忽略了实际高低电平转换时间,而我们实际写程序过程中更希望看到的是实际工作时序图,更清晰明确。
关于读懂时序图写时序
图1 理想时序与实际时序
物理时序图只要保持操作顺序上的一致性即可。下面我们以8080总线和某spi、IIC总线为例来说明如何通过时序图写逻辑时序:
1.下面是某lcd基于8080总线的读写时序:
关于读懂时序图写时序
其实这个图主要就是区分WR写控制线和数据线的顺序问题了。根据操作顺序,先将NCE片选拉低,然后命令/数据控制线RS置响应位,WR先置低,然后D数据线输出,WR再拉高即可。查看>=0ns为WR置高后至少数据D保持之间,显然,单片机写完数据口是一直保持的,满足条件。因此写逻辑时序即:
{
NCE 拉低;
RS置响应位;
WR低;
D数据输出;
WR高;
}
关于读懂时序图写时序
8080读时序主要也是区分RD与数据D的操作先后顺序问题,前面一个<=1ns是指RD置低后在1ns内D数据口的数据就已经是有效数据了,也就是意味着只要RD指令与后面接着的读数据指令间隔大于1ns就能准备独缺数据!!(换种情况比如这里是<=20us,而我们32输入采样为13ns,那么你这就应当在RD与读取值之间加个延时来保证读到的是有效值了)这里的后面第二个<=1ns是指在RD为高电平期间,D口在1ns内之前必须读完。注意对于读时序来说D整个时间是表示数据口可读有效数据时间段(也就是输入数据维持时间),因此在这个时间段内任意时间读取数据都是正确的。这就是说RD置低后,接着我们数据口置为输入,只要在RD再置高后1ns之前的时间段内读取值均为有效的!因此读时序可以这样写:
{
NCE片选拉低;
RS根据需求置位;
RD置低;
D读取数据;
RD置高;
}

2.下面是某OLED 4线spi模式下时序图
关于读懂时序图写时序
这个也很简单,主要是看数据位SDIN与时钟SCLK的关系,即写时序为
{
SCLK置低;
SDIN 某bit位输出;
SCLK置高;
}
3.下图是IIC的时序图,这里只讲数据传输部分为例 ,我们看到是时钟先置低,数据传输
关于读懂时序图写时序
{
SCL置低;
SDA数据位传输;
SCL置高
}

对应时钟和数据的时序关系:
我们关心的是有效时间段内时序的变化,即导致数据锁存的上升沿或下降沿段与数据的关系。保证保持时间连续稳定且达到要求。

相关文章: