我用的是德州儀器 ( Texas Instruments Incorporated.) 的TMS320F2812這個 DSP ,因為當時念電力電子技術,需要用到所謂的數位控制,所以才用這個系列。這裡感謝胡教授 (K.I. Hwu) 的指導與實驗室的資源,有幸能參與你的計畫案,讓我們這群學生永生難忘。更要感謝其碩士班學長們的教導,以及他們熱心的協助,這間實驗室的同學我太需要感謝他們了。
特別感謝黃老師 (Simon Huang) 和其實驗室同學的交流,讓我在短時間內能學習DSP這項工具,並且和我的同學一起教學相長,還有和您們一起參加「台灣大學燃料電池機車」的計畫,難能可貴的機會,使我見識到台大團隊的能力,由衷感謝您們,沒有您們的協助,沒有這些學習心得分享給大家。
開發用的工具是:VP2812EVM,VP2812EVM為旺陽電企業股份有限公司 (Value Provider International Corp.) 所研發生產,可以展現德州儀器公司的 TMS320F2812 DSP 大部份的特性及功能之模擬板。他是長下圖這個樣子:(有圖有真相)
要如何開始學DSP呢?
如果有人肯教當然是最好的,肯教你又不留一手的又是更少的!如果沒有也沒關係,天助自助者!基本上,你最好是學過MCU之類的微控制器,像是8051之類的,總之,你要懂一點電腦、微處理機的運作基礎原理。
假設你已經知道MCU了,也已經用過了。先恭喜你,DSP已經會了一半,因為這些東西(DSP、MCU、MPU)都是大同小異的,你可以用類比的概念來學習,察覺他們之中相同和相異之處,學起來就會更快更順手!簡單來說,一般的MCU像是轎車,DSP則像是跑車,DSP速度較快也較複雜,導致有人說他難,本來複雜的東西就比較難懂一些!
接著,上網收集DSP的所有datasheet和Example,這些都是學習的主要資料!非常重要。俗話說,模仿學習的第一步,先run一些範例程式,調一調參數,觀察其輸出變化。如果不懂,再去看datasheet,datasheet看不懂就去玩玩範例程式,這是一個疊代過程,疊幾次之後,通常你會懂一些東西。
你一定會問,靠!datasheet那麼多,要怎麼看。別的DSP我不知道,TMS320F2812來說,你大概只要印三本出來看,分別是:
- spru078c_TMS320x281x System Control and Interrupts Reference Guide (Rev. C).pdf這是整個DSP的運作精神,了解中斷並運用中斷,還有系統中的參數(比如clock等)設定,如果都懂的話,整個DSP你都可以用的得心應手!
- spru060d_TMS320x281x Analog-to-Digital Converter (ADC) Reference Guide (Rev. D).pdf這是做控制的輸入部分。
- spru065c_TMS320x281x Event Manager (EV) Reference Guide (Rev. C).pdf這是控制的輸出部分。
- sprc097_Peripheral_Examples_v100,學DSP可以先用這個來切入,詳細又簡單的程式,可以讓你有感覺。
- sprc087_IQmath_Library,因為TMS320F2812是Fixed-Point的處理器,如果運算需要浮點數,可以用這個Library來模擬完成此需求功能。
- sprc080_dmclib_v322,這是用來做馬達控制的範例程式,有很多有用的Function可以參考,其中PID控制器就是一個,依樣畫葫蘆,你可以修修改改完成你要的工作。
- 先玩玩PWM這塊功能,用Example的範例程式也沒關西,觀察輸出的現象,改一改程式然後感覺一下DSP的行為。
- PWM能夠調整之後,再來玩玩ADC的部分,因為ADC是輸入功能,你要知道ADC的輸出才會有感覺,最簡單的方式是用ADC來調整PWM,怎麼寫?用兩個程式,把他"接"起來,ADC的輸出=PWM的輸入。因為PWM你已經用過了,基本上不會有錯,把ADC接近來如果不會動,大概就是ADC這塊的問題。
- 最後再玩玩中斷、系統這一塊,記得Simon Huang曾說過:能夠完美操作DSP的中斷,將能將DSP的功能發揮地淋漓盡致。事實也是如此!
下圖是以前用DSP做的Switching Power Supply,Power Satge是由國哲同學製作的,這是一個升壓型(Boost Type)轉換器,給大家參考參考,鼓勵你也可以做這樣的東西。
最後想跟大家提倡的觀念:
寫程式沒什麼了不起,用DSP也沒什麼了不起。程式人人會寫,電路也人人都會做,只要是接受過訓練的,做這些都沒有太大問題,差別在於等級問題,你做的可能是80分,我做的可能是79分,而做出100分的東西通常很少,也很少是一個人完成,100分的產物通常是一個Team完成!
這些東西也不過是這樣,程式是死的,而人是活的。在許可範圍內,你寫的程式其實要跟大家分享,一個人的想法一定有限,由眾人集合起來的價值會是更大的。想想看,這些程式等你死掉的時候,還會有價值嗎?DSP也許早就改朝換代了。
當Free Source很多時,資源不再是壟斷的,對所有人都有利!實在搞不懂有些人藏東藏西,怕別人知道他腦袋的東西,甚至做出自私自利傷害別人的行為,我真得不懂,也不了解。人的價值不在於這些實體,而是在於背後的精神,這些精神是別人怎麼學寫學不懂的,這才是價值!
dear t5318019
回覆刪除i introduce myself first.
i never believe dsp library,
and always doubt of dsp AppNote.
我相信你對一件事情的執著,但我也接受PH.D等級的作法.
接受不代表認同,只代表可承受這些事情的發生.
分享你一則文章,國防役課程裏面有學到的[justice]
關鍵字: justice 國防役 文章
ptt可以找到心得報告.
我支持copyright也接受copyleft的想法.
文明的進步代表著以更快速的學習前人心血結晶
並且改善與創新的方式表現舊有的事物.
但絕不是抄襲或把前人努力結果占為己有.
撰寫DSP程式這只是一種工具,只是代表會操作DSP
就如同操作WINDOWS系統不代表了解內部運作演算.
我想什麼是[死掉之後還有的價值]
應該是Concept可以永遠流傳吧!
當然這不是指花拳繡腿毫無參考價值的學術文章
也不是指曇花一現無法實用的硬體電路
而是讓一群人或一個人對你保持尊重認同你的想法
開放資源不是濫用資源,當你生活水準提高[不是代表有錢
而是你懂得環保懂得永續]
我不會想要用山寨機的或者沒有保固的產品
因為我不想製造太多垃圾
我相信中國與印度的崛起或者是四十年前台灣的崛起
是因為資本主義的美國以成本與速度的考量讓所謂的技術
開放給較低技術的國家給予大量複製與壓榨勞工.
現有優渥的環境是拜前人努力抄襲與大量複製的結果.
分享一本很有理想的書[國家的品格] [in ntut lib]
內容有點偏執但是可以參考.
希望過往煙硝味可以換得清新自然空氣.
你我還有PH.D等級的人也只是要混口飯吃罷了.
不然唸書要幹麻.
花了45mins寫這狗屁倒灶的東西.
請問輸入及輸出接角如何接?EX:ADCIN有兩組0-7 PWM也有兩組輸出,如果我由A組ADC輸入0-4 5個PIN的量測訊號,我要他們得連乘結果,我該由何PIN來取得結果(雖然PWM是輸出但這是控制訊號)?謝謝!!
回覆刪除Dear chin,
回覆刪除連乘結果不一定需要從PWM輸出,可以改由GPIO輸出觀察結果,因為是數位訊號,你可以直接讀取暫存器的數值,或是接個DAC用電表讀取輸出電壓,這樣就知道結果是不是正確了。