1.S5PV210时钟系统
如图1:

S5PV210中包含3大类时钟domain:
1) MSYS(主系统时钟) 用来给cortex a8处理器,dram控制器,3D,IRAM,IROM,中断控制器等提供时钟。
2) DSYS(显示相关的时钟) 用来给显示相关的部件提供时钟,包括FIMC, FIMD, JPEG, and multimedia IPs。
3) PSYS(外围设备的时钟) 用来给外围设备提供时钟,如i2s, spi,i2c,uart等。
这三个区域都是AMBA总线,AMBA总线分为AHB和APB两种总线每种总线都有不同的时钟频率。如下图2:

AHB对应HCLK,APB对应PCLK,
FCLK is used by ARM920T,内核时钟,主频。
HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD controller, the DMA and USB host block. 也就是总线时钟,包括USB时钟。
PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface, ADC, UART, GPIO, RTC and SPI.即IO接口时钟,例如串口的时钟设置就是从PCLK来的。
那么MSYS,DSYS,PSYS最少有6个时钟(实际上不止6个):HCLK_MSYS/PCLK_MSYS、HCLK_DSYS/PCLK_DSYS、HCLK_PSYS/PCLK_PSYS,再外加一个CPU要用的时钟ARMCLK,总共7个时钟频率。

由图3可知最后,总共有13个CLK提供出来。
由图4可以知道S5PV210共有4个倍频器即PLL,包括APLL,MPLL,EPLL,VPLL.
P448
void clock_init()
{
// 1 设置各种时钟开关,暂时不使用PLL
CLK_SRC0 = 0x0;
// 2 设置锁定时间,使用默认值即可
APLL_LOCK = 0x0000FFFF;
MPLL_LOCK = 0x0000FFFF;
// 3 设置分频
CLK_DIV0 = 0x14131440;
// 4 设置PLL
APLL_CON0 = APLL_VAL;
MPLL_CON = MPLL_VAL;
// 5 设置各种时钟开关,使用PLL
CLK_SRC0 = 0x10001111;
}
第一步 、设置各种时钟开关,暂时不使用PLL。
首先我们需要选择使用外接24MHz晶振,由时钟系统图可知,APLL和MPLL的时钟源由“FINPLL”决定,在芯片手册中搜索“FINPLL”,可知相关寄存器为CLK_SRC0,
如图3

在未设置PLL和各种分频系数之前,我们不能使用PLL,为了保险起见,暂时直接使用频率较低的外接的24MHz晶振,待设置好PLL和分频系数后再重新设置各种时钟开关。所以设置为0x00。
第二步 、设置锁定时间
设置PLL后,时钟从Fin提升到目标频率时,需要一定的时间,即锁定时间。
第三步 、设置分频
与分频相关的寄存器是CLK_DIV0,见下图4:

第四步 、设置PLL
PLL即倍频器,用来放大运行频率。设置好分频后,我们就需要设置PLL了。APLL/MPLL的启动是通过设置APLL_CON0/MPLL_CON寄存器,我们逐个来设置。
ALPP_CON0负责设置APLL,FINPLL=24MHz,经过APLL后,我们将输 出FOUT=1000Mhz的时钟频率,FOUT的计算公式如下: FOUT=MDIV*FIN/(PDIV*2^(SDIV-1)) = 1000 MHz ,由于FIN=24MHz,FOUT=1000MHz,我们可以这样取值: MDIV= 0x7d,PDIV= 0x3,SDIV=1。这3个值并不是固定死的,只要能使FOUT=1000Mhz,任意搭配都是可以的。
MPLL_CON寄存器负责设置MPLL,经过MPLL后,我们将输出FOUT=667Mhz的时钟频率,FOUT的计算公式如下: FOUT=MDIV*FIN/(PDIV*2^SDIV) = 667 MHz 由于FIN=24MHz,FOUT=667MHz,我们可以这样取值: MDIV=0x29B, PDIV= 0xC,SDIV=1。这3个值并不是固定死的,只要能使FOUT=667Mhz,任意搭配都是可以的。
第五步 设置各种时钟开关
在时钟系统图中,所有的MUX都是用来选择时钟的,相关寄存器是CLK_SRC0
参考S5PV210时钟设置参考图,设置各种时钟开关:
APLL_SEL=1,使用FOUTAPLL
MPLL_SEL=1,使用FOUTMPLL
EPLL_SEL=1,使用FOUTEPLL
VPLL_SEL=1,使用FOUTVPLL
MUX_MSYS_SEL=0,使用SCLKAPLL
MUX_DSYS_SEL=0,使用SCLKMPLL
MUX_PSYS_SEL=0,使用SCLKMPLL
ONENAND_SEL=1,使用HCLK_DSYS
所以CLK_SRC0=0x10001111;
上一篇:S5PV210 三个Camera Interface/CAMIF/FIMC的区别
下一篇:libnfc移植到ARM上
推荐阅读最新更新时间:2026-03-25 11:30
- 用于 7VIN 至 16VIN、1.5V 和 1.2V 输出的 LTM4628EV DC/DC 模块稳压器的典型应用电路
- 使用 Analog Devices 的 LTC3728LIGN 的参考设计
- DER-406 - 适用于 A19 灯的 5.76 W 高 PF 非隔离降压-升压型 TRIAC 调光 LED 驱动器
- ADR5045B 5V 输出精密微功率并联模式电压基准的典型应用
- LT3970EDDB-3.42 2.5V 降压转换器的典型应用
- MC78M08BDTG 8V 电流调节器的典型应用
- LT1021DCN8-5 精密电压基准的典型应用
- DER-282 - 100W, 扁平(11 mm), LLC DC-DC转换器
- REF193 低压差开尔文连接电压基准的典型应用电路
- LT3088EM 线性稳压器用于添加软启动的典型应用
- 英特尔创始人、“摩尔定律”提出者戈登·摩尔去世
- 本周机器人行业大事件TOP5
- G20周刊|埃斯顿与北自所达成战略合作、海康机器人发布光伏组件汇流带视觉检测解决方案
- 14家工业智能企业入选《上海市智能机器人标杆企业与应用场景推荐目录》
- 大声量 | 2023机器视觉技术与应用峰会议程新鲜出炉!
- STM32CubeMX配置ADC模拟看门狗实现掉电保存
- STM32CubeMX配置RTC——基于(STM32G070+STM32CubeMX+HAL库+RTC)
- 解决MDK仿真时候弹框Programming range...问题
- STM32G0系列通过HAL库读取CPUID
- 8-基于51单片机的二氧化碳检测及调节系统仿真

HMC7044配置上位机
嵌入式视频应用系统设计与实现 基于TI DaVinci DM355处理器
非常经典的关于LLC的杨波博士论文
XC6406PP60DL






京公网安备 11010802033920号