本文檔以ZYNQ7000平臺為例,詳細介紹如何去修改ZYNQ的時鐘頻率。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比江安網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式江安網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋江安地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
ZYNQ7000的時鐘頻率修改流程,如圖 2.1所示。具體步驟如下:
步驟一:解除ZYNQ7000的寄存器寫鎖定;
步驟二:向?qū)?yīng)寄存器寫入我們需要設(shè)置的PLL倍頻值和PLL配置參數(shù);
步驟三:進行PLL的旁路模式轉(zhuǎn)換和軟件重啟,使我們剛剛設(shè)置的PLL倍頻值和PLL配置參數(shù)生效;
步驟四:重新使寄存器處于寫鎖定狀態(tài)。
圖 2.1 ZYNQ7000的時鐘頻率修改流程圖
ZYNQ7000的ARM_PLL_CLK時鐘頻率修改的具體的代碼實現(xiàn)如程序清單 2.1所示。不同平臺的解除和鎖定寫鎖定的方式可能不同,對于ZYNQ7000平臺,需要寫入0xDF0D到SLCR_UNLOCK寄存器解除寫鎖定,寫入0x767B到SLCR_LOCK寄存器可以使相關(guān)寄存器的寫操作無效。
程序清單 21 ZYNQ7000的時鐘頻率修改代碼
/********************************************************************************************************* ** 函數(shù)名稱: zynqPllFeedBackSet ** 功能描述: zynq的ARM_PLL_CLK時鐘倍頻設(shè)置 ** 輸 入 : NONE ** 輸 出 : NONE ** 返 回 : NONE *********************************************************************************************************/ VOID zynqPllFeedBackSet (VOID) { UINT32 uiClkCtrl; UINT32 uiFeedBackDiv; UINT32 uiNum; uiNum = read32(ZYNQ_SLCR + SLCR_LOCKSTA); if (0 != uiNum) { write32(SLCR_UNLOCK_MAGIC, ZYNQ_SLCR + SLCR_UNLOCK); /* 寫入0xDF0D,解除寫鎖定 */ uiNum = 0; } /* * 設(shè)置ARM_PLL的倍頻值 */ uiClkCtrl = read32(ZYNQ_SLCR + ARM_PLL_CTL); uiFeedBackDiv = uiClkCtrl &~ XZYNQ_SLCR_ARM_PLL_CTRL_PLL_FDIV_MASK; uiFeedBackDiv |= (SLCR_FEED_BACK_DIV_VALUE << XZYNQ_SLCR_ARM_PLL_CTRL_PLL_FDIV_OFFSET); write32(uiFeedBackDiv, ZYNQ_SLCR + ARM_PLL_CTL); /* * 設(shè)置ARM_PLL的配置參數(shù) */ uiClkCtrl = read32(ZYNQ_SLCR + ARM_PLL_CTL); write32(SLCR_ARM_PLL_CFG, ZYNQ_SLCR + ARM_CLK_CFG); /* * 進行PLL的旁路模式轉(zhuǎn)換和軟件重啟,使我們剛剛設(shè)置的PLL倍頻值和PLL配置參數(shù)生效 */ write32(SLCR_ARM_PLL_CTRL_BYPASS_FORCE | uiClkCtrl, ZYNQ_SLCR + ARM_PLL_CTL); write32(SLCR_ARM_PLL_CTRL_RESET | uiClkCtrl, ZYNQ_SLCR + ARM_PLL_CTL); read32(ZYNQ_SLCR + PLL_STATUS); write32(uiClkCtrl &~ SLCR_ARM_PLL_CTRL_RESET, ZYNQ_SLCR + ARM_PLL_CTL); write32(uiClkCtrl &~ SLCR_ARM_PLL_CTRL_BYPASS_FORCE, ZYNQ_SLCR + ARM_PLL_CTL); if (0 == uiNum) { write32(SLCR_LOCK_MAGIC, ZYNQ_SLCR + SLCR_LOCK); /* 寫入0x760B,打開寫鎖定 */ uiNum = 1; } }
ZYNQ7000的時鐘頻率設(shè)置的參數(shù)列表,如圖 3.1所示。其中PLL_FDIV為PLL的倍頻值,PLL CP、PLL RES、LOCK CNT為PLL的配置參數(shù)。
圖 3.1 PLL頻率的參數(shù)設(shè)置列表
內(nèi)部交流文檔,僅針對ZNYQ相關(guān)平臺,若發(fā)現(xiàn)相關(guān)錯誤或者建議,請及時聯(lián)系文檔創(chuàng)建者進行修訂和更新。
文章標(biāo)題:SylixOS基于ZYNQ的時鐘頻率修改詳解
標(biāo)題來源:http://bm7419.com/article42/jdechc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、外貿(mào)建站、虛擬主機、ChatGPT、用戶體驗、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)