隨著技術的進步,低功耗物聯網(IoT)和邊緣/云計算需要傳輸更精確的數據。無線傳感系統是一個帶有24位模數轉換器(ADC)的高精度數據采集系統。在這種情況下,微控制器單元(MCU)能否負擔得起數據轉換器的串行高速接口是一個需要解決的問題。
本文介紹了設計 MCU 和 ADC 之間的高速串行外設接口 (SPI) 數據事務驅動程序的過程。以下部分將簡要描述優化 SPI 驅動程序的不同方法以及 ADC 和 MCU 上所需的配置。在簡要說明之后將提供 SPI 和直接存儲器存取 (DMA) 數據事務的示例代碼的詳細描述。
通用SPI驅動簡介
顧名思義,MCU 供應商以示例代碼的形式向每個 MCU 提供通用 SPI 驅動程序/API。通用的SPI驅動程序/API通常可以覆蓋大多數用戶的應用程序,這些應用程序可能會完成許多配置或確定語句。在一些特定場景下,例如ADC數據采集,通用SPI驅動程序無法滿足ADC數據的全速吞吐量,因為通用驅動程序中實現了太多不同的配置。應用程序中未使用的配置會產生額外的開銷并導致時間延遲。
框架
為了通過SPI提取ADC的輸出數據,我們會選擇MCU作為主要器件,因為它具有低功耗和高速性能。然而,當數據事務基于 ADI SPI 驅動程序時,速度可能會由于 ADC 至 MCU 應用中不起作用的命令而降低。為了充分發揮 ADC 的潛在速度,我們對 ADuCM4050 和AD7768-1進行了實驗,并嘗試了可能的解決方案。盡管 ADuCM4050 的最大輸出數據速率為 256 kHz(在默認濾波器下),但目前僅限于 8 kHz。加速輸出速率的潛在解決方案包括刪除不必要的命令和激活 DMA 控制器。這些想法將在以下部分中實現。
MCU為主
ADuCM4050 MCU 是一款超低功耗微控制器系統,主時鐘速率為 26 MHz。該系統由 Arm ? Cortex ? -M4F 處理器驅動。ADuCM4050 配備三個 SPI,每個 SPI 包含兩個 DMA 通道(接收和發送),用于與 DMA 控制器連接。DMA 控制器和 DMA 通道提供了在內存和外設之間傳輸數據的方法。這是一種有效的數據分配方式,可以釋放核心來處理其他任務。
數據流連接圖
ADuCM4050 和 AD7768-1 用作數據事務示例模型。引腳連接如圖所示。
它們的復位信號從 MCU GPIO28 發送到 ADC RST_1 引腳,數據就緒信號從 ADC DRDY_1 發送到 MCU GPIO27。其余引腳連接為通用 SPI 配置,其中 MCU 為主,ADC 為節點。SDI_1接收來自MCU的ADC寄存器讀/寫命令,DOUT_1將輸出數據發送到MCU。
數據交易的實現
中斷數據事務
為了實現連續的數據傳輸,我們使用GPIO27(連接到DRDY)作為中斷觸發器。當 ADC 向 GPIO27 發送數據就緒信號時,MCU 運行回調函數,其中包含數據事務命令。如所示,數據采集必須在中斷A和中斷B之間的時間間隔內進行。
借助ADI SPI驅動程序,我們可以輕松實現ADC和MCU之間的數據交互。然而,由于驅動器中的冗余命令,ADC ODR 將被限制為 8 kHz。為了加快這個過程,我們將代碼修剪到最精簡。我們介紹兩種 DMA 數據傳輸方法:基本模式 DMA 傳輸和乒乓模式 DMA 傳輸。
中斷處理程序優化
數據就緒信號之間的時間間隔不僅包括回調函數中命令的執行時間,還包括 ADI GPIO 中斷處理程序中命令的執行時間。
MCU 激活時,CPU 運行啟動文件(即startup.s)。所有事件處理程序都在該文件中定義,包括 GPIO 中斷處理程序。一旦觸發GPIO中斷,就會執行中斷處理函數(即ADI GPIO驅動程序中的GPIO_A_INT_HANDLER和GPIO_B_INT_HANDLER)。在一般的中斷處理函數中,CPU 會在所有 GPIO 引腳中搜索觸發的引腳,清除其中斷狀態,并運行注冊的回調函數。在所使用的ADC-MCU應用中,DRDY是唯一的中斷信號。因此,我們希望修剪該函數以加快該過程。可能的解決方案包括(1)在啟動文件中重定向以及(2)修改原始中斷處理程序。
另一方面,修改則需要自定義GPIO驅動。我們采用后一種選項并修改該函數,其中它僅清除連接到 DRDY 的引腳的中斷狀態并直接進入回調函數。請注意,需要通過取消選中包含在構建目標中的框來阻止原始 GPIO 驅動程序。
使用所選的ADC(AD7768-1)和MCU(ADuCM4050或MAX32660),我們可以通過SPI實現高速數據傳輸。為了達到速度優化的目標,我們根據ADI SPI驅動程序進行數據傳輸,但扣除了冗余命令。此外,DMA 控制器的激活可以釋放內核并加速連續數據傳輸。浮思特科技專注在新能源汽車、電力新能源、家用電器、觸控顯示,4大領域,為客戶提供單片機(MCU)產品選型采購的一站式服務,是一家擁有核心技術的電子元器件供應商和解決方案商。