前段時間做專案也是接觸到一款安森美半導體的一款分頻晶元-fs7140,網上關於它的資料並不是很多,我這裡也是做一下記錄,方便自己以後再用到不用去翻手冊,也為了幫助有用到這款晶元的人,節省一些開發時間。
在實際應用當中,7位從機位址要和1個讀/寫位組成8位的從機位址,對於熟悉iic通訊協議的各位這並不陌生。例如:addr1和addr0都接電源,那麼寫fs7140的裝置位址就是10110110—0xb6 ,讀fs7140的裝置位址就是10110111—0xb7。(讀0寫1)
那麼,裝置位址知道了,我們接下來就要學會怎麼去控制它,讓他輸出我們想要的頻率。
我個人還是建議大家看一下裝置框圖,這樣有助於理解:
從框圖可以看到有幾個關鍵的地方,我們會在後續操作暫存器的時候碰到:
1.reference divider(參考分頻器)的時鐘**的選擇:它的時鐘**有兩種,1種是xin和xout輸入的晶振時鐘,另外1種就是ref輸入的外部參考時鐘。
2.feedback divider(反饋分頻器)的時鐘**的選擇:它的時鐘**有兩種,1種是post divider(後置分頻器),另外1種是vco(電壓控制振盪器voltage controlled oscillator)。
知道這兩個關鍵地方,後續操作暫存器時就不需要糾結了。
ok,到這裡我們就對fs7140有了大概的了解。那我們怎麼控制它輸出一定的頻率,它最終的頻率和什麼有關?
資料手冊種有這樣乙個計算公式:
其中:fclk就是fs7140輸出的最終頻率;fref是輸入到內部的時鐘頻率,即晶振的頻率或外部參考時鐘頻率,看你硬體電路和暫存器選擇用的哪乙個,這是乙個定值;nf是反饋分頻器的係數;nr是參考分頻器的係數;nrx是後置分頻器的係數。值得注意的是:npx是由三個量決定的
從後置分頻器的框圖不難看出又分了三個小分頻器np1、np2和np3,而npx就是等於他們的乘積,即npx=np1×np2×np3。
那麼,接下來來看看fs7140的暫存器:
一共如上所示8個暫存器。進過我們上面分析:我們需要操作的暫存器位數有如下幾個:
1.refdiv[0:11]:參考分頻器nr的係數。
2.bit 12:參考分頻器的時鐘**選擇位,清0選擇晶振,置1選擇ref(外部參考時鐘)。
3.shut1和shut2:開關機選擇位,清0使能,置1關機,值得注意的是:這兩位需要一樣,即同0或同1。當然了,我們需要讓fs7140正常工作,所以這兩位都是0。
4.post3[0:1]:np3的係數
5.post2[0:3]:np2的係數
6.post1[0:3]:np1的係數
7.fbkdiv[0:13]:反饋分頻器nf的係數。
8.bit 38:反饋分頻器的時鐘**選擇位,清0選擇voc,置1選擇後置分頻器。個人感覺影響不大,我選的voc。
9.bit 39:cmos/pecl輸出選擇位,選擇cmos輸出就可以。
關鍵操作的位大概就這麼多,各位在實際應用種根據實際情況再做修改。
現在舉個栗子:假如我外接27m的晶振,現在想讓fs7140輸出1m的頻率。那麼,我們根據上訴的配置方法,每個暫存器的值應該如下:
0x1b------參考分頻(nr)設定為27
0x40------np3=2、開啟shut1、選擇晶振作為參考分頻器的**
0x12------np1=2 np2=3 npx=2×3×2=12
0x0c------反饋分頻(nf)設定為12
0x80------選擇cmos輸出、選擇vco作為反饋分頻器的**
0x72------lc=500pf lr=12kω 電荷幫浦電流=11ua(這個可操作也可不操作)
0x00------開啟shut2
0x00------全部保留,必須置0
由公式:fclk=fref(nf/nr)(1/npx),那麼最終輸出頻率fclk=27*(12/27)*(1/12)=1m。
好的,知道了暫存器怎麼配置,那我們iic通訊格式是怎麼樣的呢?
很簡單就按照標準的iic協議就可以:
不過,值得注意的是:暫存器的位址是從首位址開始,即0x00開始。fs7140暫存器和flash儲存有點像,暫存器會自己偏移,所以,我們按照暫存器的值按順序通過iic資料線傳送出去即可。
到這裡差不多就結束了,各位學廢了嗎?還是要養成做記錄的好習慣,要不然以後用到又得翻手冊,麻煩滴很~
Node 中 關於Fs的api
require 的匯入規則 require 想要匯入自定義的模組 必須加路徑 dirname 模組中這個內建變數是當前模組所在的絕對路徑 fillename 相對於 dirname來講 多了模組名稱 fs內建模組 實現i o操作 以下結果自行測試 雖然我已經試了 let fs require fs ...
關於Nodejs中fs模組中檔案操作方法的使用
使用上基本相同,唯一的區別在於非同步的資料十一第二個引數的形式傳回 函式,而同步的方法返回值即處理的結果資料 fs.open fs.txt r function err,data fs.readfile 檔案路徑 讀取檔案的編碼格式預設為null 檔案讀取完成呼叫的 函式 fs.readfile f...
使用resize2fs調整ext4分割槽大小
安裝公司samba伺服器時對磁碟需求量估計不足,原本分的只有100gb,使用一段時間後磁碟就達到了 86 的使用量,我的情況 將一塊硬碟分成了兩個區,乙個100gb 乙個60gb 只使用了前100gb空間的內容,後面的分割槽沒有掛載,也沒有使用。屬於比較好處理的情況 我的步驟 1 umount 掉s...