作者:Emphatec工程經(jīng)理
最近我被要求設(shè)計一款雙通道訊號轉(zhuǎn)換器,從雙極輸入電壓到雙極輸出電流;我馬上假設(shè)這應(yīng)該是一個純類比設(shè)計,但有些事情卻困擾了我。其中一個明確的需求是,每個通道要有一顆根據(jù)輸入訊號變化亮度的雙色LED,并以紅燈或是綠燈來分別指示訊號為正或是負。
這會遇到兩個問題;第一,LED驅(qū)動會需要升壓,所以沒有接近零的死區(qū);第二,我可以預(yù)見一個狀況是當(dāng)訊號為負,LED(以及可能是輸出)卻呈現(xiàn)正值,反之亦然。這種狀況的機械當(dāng)量稱作為后座力(backlash)。我認為并非要采用可變電壓來驅(qū)動LED,而是采用PWM驅(qū)動器如Linear的LTC6992,但我仍會產(chǎn)生一個偏移,也無法解決后座力的問題。
此外,我會需要兩顆PWM驅(qū)動器(每個通道一顆),這也可能得增加額外的電路讓LED由紅變綠;于是一個合乎邏輯的作法是去找適合的低階微控制器(MCU)。
我先從Microchip的產(chǎn)品找起,但我發(fā)現(xiàn)適合的是記憶體容量較小的16C系列,意味著得使用組合語言。我曾在其他的開發(fā)案使用過16C系列,卻遇到指令集不足(該系列MCU是RISC架構(gòu)元件)以及記憶體區(qū)段(memorysegmentation)問題;因為這樣的偏見,我又找了NXP的元件以及Freescale的ARMCortex-M0晶片。
因為選擇太多,我開始猶豫不決。不過以前我曾在一個案子采用Freescale的CodeWarrior開發(fā)環(huán)境,卻發(fā)現(xiàn)我們得額外付費才能取得我們需要的支援服務(wù),這又讓我產(chǎn)生偏見。
總之我現(xiàn)在可以告訴你,我已經(jīng)成為Cypreess的PSoC 的支持者。我曾采用PSoC 1做過許多個小規(guī)模設(shè)計案,以及用PSoC 5做過一個大型設(shè)計;我也聽過一些關(guān)于采用ARMCortex-M0核心的PSoC 4的一些熱門討論,但看到PSoC 4的價格,實在是令我驚喜。
還好我的設(shè)計案在價格上有一些機動性,而且據(jù)了解,PSoC 的配置靈活性通常能減少一些外部元件的運用;當(dāng)然,我們已經(jīng)有仿真器以及一些經(jīng)驗,所以我決定進一步看看這款元件以及搭配的PSoC 4PioneerKit開發(fā)工具(可相容Arduino外殼)。該款開發(fā)工具采用多才多藝的PSoC 4200系列元件,這也成為我的設(shè)計案出發(fā)點。
想知道更多與PSoC 相關(guān)的資訊?請連結(jié)Cypress資源中心
Cypress提供了很棒的開發(fā)環(huán)境PSoC Creator,能讓你進行產(chǎn)品配置、編程以及除錯;PSoC 的架構(gòu)介于MCU與FPGA之間,除了處理器核心,該元件具備一些可配置的類比電路,以及一些可編程數(shù)位電路(不過與FPGA的又不太相同)。開發(fā)者也能隨著元件取得一系列所需功能IP進行配置;該開發(fā)環(huán)境如下圖所示。
PSoC Creator開發(fā)環(huán)境
如果你需要ADC,只要從開發(fā)環(huán)境右方的元件選擇區(qū)選擇該功能區(qū)塊并拖曳下來;如果你需要PWM,也是一樣的步驟。要運算放大器或是SPI控制器嗎?也沒問題!把它們連結(jié)在一起以取得一個架構(gòu)圖,然后選擇哪些接腳與不同的功能關(guān)聯(lián),完成了硬體編譯,就可以準備好撰寫應(yīng)用程式。
每個你所配置的元素都有其代碼與標頭,在開發(fā)環(huán)境的“WorkspaceExplorer”區(qū)域可以找到;所有的API呼叫包含在標頭檔案中,能輕易地復(fù)制剪貼到你的程式碼中。在開發(fā)環(huán)境的右下角可以看到符號與“OpenDatasheet”選項,每個零件都有自己的規(guī)格表,你能在進行配置前先取得,或是在配置完成后按滑鼠右鍵來取得。
PSoC Creator還包含免費的KeilC編譯器,可提供的支援也是免費的;令我個人滿意的是,此系統(tǒng)并非以Eclipse為基礎(chǔ)。如果你真的想要冒險,你也可以采用一種Cypress稱為“datapaths”的技巧,打造小型硬體機器或其他功能。甚至還可以使用Verilog語言。
(審核編輯: 小王子)
分享