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