基于PSoC5 DMA的多路輸入與ADC自動控制設(shè)計
概述
本文引用地址:http://m.butianyuan.cn/article/142465.htm在系統(tǒng)設(shè)計中,很多時候會采用多路輸入,分時切換選通進(jìn)行ADC轉(zhuǎn)換,可以減少ADC器件的數(shù)量。
圖1是多路輸入選通的結(jié)構(gòu)圖。目前很多芯片內(nèi)部已經(jīng)含有多路選擇器,已經(jīng)無需外接了。但是對于多路選通的控制,在一般的系統(tǒng)設(shè)計中都是需要采用軟件代碼寫寄存器的方式實現(xiàn)。這種方法通常是在ADC轉(zhuǎn)換完成觸發(fā)中斷,軟件響應(yīng)中斷,再進(jìn)行下一路輸入的選通切換。所以,至少需要中斷響應(yīng),壓棧,寄存器讀寫,退棧,退出中斷幾個階段。
在這種系統(tǒng)中,如果需要對多路輸入做實時采樣,CPU就需要頻繁響應(yīng)中斷,主程序任務(wù)被頻繁打斷。顯而易見,CPU時間額外開銷會增加;在一些多任務(wù)系統(tǒng)中,還會因為需要有任務(wù)堆棧保存和切換,影響會更加明顯。并且因為軟件處理周期等原因,延長硬件切換和轉(zhuǎn)換時間間隔,降低系統(tǒng)工作效率。
Cypress的PSoC5是基于ARM Cortex-M3內(nèi)核的高性能芯片, 支持0.5~5.5V的寬范圍電壓輸入。更重要的是,PSoC5內(nèi)含非常豐富的可編程資源UDB(Universal Digital Blocks),以及強(qiáng)大的DMA控制系統(tǒng),可以非常方便地實現(xiàn)對各種外圍資源的讀取和控制。
通過PSoC5的DMA進(jìn)行結(jié)構(gòu)和配置都非常靈活,可以通過對UDB,SRAM,ADC等資源的操作,實現(xiàn)多路輸入的全自動切換,而不需要CPU響應(yīng)中斷和軟件干預(yù),無需占用CPU的時間。
在PSoC5中的多路輸入自動切換控制
本設(shè)計中以4路輸入,12位精度ADC轉(zhuǎn)換為例。
在PSoC5中使用硬件MUX,并使用UDB內(nèi)部的控制寄存器Control_Reg作為MUX的選通控制信號。PSoC5中ADC轉(zhuǎn)換器的EoC信號(End of Convert)[4] 作為DMA的觸發(fā)信號。
需要使用兩個DMA數(shù)據(jù)流通道,一個是ADC完成轉(zhuǎn)換(EoC信號有效)后,把ADC中的數(shù)據(jù)寫入SRAM中的buffer[]保存;另一個是把SRAM中的數(shù)組index[]依次寫入到Control_Reg中控制MUX的選通。12bit ADC轉(zhuǎn)換精度,4路輸入,所以在SRAM中有兩個數(shù)組:uint16 buffer[4]和 uint8 index=[4] {0x0,0x1,0x2,0x3}。
評論