1. 程式人生 > >TMS320F28335專案開發記錄7_28335之時鐘

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