理论上CPU在操作某存储器前要插入几个等待周期,且它是可以计算的,在CPU 的datasheet内都有相关信息,只要知道CPU的时序(如48MHz)及存储器的执行速度(如90ns)就可以得出理论的等待周期(waiting cycle)数。但实际上一般开始我们会将此值设大一点(CPU存取存储器的速度会慢一些),等系统稳定下来后在慢慢调整系统各模块的时序。
(6)GPIO Port
当CPU把CS由高电平拉到低电平时,该IC开始动作,经过T1时间后,IC会把数据放到P#1端口上,维持的时间为T2。在这种情况下,程序如何在正确的时间里到P#1上获取正确的数据?
通常执行取数据的时间很短,不会超过T2,假设T1=10ms,那该如果编写相应的驱动程序及如何确定10ms这个时间段呢?
/****************************************************
Function: drv_read_XXXIC_status
return 0 if P#1 is low,1 if P#1 is high
*****************************************************/
int drv_read_XXXIC_status(void)
{
int i;
int P1_status;
//将CS PIN设为低电平
//
drv_set_XXXIC_CS_Low();
可用地址读取,但必须下命令写入的 NOR Flash:它里面的数据虽然可以更改,但不像写RAM(通过地址与数据总线就可以)那么简单,需要CPU对其下命令才行。且对NOR Flash写入必须以块(Block)为单元,一般是16KB或8KB大小,还要先对块做擦除。正因如此,NOR Flash的写入性能很差,一般将其作为ROM的替代品,以免除ROM不可更改的缺陷。另外还可以作为存储或备份执行时期的数据,因为它断电后数据不会丢失。例如用户的配置、录音数据等。