dsp學習筆記2 時鐘及控制系統

2022-07-03 02:51:10 字數 1903 閱讀 4435

時鐘訊號對於微控制器來說是非常重要的, 它為微控制器工作提供乙個穩定的機器週期從而使系統能夠正常執行。 時鐘系統猶如人的心臟, 一旦有問題整個系統就崩潰。 我們知道 dsp 屬於數字訊號處理器, 也可以說是一種高階微控制器, 若要它正常工作也必須為其提供時鐘訊號。 時鐘訊號是由時鐘訊號的源頭(簡稱時鐘源) 產生, 下面我們就來分析下 f28335 內部的時鐘電路。 如圖所示:

我們按照圖中標號順序分別介紹,從上圖可以看到,f28335 的時鐘源有兩種:

(1) 採用外部振盪器作為時鐘源(簡稱外部時鐘) , 即在 xclkin 引腳提供一定頻率的時鐘訊號, 也可以通過復用的 x1 引腳提供, 即由其他數字系統或外部振盪器引入。

(2) 採用 f28335 內部振盪器作為時鐘源(簡稱內部時鐘) , 在 x1 和 x2 引腳之間連線乙個晶體就可以產生時鐘源。

①外部時鐘源訊號接入方法有 2 種, 分別針對的是電壓為 3.3v 的外部時鐘和 1.9v 的外部時鐘。

(a) 外部時鐘訊號接入方式 1, 即採用 3.3v 的外部時鐘。 如圖 7.1.2 所示:

3.3v 外部時鐘訊號直接接入 xclkin 引腳, x1 引腳接 gnd, x2 引腳懸空, 系 統內高電平不能超過 vddio, 即 3.3v。

(b) 外部時鐘訊號接入方式 2, 即採用 1.9v 的外部時鐘。 如圖 7.1.3 所示:

1.9v 外部時鐘訊號直接接入 x1 引腳, xclkin 引腳接 gnd, x2 引腳懸空, 系統內高電平不能超過 vdd, 即 1.9v。

②內部時鐘源訊號接法如圖 7.1.4 所示:

從上圖可以看到 xclkin 引腳接地, x1 和 x2 引腳間接入了乙個晶振。在實際的應用中, 我們一般不採用外部振盪器方式, 直接採用內部振盪器的方式更多一些。典型的接法是在 x1 和 x2 引腳間接入乙個 30mhz 晶振,選擇 30mhz晶振是因為若直接採用更高頻率晶振, 不僅**會上公升, 而且晶振電路還需要做emc 處理, 即需要設計特殊的晶振電路, 而 30mhz 晶振目前是比較容易獲取的。

(3) 我們知道 f28335 工作的最高主頻是 150mhz, 但實際提供的晶振是30mhz, 我們希望 cpu 能工作在最高主頻上, 這時怎麼能讓這 30m 轉變成 150m供 cpu 工作呢? 這就需要提到 f28335 內部的 pll 鎖相環了。 從上圖可以看到,內部訊號時鐘源與外部訊號時鐘源通過異或門後選擇接入成為 oscclk 即振盪器時鐘訊號, 該訊號受到暫存器 pllsts(oscoff) 位控制, 該位置 1 即開關合上,振盪器訊號允許通過, 然後分兩路傳輸, 一路直接過去, 另一路經過 pll 鎖相環模組。 一般不能直接使用 oscclk 訊號, 該訊號的頻率是由石英晶體產生, 頻率不夠高, 需要進入鎖相環倍頻和分頻後才能使用, 所以要使能 pll 鎖相環, 即對暫存器 pllsts(plloff) 位控制。 使能後通過暫存器 pllctr 來設定倍頻數, 倍頻值最大可設定為 10, 通常我們就設定倍頻數為10, 這樣通過 pll 後的時鐘信

號 vcoclk 即為 300mhz。 因為 f28335 晶元最高工作頻率是 150mhz, 所以此時還不能直接 cpu 核心使用, 還需要對其分頻處理, 可通過暫存器 pllsts(divsel)

位來設定分頻係數, 為了使 cpu 工作在最高頻率下, 通常設定分頻係數為 2, 即最終時鐘訊號 clkin 為 150mhz 供給 cpu。

stm32學習筆記(一)時鐘

初學stm32,寫個筆記,便於總結和記憶,就醬。時鐘配置是每個程式都需要的部分 通常寫成以下的形式 1.初始化rcc 2.使能hse hse的精度比hsi要高,一般所用到的時鐘頻率都是從hse裡分頻出來的,當hse故障時stm32會自動的轉到hsi,具體參考datasheet 3.等待hse穩定後,...

表示 抽象 控制 系統結構模式學習筆記

表示 抽象 控制 pac 體系結構模式以合作agent的層次形式定義了互動式軟體系統的一種結構。每個agent負責應用程式功能的某一特定方面,並且有表示,抽象,控制三個元件構成。這種細分將agent的人機互動部分和與其功能核心和它與其他agent的通訊分割開來。1.例子 乙個簡單的有比例表示的政治選...

git 分布式版本控制系統學習筆記

git的學習手記 git的使用方式有很多種 1 敲命令列的方式 2 帶介面的互動方式 3 ide的方式 idea myeclipse eclipse等 該筆記主要記錄命令列的方式 一 建立版本庫 1 建立乙個資料夾用於存放本地倉庫 2.通過git init命令把剛剛新建的資料夾變成git可以管理的倉...