作者:李鵬剛 摘要:本文介紹使用Cypress PSoC5中DMA實現多路輸入切換以及ADC采樣保存的自動控制,有效減少對CPU時間占用。 概述 在系統設計中,很多時候會采用多路輸入,分時切換選通進行ADC轉換,可以減少ADC器件的數量。 圖1是多路輸入選通的結構圖。目前很多芯片內部已經含有多路選擇器,已經無需外接了。但是對于多路選通的控制,在一般的系統設計中都是需要采用軟件代碼寫寄存器的方式實現。這種方法通常是在ADC轉換完成觸發中斷,軟件響應中斷,再進行下一路輸入的選通切換。所以,至少需要中斷響應,壓棧,寄存器讀寫,退棧,退出中斷幾個階段。 在這種系統中,如果需要對多路輸入做實時采樣,CPU就需要頻繁響應中斷,主程序任務被頻繁打斷。顯而易見,CPU時間額外開銷會增加;在一些多任務系統中,還會因為需要有任務堆棧保存和切換[2],影響會更加明顯。并且因為軟件處理周期等原因,延長硬件切換和轉換時間間隔,降低系統工作效率。 Cypress的PSoC5是基于ARM Cortex-M3內核的高性能芯片, 支持0.5~5.5V的寬范圍電壓輸入。更重要的是,PSoC5內含非常豐富的可編程資源UDB(Universal Digital Blocks)[3],以及強大的DMA控制系統,可以非常方便地實現對各種外圍資源的讀取和控制。 通過PSoC5的DMA進行結構和配置都非常靈活[3],可以通過對UDB,SRAM,ADC等資源的操作,實現多路輸入的全自動切換,而不需要CPU響應中斷和軟件干預,無需占用CPU的時間。 ![]() |