ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

s3c2440裸机-内存控制器(三-2、norflash编程实现)

2020-05-09 14:05:07  阅读:335  来源: 互联网

标签:70ns 裸机 地址 norflash 信号 s3c2440 Tacc nor 片选


2.初始化nor,配置nor时序

1.如图是S3C2440的内存控制器的可编程访问周期读写时序,里面的时间参数要根据外部设备的性能进行配置,这里先列出时间参数的含义:

Tacs: Address set-up time before nGCSn(表示地址信号A发出多久后才能发出nGCS片选)

Tcos: Chip selection set-up time before nOE(表示片选信号nGCS发出多久后才能发出读使能信号)

Tacc:access cycle(数据访问周期)

Tacp:page模式下的访问周期

Tcoh:Chip selection hold time after nOE (nOE信号释放多久后才能释放片选nGCS)

Tcah:Address hold time after nGCSn (片选nGCS释放多久后才能释放地址信号A)

2.我们现在来根据外部norFlash的手册来配置我们的寄存器来设置时序。

我们知道,当从nor启动时,此时nor对应0地址,CPU从0地址读取第一条指令,成功执行。那么问题来了,此时并没有对内存控制器进行设置,去初始化nor,那为什么还能访问norflash呢,还能从0地址取指令执行呢?

答:肯定是CPU配置的默认时序就能兼容此款flash。

下面我们根据此款norflash(MX29LV160D)手册中的访问时序图来分析,如下图:


(1)先发送地址信号A
(2)发送片选CE
(3)发送读使能OE
(4)往数据总线放上数据
(5)释放信号...

从表中我们看见:

发出地址数据(Addresses)后,要等待Taa(最少70ns)时间,地址数据才有效;
发出片选信号(CE#)后,要等待Tce(最少70ns)时间,片选信号才有效;
发出读信号(OE#)后要等待Toe(最少30ns)时间,读信号才有效;

而且表中Tas可以为0,那么说明地址信号、片选、读使能可以一起发出。为了简单我们把地址(Addresses),片选信号(CE#),读信号(OE#),同时发出,然后让它们都等待70ns即可(等待信号有效)。

我们再看看上面的nor访问时序图,释放地址、片选、读使能信号都没有时间差值dt要求,那么说明地址、片选、读使能信号可以同时释放。

在来看内存控制器的配置

(1)配置数据访问周期Tacc:

从上图可以看到Tacc的默认值是111,对应14个clocks。系统上电采用12MHz的晶振,HCLK=OSC=12MHz,那么Tacc=(1/FCLK) x 14=(1000/12) x 14≈1166ns,这个值很大,几乎可以满足所有NorFlash的要求,这也是为什么我们不做初始化也能访问norflash的原因。

启动后,由于我们的时钟HCLK设置成了100MHz,T=1000/100=10ns,Tacc= 10ns*14 >70ns, 所以不配置也能访问的。为了让访问速率加快,因此设置Tacc>70ns即可,配置成101,8个clocks即可。

(2)配置Tacs,Tcos,Tcoh,Tcah:

从nor的分析中,我们得知地址、片选、读使能同时发出和同时释放,所以配置Tacs,Tcos,Tcoh,Tcah皆为0。

代码如下:
BANKCON0 = (*(volatile unsigned long *)(0x48000004));
void bank0_tacc_set(int val)
{
	BANKCON0 = val << 8;
}

3.测试

int main(void)
{
	unsigned char c;
	
	uart0_init();//参考前面的uart编程
	puts("Enter the Tacc val: \n\r");
	
	while(1)
	{
		c = getchar();
		putchar(c);
		if (c >= '0' && c <= '7')
		{
			bank0_tacc_set(c - '0');
			led_test();//跑马灯代码我就不贴了,谁都会
		}
		else
		{
			puts("Error, val should between 0~7\n\r");
			puts("Enter the Tacc val: \n\r");
		}
	}
	return 0;
}

实验效果:

输入0~4,Tacc小于70ns,无法读取Nor Flash上数据,LED不能闪烁。

输入5~7,Tacc大于70ns,可以读取Nor Flash上数据,LED不断闪烁,且值越小越快。

标签:70ns,裸机,地址,norflash,信号,s3c2440,Tacc,nor,片选
来源: https://www.cnblogs.com/fuzidage/p/12857023.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有