Chinaunix首页 | 论坛 | 博客
  • 博客访问: 585582
  • 博文数量: 119
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1583
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 09:18
文章分类

全部博文(119)

文章存档

2011年(3)

2010年(21)

2009年(44)

2008年(51)

我的朋友

分类:

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

阅读(1387) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~