学无止境
分类: 嵌入式
2010-08-02 01:33:13
时钟控制逻辑单元能够产生2440需要的时钟信号。包括:CPU使用的主频FCLK,AHB总线使用的HCLK。AHB总线上的设备:内存控制,中断控制,LCD控制,DMA以及USB主模块。APB总线设备上使用的PCLK。APB总线的设备:WTD,IIS,IIC,PWM,MMC,ADC,UART,GPIO,RTC,SPI。
FCLK的启动过程(参考2410完全开发手册)
1、上电几毫秒后,晶振输出稳定,FCLK=晶振频率,
nRESET恢复高电平信号后,CPU开始执行指令。
2、在程序的开头启动MPLL,在设置MPLL的几个寄存器后需要等待一段时间(lock time),MPLL的输出才稳定。在这段(lock time)内,FCLK停振,CPU停止工作。Lock Time的长短由LOCKTIME设定。
3、Lock Time之后,MPLL输出正常。
注意:数据手册有这样的一句话虽然MPLL在reset以后就开始工作,但是MPLL输出(Mpll)没有作为系统时钟来使用,知道软件对MPLLCON寄存器写入有效设置。有效设置前或外部时钟源的时钟直接当作系统时钟来使用。就算是用户不想改变MPLLCON的默认值,用户应该再重新写入NPLLCON寄存器一次相同的值。
寄存器设置:
1、LOCKTIME设置为默认值0xffffffff
2、Mpll(FCLK)=(2*m*Fin)/(p*2^s)
m=(MDIV+8),p=(PDIV+2),s=SDIV
我们设置输出频率FCLK=400M 查数据手册当FCLK=405M时,MPLLCON=0x7f021。
3、CLKDIVN=0x5 //1:4:8
PCLK=50M,HCLK=100,FCLK=400
4、数据手册中有一段这样的描述:如果HDIVN不为0,根据如下指令,CPU总线模式从Fast Bus Mode变为Asynchronous(异步总线模式)
参考vivi代码设置如下:
|
head.s代码如下:
|
c代码和流水灯的一样,编译下载到开发板流水灯流水速度明显加快。