TMS320F28335專案開發記錄7_28335之時鐘
TMS320F28335時鐘
TMS320F28335上有一個基於PLL電路的片上時鐘模組,如圖1所示,為CPU及外設提供時鐘有兩種方式:
一種是用外部的時鐘源,將其連線到X1引腳上或者XCLKIN引腳上,X2接地;
另一種是使用振盪器產生時鐘,用30MHz的晶體和兩個20PF的電容組成的電路分別連線到X1和X2引腳上,XCLKIN引腳接地。
我們常用第二種來產生時鐘。此時鐘將通過一個內部PLL鎖相環電路,進行倍頻。由於F28335的最大工作頻率是150M,所以倍頻值最大是5。其中倍頻值由PLLCR的低四位和PLLSTS的第7、8位來決定。其詳細的倍頻值可以參照TMS320F28335的Datasheet。
三種時鐘輸入的接法:
下面是InitSysCtrl函式中呼叫的InitPll函式進行時鐘設定:
//--------------------------------------------------------------------------- // This function initializes the PLLCR register. void InitPll(Uint16 val, Uint16 divsel) { // Make sure the PLL is not running in limp mode if (SysCtrlRegs.PLLSTS.bit.MCLKSTS != 0) { // Missing external clock has been detected // Replace this line with a call to an appropriate // SystemShutdown(); function. asm(" ESTOP0"); } // DIVSEL MUST be 0 before PLLCR can be changed from // 0x0000. It is set to 0 by an external reset XRSn // This puts us in 1/4 if (SysCtrlRegs.PLLSTS.bit.DIVSEL != 0) { EALLOW; SysCtrlRegs.PLLSTS.bit.DIVSEL = 0; EDIS; } // Change the PLLCR if (SysCtrlRegs.PLLCR.bit.DIV != val) { EALLOW; // Before setting PLLCR turn off missing clock detect logic SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1; SysCtrlRegs.PLLCR.bit.DIV = val; EDIS; // Optional: Wait for PLL to lock. // During this time the CPU will switch to OSCCLK/2 until // the PLL is stable. Once the PLL is stable the CPU will // switch to the new PLL value. // // This time-to-lock is monitored by a PLL lock counter. // // Code is not required to sit and wait for the PLL to lock. // However, if the code does anything that is timing critical, // and requires the correct clock be locked, then it is best to // wait until this switching has completed. // Wait for the PLL lock bit to be set. // The watchdog should be disabled before this loop, or fed within // the loop via ServiceDog(). // Uncomment to disable the watchdog DisableDog(); while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1) { // Uncomment to service the watchdog // ServiceDog(); } EALLOW; SysCtrlRegs.PLLSTS.bit.MCLKOFF = 0; EDIS; } // If switching to 1/2 if((divsel == 1)||(divsel == 2)) { EALLOW; SysCtrlRegs.PLLSTS.bit.DIVSEL = divsel; EDIS; } // If switching to 1/1 // * First go to 1/2 and let the power settle // The time required will depend on the system, this is only an example // * Then switch to 1/1 if(divsel == 3) { EALLOW; SysCtrlRegs.PLLSTS.bit.DIVSEL = 2; DELAY_US(50L); SysCtrlRegs.PLLSTS.bit.DIVSEL = 3; EDIS; } }
如果我們希望DSP工作在某一個頻率下,我們就可以對Uint16 val, Uint16 divsel兩個引數進行設定。
說白了就相當於乘10,除2 (30*10/2 = 150MHZ)
更詳細內容參考:
http://wenku.baidu.com/link?url=vL0bh97ETShHDNcARicm11dkcvSac4VbUE-mm9uvkZSxq4wDpYi3x9Xxevtq7moLFlBX3KSYSQ6icRGo21ePg7MWfu8hI4cnfrn_aAFRUUi
相關推薦
TMS320F28335專案開發記錄7_28335之時鐘
TMS320F28335時鐘 TMS320F28335上有一個基於PLL電路的片上時鐘模組,如圖1所示,為CPU及外設提供時鐘有兩種方式: 一種是用外部的時鐘源,將其連線到X1引腳上或者XCLKIN引腳上,X2接地; 另一種是使用振盪器產生時
使用Jquery+EasyUI 進行框架專案開發案例講解之三---角色管理原始碼分享
使用Jquery+EasyUI 進行框架專案開發案例講解之三角色管理原始碼分享 在上兩篇文章 我們分享了使用Jquery EasyUI來進行UI佈局等開發的相關方法,也許你在使用EasyUI的過程過更熟練,有更方便快捷的技巧,我強烈建議你可以分享出來,大家共同進步、
使用Jquery+EasyUI 進行框架專案開發案例講解之二---使用者管理原始碼分享
$(function () { grid.bind(); AddUser(); //新增使用者 EditUser(); //編輯使用者 DeleteUser(); //刪除使用者 SetUserPassword(); //設定使用者密碼 $(
使用Jquery+EasyUI 進行框架專案開發案例講解之三 角色管理原始碼分享
作者: 出處:http://www.cnblogs.com/huyong/ Email:[email protected] QQ交流:406590790 框架官網:http://www.rdiframework.net/ 框架官網部落格:http://blog.rdifr
使用Jquery+EasyUI 進行框架專案開發案例講解之四 組織機構管理原始碼分享
作者: 出處:http://www.cnblogs.com/huyong/ Email:[email protected] QQ交流:406590790 框架官網:http://www.rdiframework.net/ 框架官網部落格:http://blog.rdifr
使用Jquery+EasyUI 進行框架專案開發案例講解之四--組織機構管理原始碼分享
使用Jquery+EasyUI 進行框架專案開發案例講解之四組織機構管理原始碼分享 在上三篇文章 我們分享了使用Jquery EasyUI來進行ASP.NET專案的開發的相關方法,每一個模組都有其共用性,細細理解與掌握,我相信使用EasyUI進行開發還是相當方便的。 接
一、web專案開發進階之分模組管理專案之通用模組
以前的web專案都是統一一個工程,其他人員在這個專案拉取分支進行開發,但是若需要多個人協作同時進行開發時,會造成各種各樣的問題。為了解決這些問題,按照業務邏輯進行區分,將一個專案按照多個模組進行構建。 (一)所有專案的父模組“parent” 父模組的
Unity3D Demo專案開發記錄
前言 經過一段時間的學習與實際開發,unity3D也勉強算是強行入門了,正所謂好記性不如爛筆頭,更何況本人並非專業從事unity3D開發,會一點C#但也並不熟悉,為了避免後期遺忘,因此特意整理了一個Demo專案,特此記錄 本專案是一個簡單的Unity學習專案,封裝了一下簡單、通用功能元件,適用於資
MicroPython實戰之TurnipBit開發板DIY電子時鐘
行數據 ini rep 模塊 技術分享 pass lee .com I/O 一、 實驗目的: ?學習在PC機系統中擴展簡單I/O 接口的方法 ?學習TurnipBit拼插編程 ?學習TurnipBit擴展板與DS3231時鐘模塊連接接線方式 ?學習
Qt線上技術交流之OpenGL、Quick以及所經歷專案開發心得分享
時間:3月25日晚上7:30 主題:Qt線上技術交流之OpenGL、Quick以及所經歷專案開發心得分享 直播:http://qtdream.com 主頁、全民TV,可能會加上其它的直播平臺進行轉播 錄播:http://qtdream.com/category/16 處,使用B站或者優
《SpringBoot從入門到放棄》之第(八)篇——SpringBoot整合Mybatis(大型專案開發技術首選)
一千個讀者有一千個哈姆雷特。 你們的專案中,傾向於把資料庫的語句寫在Java類裡,還是使用Mybatis框架呢? 相對來說,做一些複雜的大專案,用第三方開源的Mybatis會比較好。把資料庫操作語句抽取出來,寫在xml檔案,方便管理。 個人比較傾向於使用Mybatis,還有Mybat
從搭建開發環境到釋出線上專案的企業級流程之軟體源配置
1:作業系統:centOs6.8:(映象地址)http://mirrors.aliyun.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-bin-DVD1.iso 2:linux軟體源配置: 因為這個專案是想搭建一個自己
SharedPreferences在專案中應用——開發記錄
開發記錄:在日常開發中,長使用的幾種本地序列化方式,SP的使用是最普遍的,所以對SP 的封裝就異常重要了,用起來順手的SP封裝工具,能夠節省你很多時間。 面試技能點 原生程式碼實現 工具類(只想要程式碼 Github 三個類直接貼到專案中就行了。) 枯燥的原理時間:
java小白自己動手開發一個網站之建立專案及域名訪問(第5回)
新手小白,大神們看到什麼問題,請多多指出 目錄 一、建立專案 1.建立web專案,新增一個index.html頁面, 2.建立一個本地服務tomcat,並配置(檢驗tomcat是否成功,http://localhost:8080/) 3.後將專案新增進去,本地測試
日常開發記錄打卡系列--讓你的Vue專案感受特殊服務
這個特殊服務就是讓我們的Vue專案夠快 體驗如絲般順滑的載入速度。不要想歪了。 相信大家在開發Vue較中型的專案時會發現 首屏載入真特麼慢,特別是引用了一些外掛和UI框架的 run build的時候會有三個主要的JS檔案 app.js是入口js  
專案開發之儲存過程發生的那些事
前言 之前在專案開發過程中,需要有一步操作就是使用儲存過程刪除一系列相關的表,再使用mybatis呼叫該儲存過程,輸入引數為家人賬號,型別為String,資料庫表結構中,該賬號欄位型別為varchar2,
Chrome擴充套件程式開發之時鐘Demo
1、簡介 Chrome擴充套件是一系列檔案的集合,一個web應用 需要的檔案: 配置檔案(manifest.json) 擴充套件圖示(icon.png 可以是任意的名字,在配置檔案中會使用到) popup彈出視窗html檔案(popup.html) 靜態資原
Micropython教程之TPYBoard開發板製作電子時鐘(蘿蔔學科程式設計教育)
1.實驗目的 1. 學習在PC機系統中擴充套件簡單I/O?介面的方法。 2. 什麼是SPI介面。 3. 學習TPYBoard I2C介面的用法。 4. 學習LCD511
Vue 專案開發之疑難雜症
1、使用v-model 繫結物件的動態屬性,導致v-model失效或者資料異常 場景:使用iview的CheckboxGroup 做checkbox多選時,發現勾選的選項和v-model繫結物件對應的屬性值不匹配。 template程式碼如下: <Checkbo
微信小程式開發記錄(四)位址列傳參之true和false的坑
先看看小程式位址列傳參的方法,如下 wxml: <view class="weui-cells weui-cells_after-title" wx:if="{{isNewUser}}"> <navigator url="../addres