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

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

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

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

analog_devices ? 來(lái)源:未知 ? 2023-12-23 12:25 ? 次閱讀

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

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

wKgaomWGYk2AHJwHAACJBVac8Q4874.jpg

圖1. AD7768用作串行主機(jī),具有兩個(gè)數(shù)據(jù)輸出引腳(14001-193)。

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

wKgaomWGYk2AG25hAADOjXXLSzI241.png

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

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

wKgaomWGYk2AVw8YAAFXra3zBOs417.jpg

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

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

wKgaomWGYk6AA0e0AADK23wAW18972.png

圖4. AD7768 FORMATx=1×?xí)r序圖,僅通過(guò)DOUT0輸出。

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

本文會(huì)給出四種通過(guò)串行接口讀取ADC碼的解決方案:

  • 解決方案1:MCU作為SPI從機(jī),通過(guò)一條DOUT線(xiàn)與作為SPI主機(jī)的ADC接口。

  • 解決方案2:MCU作為SPI從機(jī),通過(guò)兩條DOUT線(xiàn)與作為SPI主機(jī)的ADC接口。

  • 解決方案3:MCU作為SPI從機(jī),通過(guò)DMA與作為SPI主機(jī)的ADC接口。

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

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

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

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

wKgaomWGYk6AM3TxAAEapZqH4Js813.png

圖5. AD7768通過(guò)DOUT0將數(shù)據(jù)輸出到STM32F429 MCU SPI連接。

需要解決的問(wèn)題:

  • AD7768用作SPI主機(jī),故必須將STM32F429I SPI配置為SPI從機(jī)。

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

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

wKgaomWGYk6AGJJsAADmnNozpBg968.png

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

解決方案1:MCU SPI作為從機(jī)
通過(guò)一條DOUT線(xiàn)與SPI主機(jī)ADC接口
  • 將STM32F429的一個(gè)SPI端口(如SPI4)配置為從機(jī),以DCLK速率接收MOSI上的數(shù)據(jù)位。

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

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

MCU固件開(kāi)發(fā)注意事項(xiàng)

wKgaomWGYk6AaXWaAAIlqiOhk2o251.jpg

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

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

解決方案2:MCU SPI作為從機(jī)
通過(guò)兩條DOUT線(xiàn)與SPI主機(jī)ADC接口

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

wKgaomWGYk6AG50JAAFKHAGqrbg103.png

圖8. AD7768通過(guò)DOUT0和DOUT1將數(shù)據(jù)輸出到STM32F429 MCU SPI連接。

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

wKgaomWGYk6AeLO2AAEGDMJhCGU592.jpg

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

解決方案3:MCU SPI作為從機(jī)
通過(guò)DMA與SPI主機(jī)ADC接口

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

wKgaomWGYk6AdiT3AAEB8TxuoMw186.jpg

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

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

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

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

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

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

wKgaomWGYk6AHi6nAACHAjkff5c552.jpg

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

wKgaomWGYk-AbiUfAAHrQ4tORZg020.jpg

圖12. SPI4配置為主機(jī),SPI5配置為從

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

wKgaomWGYk-ATXFsAAGRjCi5aCA377.jpg

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

wKgaomWGYk-AXDHkAAASTM-su2U017.gif

總結(jié)

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

wKgaomWGYk-AfGZTAACKAR9sZ48815.gif ? ?查看往期內(nèi)容↓↓↓


原文標(biāo)題:能否用MCU訪問(wèn)非標(biāo)準(zhǔn)SPI接口?

文章出處:【微信公眾號(hào):analog_devices】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


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

    關(guān)注

    6

    文章

    4680

    瀏覽量

    15905

原文標(biāo)題:能否用MCU訪問(wèn)非標(biāo)準(zhǔn)SPI接口?

文章出處:【微信號(hào):analog_devices,微信公眾號(hào):analog_devices】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問(wèn)如何通過(guò)MCU訊號(hào)來(lái)控制OPA2990S SHDN PIN?

    由于OPA2990S SHDN PIN并非標(biāo)準(zhǔn)的邏輯訊號(hào)控制接腳,請(qǐng)問(wèn)有什么簡(jiǎn)單的轉(zhuǎn)換電路,可以讓MCU訊號(hào)控制此SHDN PIN?
    發(fā)表于 08-14 08:07

    spi_flash_read接口訪問(wèn)SPI外掛的FLASH,無(wú)法返回是怎么回事?

    _EXT3(HSPI), 0x3); SET_PERI_REG_MASK(SPI_USER(HSPI), BIT(5)); 做了以上初始化后,spi_flash_read這個(gè)接口
    發(fā)表于 07-18 06:40

    ESP32-S3能否直接DMA通過(guò)SPI讀取ADC數(shù)據(jù)?

    項(xiàng)目中需從SPI的ADC中讀取數(shù)據(jù)。目前是ADC的DRDY信號(hào)觸發(fā)GPIO中斷,在中斷中讀取SPI數(shù)據(jù),這樣會(huì)占用較多內(nèi)核時(shí)間,無(wú)法提高ADC更新速度。能否直接
    發(fā)表于 06-06 06:51

    STM32H743 DMA接收固定長(zhǎng)度數(shù)據(jù)后,并未立即進(jìn)入DMA傳輸完成中斷,為什么?

    743 單工只接收SPI做從接收AD7768非標(biāo)準(zhǔn)SPI口數(shù)據(jù)時(shí)發(fā)現(xiàn),DMA接收固定長(zhǎng)度數(shù)據(jù)后,并未立即進(jìn)入DMA傳輸完成中斷,而是在SPI的CS拉高后才進(jìn)入了DMA傳輸完成中斷。從現(xiàn)
    發(fā)表于 05-30 08:21

    請(qǐng)問(wèn)可以FX3作為SPI的Master,通過(guò)GPIF II接口實(shí)現(xiàn)SPI通信嗎?

    GPIF II接口實(shí)現(xiàn)SPI通信嗎? 2.請(qǐng)問(wèn)FX3的GPIF II接口輸出是什么電平標(biāo)準(zhǔn)呢?TTL or CMOS or 485 or 422? 我的外設(shè)是422電平,如果要用FX3
    發(fā)表于 05-29 07:46

    stm32mp157在linux系統(tǒng)下,串口的波特率如何使用非標(biāo)準(zhǔn)波特率?

    請(qǐng)問(wèn)stm32mp157在linux系統(tǒng)下,串口的波特率如何使用非標(biāo)準(zhǔn)波特率153600。內(nèi)核或者設(shè)備樹(shù)里需要怎么改動(dòng)? 麻煩答復(fù)一下,最好能給個(gè)詳細(xì)的更改示例,謝謝!
    發(fā)表于 03-14 06:21

    詢(xún)問(wèn)2.2V的非標(biāo)準(zhǔn)ttl電平轉(zhuǎn)3.3V的cmos電平轉(zhuǎn)換器

    我想實(shí)現(xiàn)2.2V的非標(biāo)準(zhǔn)ttl電平轉(zhuǎn)3.3V的cmos電平,請(qǐng)問(wèn)有什么合適的電平轉(zhuǎn)換器或者是電壓比較器推薦嗎?
    發(fā)表于 03-11 09:30

    TC275D系列的芯片支持標(biāo)準(zhǔn)CANFD能配置成非標(biāo)準(zhǔn)CANFD的嗎?

    TC275D系列的芯片支持標(biāo)準(zhǔn)CANFD,是否也能配置成非標(biāo)準(zhǔn)CANFD的呢,有那位技術(shù)人員配置過(guò)嗎?
    發(fā)表于 02-06 08:31

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

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

    XV4001BC車(chē)載SPI/I2C輸出接口的數(shù)字輸出

    XV4001BC車(chē)載SPI/I2C輸出接口的數(shù)字輸出,可實(shí)現(xiàn)角速度輸出和溫度傳感器輸出,滿(mǎn)足汽車(chē)導(dǎo)航和通訊系統(tǒng)的要求。SPI / I2C 輸出
    發(fā)表于 01-02 16:33 ?0次下載

    請(qǐng)問(wèn)ADE7878A能否采集測(cè)量一個(gè)低頻比如5Hz的非標(biāo)準(zhǔn)正弦波信號(hào) ?

    請(qǐng)問(wèn)ADE7878A能否采集測(cè)量一個(gè)低頻比如5Hz的非標(biāo)準(zhǔn)正弦波信號(hào)?謝謝!
    發(fā)表于 12-26 06:49

    請(qǐng)問(wèn)ad7763使用的接口是不是標(biāo)準(zhǔn)SPI協(xié)議?

    ,請(qǐng)問(wèn)ad7763所使用的接口不是標(biāo)準(zhǔn)SPI協(xié)議嗎?或者ad7763的spi是ad作為主機(jī)而控制器只是從機(jī)?
    發(fā)表于 12-12 08:23

    SPI接口的相關(guān)介紹

    SPI和IIC接口一樣是非常常見(jiàn)的開(kāi)發(fā)板接口,但與IIC相比,SPI設(shè)計(jì)了一種二進(jìn)制流的交互方式,擁有更快的傳輸速度,它可以在任何兩個(gè)嵌入式設(shè)備之間交換消息,ELF1開(kāi)發(fā)板也是通過(guò)
    的頭像 發(fā)表于 12-06 15:49 ?1218次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的相關(guān)介紹

    AD5412非標(biāo)的三線(xiàn)制SPI如何與標(biāo)準(zhǔn)的四線(xiàn)制SPI通信?

    AD5412非標(biāo)的三線(xiàn)制SPI如何與標(biāo)準(zhǔn)的四線(xiàn)制SPI通信,芯片手冊(cè)中的時(shí)序不是標(biāo)準(zhǔn)SPI時(shí)序
    發(fā)表于 12-01 06:31

    ADV7611輸入是否支持1024*1024這樣的非標(biāo)準(zhǔn)分辨率?

    你們好: 請(qǐng)教一下,ADV7611輸入是否支持1024*1024這樣的非標(biāo)準(zhǔn)分辨率?
    發(fā)表于 11-29 08:11