小弟是初学者,
在博创UP-NETARM3000上,板子上一个32.768KHZ的振晶.
启动时系统的输入时钟频率(Fin)是多少?
是人为定的,还是机器设定的? 怎么在option.s中是Fin=6MHz Fout=60MHz,而在44BINIT.S中又写Fin=4MHz,我糊涂了.
看44bINIT.s,option.s,option.h三个文件对PLLCON的赋值.
option.s中
GBLA PLLCLK
PLLCL SETA 60000000 ;!!!!!!!!!!!!!!!!!!
[ PLLCLK = 60000000 ;!!!!!!!!!!!
M_DIV EQU 72 ;Fin=6MHz Fout=60MHz ???
P_DIV EQU 2
S_DIV EQU 1
]
再看44bINIT.S
GET memcfg.s ; memcfg.s 中又有 GET option.s
ldr r0,=LOCKTIME
ldr r1,=800 ; count = t_lock * Fin (t_lock=200us, Fin=4MHz) = 800
str r1,[r0]
[ PLLONSTART
ldr r0,=PLLCON ;temporary setting of PLL
ldr r1,=((0xe8<<12)+(0x4<<4)+0x2) ;!!!!!!!!!!!!!!!!!! ;Fin=4MHz,Fvco=160Mhz,Fout=40MHz,m/p/s=0x48/0/0x2 ????????
str r1,[r0]
]
这样是不是不一致呀??????????
接着进入C程序后 初始化开发板ARMTargetInit(){..ChangePllValue(PLL_M,PLL_P,PLL_S);..}又改变时钟.
在option.h中有这样的定义
#define MCLK (67500000)
#elif (MCLK==67500000)
#define PLL_M (82)
#define PLL_P (2)
#define PLL_S (1)
而这一块对Fin我不知道是多少? 这个输入时钟频率怎么来的呀?我看了相关的说明文档,但那只是说通过引脚OM[2:3],来选择时钟源,一个是OSC,一个是外部时钟,
但这中间的过程是什么样的?Fin怎么来的?
OM[2:3]选择时钟源,如果用的是外部晶振,那么Fin就是晶振频率,如果选择为外部时钟,那么就是外部设备提供的时钟频率。