0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

能否用MCU訪問非標(biāo)準(zhǔn)SPI接口?

Excelpoint世健 ? 2024-01-09 08:23 ? 次閱讀

當(dāng)前許多精密模數(shù)轉(zhuǎn)換器(ADC)具有串行外設(shè)接口(SPI)或某種串行接口,用以與包括微控制器單元(MCU)、DSPFPGA在內(nèi)的控制器進(jìn)行通信??刂破鲗懭牖蜃x取ADC內(nèi)部寄存器并讀取轉(zhuǎn)換碼。SPI的印刷電路板(PCB)布線簡單,并且有比并行接口更快的時鐘速率,因而越來越受歡迎。而且,使用標(biāo)準(zhǔn)SPI很容易將ADC連接到控制器。


一些新型ADC具有SPI,但有些ADC具有非標(biāo)準(zhǔn)的3線或4線SPI作為從機,因為它們希望實現(xiàn)更快的吞吐速率。例如,AD7616, AD7606和AD7606B系列有兩條或四條SDO線,在串行模式下可提供更快的吞吐速率。AD7768, AD7779和AD7134系列有多條SDO線,用作SPI主機。用戶在設(shè)計微控制器SPI以配置ADC和讀取代碼時往往會遇到困難。

48383620-ae85-11ee-aa22-92fbcf53809c.jpg

圖1. AD7768用作串行主機,

具有兩個數(shù)據(jù)輸出引腳(14001-193)。

與ADC的標(biāo)準(zhǔn)MCUSPI連接SPI是一種同步、全雙工、主從式接口。來自主機或從機的數(shù)據(jù)在時鐘上升沿或下降沿同步。主機和從機可以同時傳輸數(shù)據(jù)。圖2顯示了典型的4線MCU SPI接口連接。

4841b7c2-ae85-11ee-aa22-92fbcf53809c.png

圖2. 與ADC從機的標(biāo)準(zhǔn)MCU SPI連接。

要開始SPI通信,控制器必須發(fā)送時鐘信號,并通過使能CS信號(通常是低電平有效信號)來選擇ADC。SPI是全雙工接口,因此控制器和ADC可以分別通過MOSI/DIN和MISO/DOUT線同時輸出數(shù)據(jù)??刂破鱏PI接口允許用戶靈活選擇時鐘的上升沿或下降沿來采樣和/或移位數(shù)據(jù)。為了在主機和從機之間進(jìn)行可靠的通信,用戶必須遵守微控制器和ADC芯片的數(shù)字接口時序規(guī)范。

484e7b92-ae85-11ee-aa22-92fbcf53809c.jpg

圖3. SPI數(shù)據(jù)時鐘時序圖示例。

如果微控制器SPI和ADC串行接口具有標(biāo)準(zhǔn)SPI時序模式,那么用戶設(shè)計PCB布線和開發(fā)驅(qū)動器固件不成問題。但是,有些新型ADC的串行接口端口不是典型的SPI時序模式。MCU或DSP似乎不可能通過AD7768串行端口(一種非標(biāo)準(zhǔn)時序SPI端口)讀取數(shù)據(jù),如圖4所示。

485bbab4-ae85-11ee-aa22-92fbcf53809c.png

圖4. AD7768 FORMATx=1×?xí)r序圖,

僅通過DOUT0輸出。

本文將介紹操縱標(biāo)準(zhǔn)微控制器SPI以便與具有非標(biāo)準(zhǔn)SPI端口的ADC接口的方法。

本文會給出四種通過串行接口讀取ADC碼的解決方案:

解決方案1:MCU作為SPI從機,通過一條DOUT線與作為SPI主機的ADC接口。

解決方案2:MCU作為SPI從機,通過兩條DOUT線與作為SPI主機的ADC接口。

解決方案3:MCU作為SPI從機,通過DMA與作為SPI主機的ADC接口。

解決方案4:MCU作為SPI主機和SPI從機,通過兩條DOUT線讀取數(shù)據(jù)。

STM32F429微控制器SPI
通過一條DOUT線讀取AD7768代碼如圖4所示,當(dāng)FORMATx=11或10時,通道0至通道7僅通過DOUT0輸出 數(shù)據(jù)。在標(biāo)準(zhǔn)工作模式下,AD7768/AD7768-4為主機工作,數(shù)據(jù)流入MCU、DSP或FPGA。AD7768/AD7768-4向從機提供數(shù)據(jù)、數(shù)據(jù)時鐘(DCLK)和下降沿幀使能信號(DRDY)。

STM32Fxxx系列微控制器廣泛用于很多不同的應(yīng)用中。該MCU有多個SPI端口,可以使用典型的SPI時序模式將其配置為SPI主機或從機。下文中介紹的方法也可應(yīng)用于其他具有8位、16位或32位幀的微控制器。

AD7768/AD7768-4分別為8通道和4通道同步采樣∑-?型ADC,每通道均有∑-?型調(diào)制器和數(shù)字濾波器,支持交流和直流信號的同步采樣。這些器件在110.8kHz的最大輸入帶寬下實現(xiàn)了108dB動態(tài)范圍,具備±2ppm INL、±50μV偏置誤差和±30ppm增益誤差的典型性能。AD7768/AD7768-4用戶可在輸入帶寬、輸出數(shù)據(jù)速率和功耗之間進(jìn)行權(quán)衡,并選擇三種功耗模式之一以優(yōu)化噪聲目標(biāo)和功耗。AD7768/AD7768-4的靈活性使其 成為適合低功耗直流和高性能交流測量模塊的可重復(fù)使用平臺。遺憾的是,AD7768的串行接口不是典型SPI時序模式,而且AD7768充當(dāng)串行接口主機。一般而言,用戶必須使用FPGA/CPLD作為其控制器。例如,使用32F429IDISCOVERY和AD7768評估板。變通SPI線的連接如圖5所示。在這種設(shè)置下,AD7768的所有八通道數(shù)據(jù)僅通過DOUT0輸出。

485fa340-ae85-11ee-aa22-92fbcf53809c.png

圖5. AD7768通過DOUT0將數(shù)據(jù)輸出

到STM32F429 MCU SPI連接。

需要解決的問題:

AD7768用作SPI主機,故必須將STM32F429I SPI配置為SPI從機。

DRDY 高電平脈沖只持續(xù)一個DCLK周期,這不是典型的CS。

完成所有通道數(shù)據(jù)位的輸出之后,DCLK繼續(xù)輸出,DRDY為低電平。

486cf3a6-ae85-11ee-aa22-92fbcf53809c.png

圖6. 時序解決方案中的AD7768數(shù)據(jù)位讀取。

解決方案1:MCU SPI作為從機
通過一條DOUT線與SPI主機ADC接口

將STM32F429的一個SPI端口(如SPI4)配置為從機,以DCLK速率接收MOSI上的數(shù)據(jù)位。

將AD7768DRDY 連接到STM32F429外部中斷輸入引腳EXTI0和NSS (SPI CS) 引腳。DRDY 的上升沿將觸發(fā)EXTI0處理例程,以使SPI從機能夠在DRDY 變?yōu)榈碗娖街蟮牡谝粋€DCLK下降沿開始接收數(shù)據(jù)位。時序設(shè)計在這里至關(guān)重要。

接收到通道0至通道7的所有數(shù)據(jù)后,應(yīng)禁用SPI以防止讀取額外的無效數(shù)據(jù),因為 DRDY 會使SPI從機 CS 變?yōu)榈碗娖?,并且DCLK保持切換。

MCU固件開發(fā)注意事項

4871347a-ae85-11ee-aa22-92fbcf53809c.jpg

圖7. 配置SPI4外設(shè)。

當(dāng)軟件處于中斷模式時,DCLK運行速率可以高達(dá)4 MHz,實現(xiàn)8 kSPS的 ODR。軟件應(yīng)進(jìn)入中斷處理程序,在一個半DCLK周期(375 ns)內(nèi)啟動SPI。為使軟件更輕松地進(jìn)入中斷例程,MCU可以在DCLK上升沿讀取數(shù)據(jù),從而提供額外的半個DCLK周期時間。但是, t5 DCLK上升到DOUTx無效最小值為–3 ns(IOVDD = 1.8 V時為–4 ns),因此DOUTx上的傳播延遲(>|t5| + MCU 保持時間) 應(yīng)通過PCB布線或緩沖增加。

解決方案2:MCU SPI作為從機
通過兩條DOUT線與SPI主機ADC接口

在第一種解決方案中,僅使用DOUT0來輸出所有8通道數(shù)據(jù)。因此,數(shù)據(jù)讀取將ADC吞吐速率限制為8 kSPS。如圖1所示,在DOUT0上輸出通道0至通道3,在DOUT1上輸出通道4至通道7,可以減少數(shù)據(jù)傳輸時間。串行線的連接如圖7所示。通過這種改進(jìn),在DCLK為4 MHz時,ODR可以輕松達(dá)到16 kSPS。

487944b2-ae85-11ee-aa22-92fbcf53809c.png

圖8. AD7768通過DOUT0和DOUT1將

數(shù)據(jù)輸出到STM32F429 MCU SPI連接。

固件可以不使用中斷模式,而使用輪詢模式,以減少從DRDY上升沿觸發(fā)到使能SPI接收數(shù)據(jù)的時間延遲。這樣可以在DCLK為8MHz時實現(xiàn)32kSPS的ODR。

487da188-ae85-11ee-aa22-92fbcf53809c.jpg

圖9. EXTI0處于輪詢模式,SPI4和SPI5通過DOUT0和DOUT1接收AD7768數(shù)據(jù)位。

解決方案3:MCU SPI作為從機
通過DMA與SPI主機ADC接口

直接存儲器訪問(DMA)用于在外設(shè)與存儲器之間以及存儲器與存儲器之間提供高速數(shù)據(jù)傳輸。DMA可以迅速移動數(shù)據(jù)而不需要任何MCU操作,這樣可以騰出MCU資源用于執(zhí)行其他操作。下面是MCU SPI用作從機通過DMA接收數(shù)據(jù)的設(shè)計說明。

488186e0-ae85-11ee-aa22-92fbcf53809c.jpg

圖10. EXTI0處于輪詢模式,SPI4 DMA通過DOUT0接收AD7768數(shù)據(jù)位。

解決方案4:MCU SPI作為主機和從機
通過兩條DOUT線讀取數(shù)據(jù)

高吞吐量或多通道精密ADC為SPI端口提供兩條、四條甚至八條SDO線,以在串行模式下更快地讀取代碼。對于具有兩個或更多個SPI端口的微控制器,這些SPI端口可以同時運行以加快代碼的讀取。

在以下使用案例中,32F429IDISCOVERY使用SPI4作為SPI主機,SPI5作為SPI 從機,通過DOUTA和DOUTB接收EVAL-AD7606B-FMCZ數(shù)據(jù),如圖8所示。

AD7606B是一款16位同步采樣模數(shù)轉(zhuǎn)換數(shù)據(jù)采集系統(tǒng)(DAS),具有八個通道,每個通道均包含模擬輸入箝位保護(hù)、可編程增益放大器(PGA)、低通濾波器和16位逐次逼近寄存器(SAR)型ADC。

AD7606B還內(nèi)置靈活的數(shù)字濾波器、低漂移2.5V精密基準(zhǔn)電壓源和基準(zhǔn)電壓緩沖器,可驅(qū)動ADC及靈活的并行和串行接口。AD7606B采用5V單電源供電,支持±10V、±5V和±2.5V真雙極性輸入范圍,所有通道均能以800 kSPS的吞吐速率采樣。

488558e2-ae85-11ee-aa22-92fbcf53809c.jpg

圖11. 在主從模式下使用MCU SPI通過DOUTA和DOUTB接收數(shù)據(jù)。

48894c7c-ae85-11ee-aa22-92fbcf53809c.jpg

圖12. SPI4配置為主機,SPI5配置為從

圖13顯示了AD7606B以240kSPS運行時BUSY、SCLK、DOUTA和DOUB的數(shù)字接口截圖。

488d87ce-ae85-11ee-aa22-92fbcf53809c.jpg

圖13. AD7606B BUSY、SCLK以及DOUTA和DOUTB上的數(shù)據(jù)的示波器截圖。

48920cf4-ae85-11ee-aa22-92fbcf53809c.gif

總結(jié)

本文討論了使用微控制器SPI訪問具有非標(biāo)準(zhǔn)SPI接口的ADC的方法。這些方法可以直接使用,也可以稍加調(diào)整即可控制ADC SPI;其可作為SPI主機使用,也可以與多條DOUT線配合使用以提高吞吐速率。

原文轉(zhuǎn)自亞德諾半導(dǎo)體

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17148

    瀏覽量

    351195
  • adc
    adc
    +關(guān)注

    關(guān)注

    98

    文章

    6498

    瀏覽量

    544640
  • 串行接口
    +關(guān)注

    關(guān)注

    3

    文章

    328

    瀏覽量

    42613
  • SPI接口
    +關(guān)注

    關(guān)注

    0

    文章

    258

    瀏覽量

    34382
收藏 人收藏

    評論

    相關(guān)推薦

    操縱MCU SPI接口訪問非標(biāo)準(zhǔn)SPI ADC

    目前許多精密模數(shù)轉(zhuǎn)換器 (ADC) 具有串行外設(shè)接口SPI) 或一些串行接口,用于與微控制器單元 (MCU)、DSP 或 FPGA 等控制器通信??刂破鲗懭牖蜃x取ADC內(nèi)部寄存器并
    的頭像 發(fā)表于 02-15 12:31 ?4459次閱讀
    操縱<b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>以<b class='flag-5'>訪問</b><b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b> ADC

    使用微控制器SPI訪問具有非標(biāo)準(zhǔn)SPI接口的ADC的方法

    本文討論了使用微控制器SPI訪問具有非標(biāo)準(zhǔn)SPI接口的ADC的方法。這些方法可以直接使用,也可以稍加調(diào)整即可控制ADC
    發(fā)表于 01-07 06:20

    MCU SPI訪問具有非標(biāo)準(zhǔn)SPI接口ADC的方法,錯過絕對后悔

    關(guān)注、星標(biāo)公眾號,不錯過精彩內(nèi)容整理:黃工來源:亞德諾半導(dǎo)體提問:能否MCU訪問非標(biāo)準(zhǔn)SPI
    發(fā)表于 11-01 06:45

    MCU SPI接口如何訪問非標(biāo)準(zhǔn)SPI ADC

    當(dāng)前許多精密模數(shù)轉(zhuǎn)換器(ADC)具有串行外設(shè)接口(SPI)或某種串行接口,用以與包括微控制器單元(MCU)、DSP和FPGA在內(nèi)的控制器進(jìn)行通信。控制器寫入或讀取ADC內(nèi)部寄存器并讀取
    發(fā)表于 11-04 06:54

    能否MCU訪問非標(biāo)準(zhǔn)SPI接口?

    好文章當(dāng)然要分享啦~如果您喜歡這篇文章,請聯(lián)系后臺添加白名單,歡迎轉(zhuǎn)載喲~問題能否MCU訪問非標(biāo)準(zhǔn)SP
    發(fā)表于 11-04 06:13

    MCU SPI接口如何訪問非標(biāo)準(zhǔn)SPI ADC

    的印刷電路板(PCB)布線簡單,并且有比并行接口更快的時鐘速率,因而越來越受歡迎。而且,使用標(biāo)準(zhǔn)SPI很容易將ADC連接到控制器。一些新型ADC具有SPI,但有些ADC具有
    發(fā)表于 11-04 07:49

    操縱MCU SPI接口訪問非標(biāo)準(zhǔn)SPI ADC

    ADI公司 Steven Xie,產(chǎn)品應(yīng)用工程師 問題:能否MCU訪問非標(biāo)準(zhǔn)SPI
    的頭像 發(fā)表于 01-17 16:34 ?5041次閱讀

    如何使用MCU訪問非標(biāo)準(zhǔn)SPI接口

    能否 MCU 訪問非標(biāo)準(zhǔn) SPI 接口?答案可以,
    發(fā)表于 12-22 12:49 ?13次下載
    如何使用<b class='flag-5'>MCU</b><b class='flag-5'>訪問</b><b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>

    使用MCU SPI訪問具有非標(biāo)準(zhǔn)SPI接口ADC的方法

    關(guān)注、星標(biāo)公眾號,不錯過精彩內(nèi)容整理:黃工來源:亞德諾半導(dǎo)體提問:能否MCU訪問非標(biāo)準(zhǔn)SPI
    發(fā)表于 10-25 16:51 ?14次下載
    使用<b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>訪問</b>具有<b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>ADC的方法

    MCU SPI接口訪問非標(biāo)準(zhǔn)SPI ADC的方法!

    當(dāng)前許多精密模數(shù)轉(zhuǎn)換器(ADC)具有串行外設(shè)接口(SPI)或某種串行接口,用以與包括微控制器單元(MCU)、DSP和FPGA在內(nèi)的控制器進(jìn)行通信??刂破鲗懭牖蜃x取ADC內(nèi)部寄存器并讀取
    發(fā)表于 10-28 21:06 ?10次下載
    <b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>訪問</b><b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b> ADC的方法!

    非標(biāo)準(zhǔn)語法;請使用 _一文讀懂使用MCU SPI訪問具有非標(biāo)準(zhǔn)SPI接口ADC的方法

    好文章當(dāng)然要分享啦~如果您喜歡這篇文章,請聯(lián)系后臺添加白名單,歡迎轉(zhuǎn)載喲~問題能否MCU訪問非標(biāo)準(zhǔn)SP
    發(fā)表于 10-29 09:51 ?8次下載
    <b class='flag-5'>非標(biāo)準(zhǔn)</b>語法;請使用 _一文讀懂使用<b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>訪問</b>具有<b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>ADC的方法

    非標(biāo)準(zhǔn)語法;請使用 _MCU SPI接口訪問非標(biāo)準(zhǔn)SPI ADC的方法!

    的印刷電路板(PCB)布線簡單,并且有比并行接口更快的時鐘速率,因而越來越受歡迎。而且,使用標(biāo)準(zhǔn)SPI很容易將ADC連接到控制器。一些新型ADC具有SPI,但有些ADC具有
    發(fā)表于 10-29 09:51 ?8次下載
    <b class='flag-5'>非標(biāo)準(zhǔn)</b>語法;請使用 _<b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>訪問</b><b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b> ADC的方法!

    MCU SPI接口訪問非標(biāo)準(zhǔn)SPI ADC的方法

    當(dāng)前許多精密模數(shù)轉(zhuǎn)換器(ADC)具有串行外設(shè)接口(SPI)或某種串行接口,用以與包括微控制器單元(MCU)、DSP和FPGA在內(nèi)的控制器進(jìn)行通信??刂破鲗懭牖蜃x取ADC內(nèi)部寄存器并讀取
    發(fā)表于 02-09 11:28 ?5次下載
    <b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b><b class='flag-5'>接口</b><b class='flag-5'>訪問</b><b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b> ADC的方法

    能否MCU訪問非標(biāo)準(zhǔn)SPI接口?當(dāng)然,方法交給你~

    能否MCU訪問非標(biāo)準(zhǔn)SPI接口?當(dāng)然,方法交給你~
    的頭像 發(fā)表于 10-17 14:37 ?564次閱讀
    <b class='flag-5'>能否</b><b class='flag-5'>用</b><b class='flag-5'>MCU</b><b class='flag-5'>訪問</b><b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>?當(dāng)然,方法交給你~

    能否MCU訪問非標(biāo)準(zhǔn)SPI接口?

    的印刷電路板(PCB)布線簡單,并且有比并行接口更快的時鐘速率,因而越來越受歡迎。而且,使用標(biāo)準(zhǔn)SPI很容易將ADC連接到控制器 。 一些新型ADC具有SPI,但有些ADC具有
    的頭像 發(fā)表于 12-23 12:25 ?856次閱讀
    <b class='flag-5'>能否</b><b class='flag-5'>用</b><b class='flag-5'>MCU</b><b class='flag-5'>訪問</b><b class='flag-5'>非標(biāo)準(zhǔn)</b><b class='flag-5'>SPI</b><b class='flag-5'>接口</b>?