<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          S3C2440時鐘電源管理

          作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
          S3C2440時鐘可以選用晶振(XTAL),也可以使用外部時鐘(EXTCLK),由系統(tǒng)復(fù)位時,在復(fù)位信號上升沿對引腳OM3、OM2所測的狀態(tài)來確定。由于我所用的開發(fā)板這兩個引腳接地,故外部晶振作為主鎖相環(huán)(MPLL)和usb鎖相環(huán)(UPLL)的時鐘源。

          含有兩個鎖相環(huán)MPLL、UPLL產(chǎn)生系統(tǒng)所需要的不同頻率的時鐘
          MPLL:
          為CPU產(chǎn)生FCLK時鐘
          為AHB產(chǎn)生HCLK時鐘
          為APB產(chǎn)生PCLK時鐘

          本文引用地址:http://www.ex-cimer.com/article/201611/319196.htm

          UPLL:
          為usb(Host and Device)產(chǎn)生UCLK(48M)


          FCLK,HCLK和 PCLK
          FCLK是提供給ARM920T 的時鐘。
          HCLK 是提供給用于 ARM920T,存儲器控制器,中斷控制器,LCD 控制器,DMA 和 USB 主機模塊的 AHB
          總線的時鐘。
          PCLK 是提供給用于外設(shè)如WDT,IIS,I2C,PWM 定時器,MMC/SD 接口,ADC,UART,GPIO,RTC 和
          SPI的APB 總線的時鐘。


          下圖為PLL(鎖相環(huán))方框圖

          設(shè)置FCLK要用到PLL控制寄存器MPLLCON

          例如:如果外部晶振Fin為12MHZ,設(shè)置FCLK為400MHZ,

          由公式Fout = 2 × m × Fin / ( p*2^s) 此處:m =MDIV+8, p=PDIV+2, s=SDIV

          可知rMPLLCON=((92<<12)|(1<<4)|1) 其中(MDIV=92, PDIV=1,SDIV=1)。

          下面的這個函數(shù)是配置FCLK HCLK PCLK的比例的函數(shù),用到時鐘分頻寄存器CLKDIVN

          1. voidChangeClockDivider(inthdivn,intpdivn)
          2. {
          3. //hdivn,pdivnFCLK:HCLK:PCLK
          4. //0,01:1:1
          5. //0,11:1:2
          6. //1,01:2:2
          7. //1,11:2:4
          8. //2,01:4:4
          9. //2,11:4:8
          10. //3,01:3:3
          11. //3,11:3:6
          12. rCLKDIVN=(hdivn<<1)|pdivn;
          13. if(hdivn==2)
          14. rCAMDIVN=(rCAMDIVN&~(3<<8))|(1<<9);
          15. if(hdivn==3)
          16. rCAMDIVN=(rCAMDIVN&~(3<<8))|(1<<8);
          17. }


          [cpp]view plaincopy
          1. //**************************[UPLL]*******************************
          2. voidChangeUPllValue(intmdiv,intpdiv,intsdiv)//配置UPLLCON寄存器
          3. {
          4. rUPLLCON=(mdiv<<12)|(pdiv<<4)|sdiv;
          5. }
          [cpp]view plaincopy
          1. voidCalcBusClk(void)//計算總線頻率
          2. {
          3. U32val;
          4. U8m,p,s;
          5. val=rMPLLCON;
          6. m=(val>>12)&0xff;
          7. p=(val>>4)&0x3f;
          8. s=val&3;
          9. //(m+8)*FIN*2不要超出32位數(shù)!
          10. FCLK=((m+8)*(FIN/100)*2)/((p+2)*(1<
          11. val=rCLKDIVN;
          12. m=(val>>1)&3;//HDIVN的值
          13. p=val&1;//PDIVN的值
          14. val=rCAMDIVN;
          15. s=val>>8;//CAMDIVN[8:9],為HDIVN分頻改變位
          16. switch(m)//計算HCLK頻率
          17. {
          18. case0:
          19. HCLK=FCLK;
          20. break;
          21. case1:
          22. HCLK=FCLK>>1;
          23. break;
          24. case2:
          25. if(s&2)//見CAMDIVN寄存器HCLK4_HALF
          26. HCLK=FCLK>>3;
          27. else
          28. HCLK=FCLK>>2;
          29. break;
          30. case3:
          31. if(s&1)//見CAMDIVN寄存器HCLK3_HALF
          32. HCLK=FCLK/6;
          33. else
          34. HCLK=FCLK/3;
          35. break;
          36. }
          37. if(p)//計算PCLK頻率
          38. PCLK=HCLK>>1;
          39. else
          40. PCLK=HCLK;
          41. val=rUPLLCON;
          42. m=(val>>12)&0xff;
          43. p=(val>>4)&0x3f;
          44. s=val&3;
          45. UPLL=((m+8)*FIN)/((p+2)*(1<
          46. UCLK=(rCLKDIVN&8)?(UPLL>>1):UPLL;//計算UCLK頻率
          47. }

          下圖為外部時鐘為晶振時的上電復(fù)位順序




          關(guān)鍵詞: S3C2440時鐘電源管

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();