分类:
2008-08-25 16:54:52
s3c44b0的系统时钟与串口波特率的计算公式
S3C44B0的系统时钟设置公式
一. 通过PLL输出时钟脉冲频率的计算:
a) Fpllo = (m * Fin) / (p * 2^s)
b) m = (MDIV + 8), p = (PDIV + 2), s = SDIV
c) 20MHz < Fpllo < 66MHz
d) Fpllo * 2^s < 170MHz (s应该尽可能的大)
e) 1MHz <= Fin/p < 2MHz (最好是Fin/p = 1MHz)
f) 如果PLL打开则:Fpllo = Fout
g) 这样计算出MDIV, PDIV, SDIV的值写入PLLCON寄存器中就可设置Fpllo的输出频率。
二. PLL的锁存时间(为输出稳定时钟频率需要的平静时间)
a) T_lock = (1 / Fin) * n > 280us. (n = LTIMECNT value)
S3C44B0的UART波特率计算公式
UBRDIVn = ( (int)(MCLK / (bps * 16) + 0.5) – 1 )
MCLK = Fout = Fpllo
Bps = 1200,9600,19200,38400,57600,115200
CPU频率计算方法---PLL设置
根据 d)知道s=1 T1^V"JW{
根据 e)知道p=10bbs.cedn.cnr he&H7D0t
T
再根据 a)就知道了m=120,注意2^s代表2的s次方_JHcqk
再根据 b)知道MDIV=112, PDIV=8, SDIV=1bbs.cedn.cnf-r!j;E.o
~.M%_)t$y,B
根据44B0数据手册5-14页算出 PLLCON=0X70081F-F!f8~!V1bAFI
注意:PLLCON的结果不为一!比如P可以取8 取7……9A*Cc%MS[s,i"Q
注意:PLLCON寄存器是20位的 各个区域中间有空的 bbs.cedn.cn"c8` Q6}C*a}4n
比如MDIV是寄存器里19-12位,PDIV是9-4位两个中间有11,10位空,如果用2进制算就添0t:X/y]'j!`)kc.j8W
不过做过硬件的就知道 大可不必只要把MDIV, PDIV, SDIV用WEINDOWS自带计算机直接由2进制转换成16进制顺序写就行bbs.cedn.cn
Jtw NB |?
比如MDIV=112=0x70, PDIV=8=0x08, SDIV=1=0x1
PLLCON寄存器就是0x70081(看到这 连手册都不用翻了吧?:)).t0m.Zu7I:r
还得多说一句 不是0x700801,因为SDIV=1=0x1不是0X01,跟PDIV=8=0x08不一样
;计算公式
;Fpllo=(m*Fin)/(p*2^s)
;m=MDIV+8,p=PDIV+2,s=SDIV
;Fpllo必须大于20Mhz小于66Mhz
;Fpllo*2^s必须小于170Mhz
;如下面的PLLCON设定中的M_DIV P_DIV S_DIV是取自option.h中
;#elif (MCLK==40000000)
;#define PLL_M (0x48)
;#define PLL_P (0x3)
;#define PLL_S (0x2)
;所以m=MDIV+8=80,p=PDIV+2=5,s=SDIV=2
;硬件使用晶振为10Mhz,即Fin=10Mhz
;Fpllo=80*10/5*2^2=40Mhz