S3C2440A数据书册阅读笔记.docx
- 文档编号:10610110
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:32
- 大小:968.01KB
S3C2440A数据书册阅读笔记.docx
《S3C2440A数据书册阅读笔记.docx》由会员分享,可在线阅读,更多相关《S3C2440A数据书册阅读笔记.docx(32页珍藏版)》请在冰豆网上搜索。
S3C2440A数据书册阅读笔记
第七章时钟和电源管理模块
【概述】
1、包括三部分:
时钟控制、USB控制和电源控制。
2、时钟控制逻辑产生三种必需的时钟信号,即FCLK、HCLK和PCLK,其中FCLK用于CPU、HCLK用于AHB总线外设、PCLK用于APB总线外设。
3、两个PLL,一个用于FCLK、HCLK和PCLK;另一个用于USB模块。
4、电源管理模块具有四种模式:
NORMAL模式、SLOW模式、IDLE模式和SLEEP模式。
4.1、NORMAL模式:
CPU和所有外设都工作。
该模式下,功耗最大,它允许用户通过软件来控制外设的运行。
4.2、SLOW模式:
非PLL模式。
与NORMAL模式不同,该模式不使用PLL,而是直接使用外部时钟(XTIpll或者EXTCLK)作为FCLK。
4.3、IDLE模式:
仅断开CPU的时钟(FCLK)而仍给其他所有外设提供时钟。
任何发给CPU的中断请求都会从该模式中唤醒。
4.4、SLEEP模式:
该模式断开内部电源,因此除了唤醒逻辑外,CPU和内部其他逻辑都没有功耗。
激活SLEEP模式需要两套独立的电源,一套供给唤醒逻辑,另一套供给CPU和内部其他逻辑,且能被poweron/off控制。
该模式下,CPU和内部其他逻辑的电源处于关闭状态。
从SLEEP模式唤醒可以通过EINT[15:
0]或者RTC告警中断。
【时钟】
1、时钟源选择
通过OM[3:
2]的状态来选择时钟源,OM[3:
2]的状态在nRESET信号的上升沿通过锁存OM3和OM2引脚的电平来得到。
表1启动时时钟源选择
OM[3:
2]模式
MPLL状态
UPLL状态
主时钟源
USB时钟源
00
ON
ON
Crystal
Crystal
01
ON
ON
Crystal
EXTCLK
10
ON
ON
EXTCLK
Crystal
11
ON
ON
EXTCLK
EXTCLK
备注:
(1)复位后,尽管MPLL开始工作,但MPLL的输出(Mpll)并不用作系统时钟,直到软件往MPLLCON寄存器中写入有效设置值。
而在此之前,外部晶振或者EXTCLK源将直接作为系统时钟,即使用户不想改变MPLLCON寄存器中的默认值,也需要往MPLLCON中写入该默认值才行。
(2)OM[1:
0]为11时,OM[3:
2]用于测试模式。
2、PLL
MPLL模块包括:
(1)VCO,电压控制振荡器,用于产生和输入DC电压成正比的输出频率;
(2)分频器P:
将输入频率(Fin)进行p分频;
(3)分频器M:
将VCO输出频率进行m分频,并以此作为PFD(相位频率检测器)的输入;
(4)分频器S:
将VCO输出频率进行s分频,也就是Mpll,即MPLL模块的输出频率;
(5)相位差异检测器;
(6)电荷泵;
(7)环路滤波器;
输出频率Mpll和输入时钟频率Fin符合如下方程:
Mpll=(2xmxFin)/(px2s)
m=M(即分频器M的值)+8,p=P(分频器P的值)+2;
UPLL和MPLL类似。
3、PLL和时钟发生器常用条件
环路滤波器电容
CLF
MPLLCAP:
1.3nF±5%
UPLLCAP:
700pF±5%
外部X-tal频率
-
12-20MHz
外部X-tal电容
CEXT
15-22pF
3、时钟控制逻辑
时钟控制逻辑决定了使用的时钟源,如使用PLL时钟(Mpll)或者直接使用外部时钟(XTIpll或EXTCLK)。
当PLL配置了新的频率值时,控制逻辑会禁止FCLK,直到PLL输出稳定。
控制逻辑可以在上电复位激活或者从power-down模式唤醒。
4、FCLK、HCLK和PCLK
FCLK用于ARM920T;
HCLK用于AHB总线,即ARM920T、内存控制器、中断控制器、LCD控制器、DMA和USB主机模块;
PCLK用于APB总线,即诸如WDT、IIS、I2C、PWM定时器、MMC接口、ADC、UART、GPIO、RTC和SPI这些外设。
FCLK、HCLK和PCLK的分频比值由CLKDIVN控制寄存器中的HDIVN和PDIVN决定。
设置了PMS数值后,必须设置CLKDIVN寄存器。
CLKDIVN的设置值将在PLL锁存时间之后有效。
复位或者改变电源管理模式时也可使用该值。
设置值在1.5个HCLK后也有效。
而1个HCLK后,只能确保CLKDIVN的数值从默认值(1:
1:
1)改变到其他分频比值(1:
1:
2,1:
2:
2,1:
2:
4)。
备注:
1、设置CLKDIVN时不能超过HCLK和PCLK的限制。
2、如果HDIVN不是0,采用如下指令可将CPU总线模式由快速模式切换到异步总线模式(S3C2440不支持同步总线模式)。
MMU_SetAsyncBusMode
mrcp15,0,r0,c1,c0,0
orrr0,r0,#R1_nF:
OR:
R1_oA
mcrp15,0,r0,c1,c0,0
如果HDIVN不是0且CPU处于快速总线模式,那么CPU将在HCLK下运行。
此特性可在不影响HCLK和PCLK的情况下,改变CPU的频率。
【电源管理】
1、S3C2440A具有四种电源模式,下图是各个模式之间的切换。
需要注意的是,不允许在各模式之间自由切换。
NORMAL模式:
在此模式下,所有外设和基础模块,包括电源管理模块,CPU内核、总线控制器、内存控制器、中断控制器、DMA和外部主机都在工作,但是对没给外设的时钟,除了基础模块,都可以通过软件来停止运行,以便降低功耗。
IDLE模式:
在此模式下,CPU内核时钟停止运行,但总线控制器、内存控制器、中断控制器和电源管理模块除外。
要退出IDLE模式,可通过EINT[23:
0]、或者RTC告警中断、或者其他中断来激活(EINT只有在GPIO模块开启时才能用)。
SLOW模式(非PLL模式):
此模式下,FCLK是输入时钟(XTIpll或EXTCLK)分频后的频率,而不通过PLL,分频比由CLKDIVN控制寄存器和CLKSLOW控制寄存器中的SLOW_VAL共同决定。
在SLOW模式下,PLL将关闭以降低功耗。
在SLOW模式下,当PLL关闭时,用户要将电源模式由SLOW切换到NORMAL,那么PLL需要时钟稳定时间(PLL所存时间),在PLL打开后该时间持续300us。
在PLL锁存时间,FCLK处于SLOW模式。
SLEEP模式:
此模式下,断开内部电源。
激活SLEEP模式需要两套独立的电源。
从SLEEP模式唤醒可通过EINT[15:
0]或者RTC告警中断。
按照以下流程可进入SLEEP模式:
1、设置GPIO配置为SLEEP模式;
2、在INTMSK寄存器中屏蔽所有的中断;
3、正确配置唤醒源,包括RTC告警。
4、设置USB为挂起模式(MISCCR[13:
12]=11b)。
5、将一些值保存到GSTATIS[4:
3]寄存器,这些寄存器在SLEEP模式被保留。
6、配置MISCCR[1:
0]在数据总线D[31:
0]成上拉。
如果有外部总线缓存器,如74LVCH162245,那么关闭上拉。
如果没有,打开上拉。
此外,和内存相关的引脚要设置成两种类型,一种是Hi-Z(高阻抗),另一种是非激活状态。
7、通过清除LCDCON1.ENVID位来停止LCD。
8、读rREFRESH和rCLKCON寄存器,以填充TLB。
9、通过设置REFRESH[22]=1b让SDRAM进入自刷新模式。
10、等待直到SDRAM自刷新有效。
11、设置MISCCR[19:
17]=111b,使SDRAM信号(SCLK0,SCLK1和SCKE)在SLEEP模式期间处于保护状态。
12、设置CLKCON寄存器的SLEEP模式位。
注意:
如果系统运行在NANDboot模式,从sleep模式唤醒之后,硬件引脚配置,EINT[23:
21]必须设置为输入以便启动。
【寄存器】
【LOCKTIME】锁存时间计数寄存器,0x4C000000.
LOCKTIME
位
描述
初始值
U_LTIME
[31:
16]
UPLL锁存时间计数值,用于UCLK
(U_LTIME>300us)
0xFFFF
M_LTIME
[15:
0]
MPLL锁存时间计数值,用于FCLK、HCLK和PCLK。
(M_LTIME>300us)
0xFFFF
【PLL控制寄存器】
1、MPLL控制寄存器
Mpll=(2*m*Fin)/(p*2s);m=(MDIV+8),p=(PDIV+2),s=SDIV
2、UPLL控制寄存器
Upll=(m*Fin)/(p*2s);m=(MDIV+8),p=(PDIV+2),s=SDIV
3、PLL值选择指南(MPLLCON)
1)FOUT=(2*m*Fin)/(p*2s),FVCO=(2*m*Fin)/p,此处:
m=(MDIV+8),p=(PDIV+2),s=SDIV
2)600MHz≤FVCO≤1.2GHz
3)200MHz≤FCLKOUT≤600MHz
4)不要将P或M设置为0,也就是说,设置P=000000,M=000000000会引发PLL故障。
5)P和M的正常范围:
1≤P≤62,1≤M≤248。
MPLLCON和UPLLCON:
PLL控制寄存器
MPLLCON,0x4C000004,MPLL配置寄存器;
UPLLCON:
0x4C000008,UPLL配置寄存器。
PLLCON
位
描述
初始值
MDIV
[19:
12]
主分频器控制
0x96/0x4d
PDIV
[9:
4]
预分频器控制
0x03/0x03
SDIV
[1:
0]
后分频器控制
0x0/0x0
备注:
设置MPLL和UPLL的值时,必须先设置UPLL的值,再设置MPLL的值。
(需要大概7个NOP的间隔)
PLL值选择表
备注:
48MHz和96MHz输出用于UPLLCON寄存器。
【CLKCON】时钟控制寄存器,0x4C00000C。
【CLKSLOW】时钟慢速控制寄存器,0x4C000010.
CLKSLOW
位
描述
初始值
UCLK_ON
[7]
0:
UCLKON(UPLL也打开且UPLL锁存时间自动插入);1:
UCLKOFF(UPLL也关闭)
0
Reserved
[6]
保留
-
MPLL_OFF
[5]
0:
打开PLL。
PLL稳定时间后(至少300us),SLOW_BIT清零。
1:
关闭PLL。
只有SLOW_BIT为1时才能关闭PLL。
0
SLOW_BIT
[4]
0:
FCLK=Mpll(MPLL输出);1:
SLOW模式。
当SLOW_VAL>0时,FCLK=输入时钟/(2xSLOW_VAL);
当SLOW_VAL=0时,FCLK=输入时钟;
输入时钟=XTIpll或者EXTCLK
0
Reserved
[3]
保留
-
SLOW_VAL
[2:
0]
SLOW_BIT打开时,用于慢速时钟的分频因子。
0x4
【CLKDIVN】时钟分频控制寄存器,0x4C000014。
CLKDIVN
位
描述
初始值
DIVN_UPLL
[3]
UCLK选择寄存器(对于USB,UCLK必须为48MHz)
0:
UCLK=UPLL时钟;1:
UCLK=UPLL时钟/2
当UPLL时钟为48MHz时设置为0;
当UPLL时钟为96MHz时设置为1;
0
HDIVN
[2:
1]
00:
HCLK=FCLK/1;01:
HCLK=FCLK/2;
10:
当CAMDIVN[9]=0时,HCLK=FCLK/4;
当CAMDIVN[9]=1时,HCLK=FCLK/8;
11:
当CAMDIVN[8]=0时,HCLK=FCLK/3;
当CAMDIVN[8]=1时,HCLK=FCLK/6;
00
PDIVN
[0]
0:
PCLK=HCLK/1;1:
PCLK=HCLK/2
0
【CAMDIVN】相机时钟分频器寄存器,0x4C000018。
CAMDIVN
位
描述
初始值
DVS_EN
[12]
0:
DVSOFF。
ARM核以FCLK正常运行;
1:
DVSON。
ARM核以HCLK运行。
0
Reserved
[11]
-
0
Reserved
[10]
-
0
HCLK4_HALF
[9]
HDIVN分频率改变位,当CLKDIVN[2:
1]=10b。
0:
HCLK=FCLK/4;1:
HCLK=FCLK/8。
0
HCLK3_HALF
[8]
HDIVN分频率改变位,当CLKDIVN[2:
1]=11b。
0:
HCLK=FCLK/3;1:
HCLK=FCLK/6。
0
CAMCLK_SEL
[4]
0:
CAMCLK=UPLL输出;
1:
CAMCLK由CAMCLK_DIV分频
0
CAMCLK_DIV
[3:
0]
CAMCLK分频因子设定寄存器(0-15)
相机时钟=UPLL/[(CAMCLK_DIV+1)*2]
该位只有当CAMCLK_SEL=1时有效。
0
第六章NANDFlash控制器
S3C2440A的启动代码可以放在外部NANDFLASH内存中,为支持这一特性,S3C2440A配备了一个叫做“Steppingstone”的内部SRAM缓冲。
当启动时,NANDFlash内存中的前4K字节内容会被装载到Steppingstone内,这4K字节启动代码就会被执行。
【特性】
1、自动启动:
复位器件,启动代码传送到4K字节的Steppingstone中。
传送完后,启动代码就会执行。
2、NANDFlash内存:
支持256字、512字节、1K字和2K字节页面。
3、软件模式:
用户可直接访问NANDFlash内存。
4、接口:
8位或16位NANDFlash内存接口总线。
5、硬ECC产生、检测和指示(软校正)。
6、SFR:
支持小端模式,字节/半字/字访问数据和ECC数据寄存器,字访问其他寄存器。
7、Steppingstone:
支持小/大端,字节/半字/字访问。
8、在NANDflash启动之后,Steppinstone中的4K字节内部SRAM可用于其他功能。
复位期间,NandFlash控制器通过引脚状态(NCON(高级Flash)、GPG13(页大小)、GPG14(地址周期)、GPG15(总线宽度))来获取连接的NANDFlash信息。
注意:
自动启动期间,不检验ECC。
因此,NANDflash最开始的4K字节应没有位错误。
【引脚配置】
OM[1:
0]=00:
使能NANDflash内存启动。
NCON:
NANDflash内存选择(正常/高级)
0:
正常Nandflash(256字/512字节页面大小,3/4地址周期)
1:
高级Nandflash(1K字/2K字节页面大小,4/5地址周期)
GPG13:
NANDflash内存页面大小选择
0:
页=256字(NCON=0)或1K字(NCON=1)
1:
页=512字节(NCON=0)或2K字节(NCON=1)
GPG14:
NANDflash内存地址周期选择
0:
3个地址周期(NCON=0)或4个地址周期(NCON=1)
1:
4个地址周期(NCON=0)或5个地址周期(NCON=1)
GPG15:
NANDflash内存总线宽度选择
0:
8位总线宽度;1:
16位总线宽度
注意:
引脚的配置在复位时通过读取NCON、GPG[15:
13]来获取。
NANDFlash内存配置表
【寄存器】
【NFCONF】NANDFLASH配置寄存器,0x4E000000。
【NFCONT】控制寄存器,0x4E000004。
NFCONT
位
描述
初始值
Reserved
[15:
14]
保留
0
Lock-tight
[13]
Lock-tight配置
0:
禁止lock-tight;1:
使能lock-tight。
0
SoftLock
[12]
Softlock配置:
0:
禁止锁定;1:
使能锁定。
1
Reserved
[11]
保留
0
EnblllegalAccINT
[10]
IIILegal访问中断控制:
0:
禁止中断;1:
使能中断。
0
EnbRnBINT
[9]
RnB状态输入信号传输中断控制:
0:
禁止RnB中断;1:
使能RnB中断
0
RnB_TransMode
[8]
RnB传输检测配置:
0:
检测上升沿;1:
检测下降沿。
0
Reserved
[7]
保留
0
SpareECCLock
[6]
所存空闲区域:
0:
不锁存空闲ECC;1:
锁存空闲ECC。
1
MainECCLock
[5]
所存主数据区域:
0:
不锁存;1:
锁存。
1
InitECC
[4]
初始化ECC解码器/编码器(仅可写)
1:
初始化ECC解码器/编码器
0
Reserved
[3:
2]
保留
00
Reg_nCE
[1]
NANDFlash内存nFCE信号控制:
0:
强制nFCE为低(使能片选)
1:
强制nFCE为高(禁止片选)
1
MODE
[0]
NANDFlash控制器操作模式:
0:
禁止NANDflash控制器(不工作)
1:
使能NANDflash控制器
0
【NFCMMD】命令寄存器,0x4E000008。
【NFADDR】地址寄存器,0x4E00000C。
【NFDATA】数据寄存器,0x4E000010。
【NFSTAT】NFCON状态寄存器,0x4E000020。
【K9F2G08X0M、K9F2G16X0M】
256Mx8Bit/128Mx16BitNANDFlash内存
后缀:
U0M:
3.3V;Q0M:
1.8V。
K9F2G08X0M:
1Device=2048Blocks、1Block=64Pages、1Page=(2K+64)Bytes。
5个地址访问周期
命令集
第十六章ADC和触摸屏接口
【概述】10位CMOSADC具有8通道模拟输入,AD转换时钟为2.5MHz时,转换速度达500KSPS
第十九章MMC/SD/SDIO控制器
【特性】
---符合SD内存卡1.0规范和MMC2.11规范;
---符合SDIO卡1.0规范;
---16字(64字节)的数据Tx/RxFIFO;
---40位命令寄存器;
---136位应答寄存器;
---8位预分频逻辑(Freq=系统时钟/(P+1));
---正常、DMA数据传输模式(字节、半字和字传输);
---支持DMAburst4访问模式(仅字传输);
---支持1位/4位(宽总线)模式和块/流模式的切换;
【SD操作】
串行时钟线负责同步移位和采样5根数据线上的信息。
通过往SDIPRE寄存器里设置恰当的位可以控制传输频率,因此可以修改频率以调整波特率数据寄存器的值。
【编程步骤(通用)】
按照以下基本步骤可以给SDI模块编程:
1、设置SDICON,正确配置时钟和中断使能;
2、设置SDIPRE,配置恰当值;
3、等待74个SDCLK时钟周期,以初始化卡;
【CMD端编程】
1、往SDICmdArg写入32位命令参数;
2、设置SDICmdCon,决定命令类型并开始命令传输;
3、当设定SDICmdSta的具体标志后,需要确认SDICMD操作的结尾;
4、如果命令类型不应答,则标志是CmdSent;
5、如果命令类型带应答,则标志是RspFin;
6、通过给应答位写“1”来清除SDICmdSta的标志;
【DAT端编程】
1、往SDIDTimer写入数据timeout周期;
2、往SDIBSize(正常是0x80字)写入块大小(块的长度);
3、设置SDIDatCon,决定块的模式、总线宽度、dma等,并开始数据传输;
4、发送数据:
当TxFIFO可用(设置了TFDET)或者半空(设置了TFHalf)或者全空(设置了TFEmpty)时,往数据寄存器(SDIDAT)写入数据;
5、接收数据:
当RxFIFO可用(设置了RFDET)或者满(设置了RFFull)或者半满(设置了RFHalf)或者准备接收最后的数据(设置了RFLast)时,从数据寄存器(SDIDAT)读数据;
6、当设置了SDIDatSta的DatFin标志后,需要确定SDIDAT操作的结尾;
7、通过给应答位写“1”来清除SDIDatSta的标志;
【SDIO操作】
有两种功能的SDIO操作:
SDIO中断接收和产生读等待请求。
当分别激活了SDICON寄存器的RcvIOInt位和RwaitEn位时可运行这两种功能。
【SDIO中断】
在SD1位模式下,RxDAT[1]引脚仅为接收中断。
在SD4位模式下,数据接收和中断接收共享RxDAT[1]引脚。
如果中断检测范围(中断周期)是:
1、单模块:
时间介于A和B。
A:
数据包完成后2个时钟;
B:
发送完下一个带数据的命令最末位;
2、多模块,PrdType=0:
时间介于A和B,重新开始于C。
A:
数据包完成后2个时钟;
B:
A之后2个时钟;
C:
中止命令响应最末位之后2个时钟。
3、多模块,PrdType=1:
时间介于A和B,重新开始于A
A:
数据包完成后2个时钟;
B:
A之后2个时钟;
如果是最后一个模块,那么中断周期开始于A,但不终止于B(如CMD53)。
【读等待请求】
无论1位还是4位模式,在以下条件下,读等待请求信号都传输到TxDAT[2]引脚。
---多次读操作下,在数据模块结束之后的2个时钟开始传输请求信号;
---当用户往SDIDatSta寄存器的RwaitReq位写入1时,传输终止;
【SDI寄存器】
【SDICON】SDI控制寄存器,0x5A000000.
【SDIPRE】SDI波特率预分频寄存器,0x5A000004.
SDIPRE
位
描述
初始值
预分频值
[7:
0]
决定SDI时钟(SDCLK)速率
波特率=PCLK/(预分频值+1)
0x01
注意:
预分频值应当大于0;
【SDICmdArg】SDI命令参数寄存器,0x5A000008.
SDICmdArg
位
描述
初始值
命令参数
[31:
0]
命令参数
0x00000000
【SDICmdCon】SDI命令控制寄存器,0x5A00000C.
【SDICmdSta】SDI命令状态寄存器,0x5A000010.
【SDIRSP0】SDI响应寄存器,0x5A000014.
SDIRSP0
位
描述
初始值
响应0
[31:
0]
卡状态[31:
0](短)或[127:
96](长)
0x00000000
【SDIRSP1】SDI响应寄存器,0x5A000018.
SDIRSP1
位
描述
初始值
RCRC7
[31:
24]
CRC7(带末位,短)或卡状态[95:
88](长)
0x00
响应1
[23:
0]
未用(短)或卡状态[87:
64]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- S3C2440A 数据 书册 阅读 笔记
![提示](https://static.bdocx.com/images/bang_tan.gif)