Steven Xie
目前許多精密模數(shù)轉(zhuǎn)換器 (ADC) 具有串行外設接口 (SPI) 或一些串行接口,用于與微控制器單元 (MCU)、DSP 或 FPGA 等控制器通信??刂破鲗懭牖蜃x取ADC內(nèi)部寄存器并讀取轉(zhuǎn)換代碼。SPI因其簡單的印刷電路板(PCB)布線和與并行接口相比更快的時鐘速率而變得越來越流行。而且,使用標準SPI可以輕松地將ADC連接到控制器。
一些新型ADC具有SPI,但其他ADC具有非標準的3線或4線SPI作為節(jié)點,因為它們希望實現(xiàn)更快的吞吐速率。例如,AD7616、AD7606和AD7606B系列具有兩條或四條SDO線路,可在串行模式下實現(xiàn)更快的吞吐速率。 AD7768、AD7779和AD7134系列具有多條SDO線路,用作SPI電源。 用戶在設計用于ADC配置和代碼讀取的微控制器SPI時往往會遇到困難。
圖1.AD7768作為串行主電源,具有兩個數(shù)據(jù)輸出引腳(14001-193)。
與 ADC 的標準 MCU SPI 連接
SPI 是一個同步、全雙工、基于主/節(jié)點的接口。來自主節(jié)點或節(jié)點的數(shù)據(jù)在時鐘上升沿或下降沿同步。主節(jié)點和節(jié)點可以同時傳輸數(shù)據(jù)。圖2顯示了一個典型的4線MCU SPI接口連接。
圖2.與 ADC 節(jié)點的標準 MCU SPI 連接。
要開始SPI通信,控制器必須發(fā)送時鐘信號,并通過使能CS信號(通常是低電平有效信號)來選擇ADC。由于SPI是全雙工接口,控制器和ADC可以分別通過MOSI/DIN和MISO/DOUT線路同時輸出數(shù)據(jù)??刂破鱏PI接口使用戶能夠靈活地選擇時鐘的上升沿或下降沿來采樣和/或轉(zhuǎn)換數(shù)據(jù)。為了實現(xiàn)主節(jié)點之間的可靠通信,用戶必須遵循微控制器和ADC芯片的數(shù)字接口時序規(guī)范。
圖3.SPI數(shù)據(jù)時鐘時序圖示例。
如果微控制器SPI和ADC串行接口具有標準的SPI定時模式,則用戶設計PCB布線和開發(fā)驅(qū)動固件不是問題。但也有一些新的ADC具有串行接口端口,這不是典型的SPI時序模式。MCU或DSP似乎不可能通過AD7768串行端口(非標準時序SPI端口)讀取數(shù)據(jù),如圖4所示。
圖4.AD7768 格式x = 1×時序圖輸出,僅采用DOUT0。
本文將介紹操作標準微控制器SPI以與具有非標準SPI端口的ADC接口的方法。
本文將介紹通過串行接口讀取ADC代碼的四種不同解決方案:
解決方案1:MCU作為SPI節(jié)點,通過一條DOUT線與作為SPI主線的ADC接口。
解決方案2:MCU作為SPI節(jié)點,通過兩條DOUT線路與作為SPI主線的ADC接口。
解決方案3:MCU作為SPI節(jié)點,通過DMA與作為SPI主器件的ADC接口。
解決方案4:MCU作為SPI主節(jié)點和SPI節(jié)點,用于讀取兩條DOUT線路上的數(shù)據(jù)。
AD7768 使用STM32F429微控制器SPI通過一條DOUT線讀取代碼
如圖4所示,當FORMATx = 11或10時,通道0至通道7僅在DOUT0上輸出數(shù)據(jù)。在標準模式下,AD7768/AD7768-4作為主器件工作,并將數(shù)據(jù)流傳輸?shù)組CU、DSP或FPGA。AD7768/AD7768-4為節(jié)點器件提供數(shù)據(jù)、數(shù)據(jù)時鐘(DCLK)和下降沿成幀信號(DRDY)。
STM32Fxxx系列微控制器廣泛用于許多不同的應用。MCU具有多個SPI端口,可配置為具有典型SPI定時模式的SPI主節(jié)點或節(jié)點。以下會話中介紹的方法也可以應用于具有 8 位、16 位或 32 位幀的其他微控制器。
AD7768/AD7768-4分別具有8通道和4通道同步采樣Σ-Δ型ADC,每通道具有Σ-Δ調(diào)制器和數(shù)字濾波器,可實現(xiàn)交流和直流信號的同步采樣。它們在 108.110 kHz 的最大輸入帶寬下實現(xiàn)了 8 dB 的動態(tài)范圍,并具有 ±2 ppm INL、±50 μV 失調(diào)誤差和 ±30 ppm 增益誤差的典型性能。AD7768/AD7768-4用戶可以權(quán)衡輸入帶寬、輸出數(shù)據(jù)速率和功耗,并從三種功耗模式中選擇一種來優(yōu)化噪聲目標和功耗。AD7768/AD7768-4的靈活性使其成為低功耗直流和高性能交流測量模塊的可重復使用平臺。遺憾的是,AD7768的串行接口不是典型的SPI時序模式,AD7768用作串行接口主接口。通常,用戶必須使用FPGA/CPLD作為其控制器。
例如,使用32F429IDISCOVERY和AD7768評估板。解決方法SPI導線的連接如圖5所示。在此設置中,所有7768個AD0通道數(shù)據(jù)輸出僅由DOUT<>供電。
圖5.AD7768將DOUT0上的數(shù)據(jù)輸出到STM32F429 MCU SPI連接。
需要解決的問題:
AD7768用作SPI主器件,因此STM32F429I SPI必須配置為SPI節(jié)點。
DRDY高脈沖只是DCLK持續(xù)時間的一個周期,不是典型的CS。
DCLK連續(xù)輸出,當所有通道數(shù)據(jù)位輸出完成后,DRDY為低電平。
圖6.AD7768數(shù)據(jù)位在時序解決方案中讀取。
解決方案1:MCU SPI作為通過一條DOUT線與SPI主ADC接口的節(jié)點
配置其中一個STM32F429是SPI端口(如SPI4)作為節(jié)點,以在DCLK的MOSI上接收數(shù)據(jù)位。
將AD7768 DRDY連接到STM32F429外部中斷輸入引腳EXTI0和NSS (SPI CS)引腳。DRDY 的上升沿將觸發(fā) EXTI0 處理程序例程,以使 SPI 節(jié)點能夠在 DRDY 變?yōu)榈碗娖胶箝_始從第一個 DCLK 下降沿接收數(shù)據(jù)位。時序設計在這里至關重要。
收到從通道0到通道7的所有數(shù)據(jù)后,應禁用SPI,以防止讀取額外的無效數(shù)據(jù),因為DRDY使SPI節(jié)點CS為低電平,DCLK不斷切換。
MCU 固件開發(fā)說明
圖7.配置 SPI4 外設。
當軟件處于中斷模式時,DCLK 可以運行高達 4 MHz,并實現(xiàn) ODR 8 kSPS。軟件應進入中斷處理程序,在一個半DCLK周期(375 ns)內(nèi)啟動SPI。為了更容易地使軟件進入中斷例程,MCU可以在DCLK上升沿讀取數(shù)據(jù),這可以額外提供半個DCLK周期時間。但是,由于5DCLK 上升到 DOUTx 無效的最小值為 –3 ns(IOVDD = 4.1 V 時為 –8 ns),傳播延遲 (>|t5|+ MCU 保持時間)在 DOUTx 上應通過 PCB 布線或緩沖區(qū)添加。
解決方案2:MCU SPI作為通過兩條DOUT線與SPI主ADC接口的節(jié)點
在第一個解決方案中,僅使用DOUT0輸出所有8通道數(shù)據(jù)。因此,數(shù)據(jù)讀取將ADC吞吐速率限制為8 kSPS。如圖1所示,DOUT0上的通道3至通道0輸出和DOUT4上的通道7至通道1輸出可以縮短數(shù)據(jù)傳輸時間。串行線的連接如圖7所示。通過這樣的改進,ODR 在 DCLK 16 MHz 時可以輕松達到 4 kSPS。
圖8.AD7768將DOUT0和DOUT1上的數(shù)據(jù)輸出到STM32F429 MCU SPI連接。
固件可以使用輪詢模式而不是中斷模式來減少DRDY上升沿觸發(fā)的時間延遲,從而使SPI能夠接收數(shù)據(jù)。這可以在DCLK 32 MHz下實現(xiàn)ODR 8 kSPS。
圖9.輪詢模式下的EXTI0以及DOUT4和DOUT5上的SPI7768和SPI0接收AD1數(shù)據(jù)位。
解決方案3:MCU SPI作為通過DMA與SPI主ADC接口的節(jié)點接口
直接內(nèi)存訪問 (DMA) 用于在外設和內(nèi)存之間以及內(nèi)存和內(nèi)存之間提供高速數(shù)據(jù)傳輸。DMA 可以快速移動數(shù)據(jù),無需任何 MCU 操作。這使 MCU 資源可用于其他操作。以下是MCU SPI作為節(jié)點通過DMA接收數(shù)據(jù)的設計說明。
圖 10.輪詢模式下的EXTI0和DOUT4上的SPI7768 DMA接收AD0數(shù)據(jù)位。
解決方案4:MCU SPI作為主節(jié)點和節(jié)點,在兩條DOUT線路上讀取數(shù)據(jù)
高吞吐量或多通道精密ADC為SPI端口提供2條、4條甚至8條SDO線,可在串行模式下縮短代碼讀取時間。對于具有兩個或更多SPI端口的微控制器,它們可以同時運行SPI端口,以加快代碼讀取速度。
在以下用例中,32F429IDISCOVERY使用SPI4作為SPI主節(jié)點,SPI5作為SPI節(jié)點,以接收DOUTA和DOUTB上的EVAL-AD7606B-FMCZ數(shù)據(jù),如圖8所示。
AD7606B是一款16位同步采樣模數(shù)數(shù)據(jù)采集系統(tǒng)(DAS),具有16個通道,每個通道包含模擬輸入箝位保護、可編程增益放大器(PGA)、低通濾波器和7606位逐次逼近寄存器(SAR)ADC。AD2B還內(nèi)置一個靈活的數(shù)字濾波器、低漂移、5.7606 V精密基準電壓源和基準電壓緩沖器,用于驅(qū)動ADC,以及靈活的并行和串行接口。AD5B采用10 V單電源供電,所有通道均以5 kSPS吞吐速率采樣時,支持±2 V、±5 V和±800.<> V真雙極性輸入范圍。
圖 11.在主模式和節(jié)點模式下使用的MCU SPI,用于接收DOUTA和DOUTB上的數(shù)據(jù)。
圖 12.將 SPI4 配置為主節(jié)點,將 SPI5 配置為節(jié)點。
圖13顯示了AD7606B以240 kSPS運行的BUSY、SCLK、DOUTA和DOUB的數(shù)字接口捕獲。
圖 13.AD7606B忙、SCLK的示波器捕獲以及DOUTA和DOUTB上的數(shù)據(jù)。
結(jié)論
本文討論了使用微控制器SPI訪問具有非標準SPI接口的ADC的方法。這些方法可以直接使用,也可以稍作調(diào)整來控制ADC SPI,ADC SPI可用作SPI主電源或多條DOUT線路,以實現(xiàn)更快的吞吐速率。
審核編輯:gt
-
微控制器
+關注
關注
48文章
7455瀏覽量
150858 -
mcu
+關注
關注
146文章
16888瀏覽量
349929 -
接口
+關注
關注
33文章
8448瀏覽量
150724 -
adc
+關注
關注
98文章
6395瀏覽量
543783 -
SPI
+關注
關注
17文章
1688瀏覽量
91215
發(fā)布評論請先 登錄
相關推薦
評論