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

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

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

ADC的SPI接口讀取返回0xFF解決方案

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:Umesh Jayamohan ? 2023-02-17 09:56 ? 次閱讀

Umesh Jayamohan

系統(tǒng)中,ADC的SPI接口每次讀取都會返回0xFF??赡艹隽耸裁磫栴}?

答:

新一代GSPS(每秒千兆采樣)ADC(模數(shù)轉(zhuǎn)換器)在系統(tǒng)實現(xiàn)中提供了業(yè)界領(lǐng)先的性能和可靠性。但是,如果SPI接口每次讀取都回讀0xFF,那么這肯定是不可能的。這很可能意味著ADC內(nèi)部的某些東西不符合要求。讓我們找出它可能是什么。

最新一代GSPS ADC(例如AD9680)采用深亞微米65 nm CMOS工藝設(shè)計。為了達到所需的交流性能規(guī)格,該設(shè)計必須適應(yīng)多個電壓域(1.25 V、2.5 V、3.3 V)。通常,任何具有這些多個電壓域的硅器件都需要某種電源排序。但是,ADI公司的設(shè)計人員內(nèi)置了一些超基準電路,無需任何電源排序,使AD9680更易于客戶在其系統(tǒng)中實現(xiàn)。

AD9680內(nèi)置上電復(fù)位(POR)保姆電路,可控制所有電源軌。在該POR電路滿足電源軌電平之前,器件將處于復(fù)位模式。在復(fù)位模式下,如果SPIVDD為1.8 V、2.5 V或3.3 V,ADC將通過SPI端口發(fā)送每次讀取0xFF。看起來我們正在到達某個地方。這就是您最好的朋友是舊的可靠數(shù)字萬用表 (DMM) 的地方。

使用數(shù)字萬用表時,首先要檢查的是AD9680各個引腳的電源電壓。就POR電路而言,其中之一可能超出了范圍?,F(xiàn)在事情可能會變得棘手。請看圖1,其中顯示了AD9680-1250的框圖原理圖,時鐘頻率為1.25 GHz。 對于第一次看原理圖的人來說,這里的一切看起來都很正常。此處未顯示去耦電容,其他電源域也是如此。重點是1.25 V域,因為這是最小的電源電壓。

poYBAGPu3riAPxeJAABCGm9gnCk930.png?la=en&imgver=1

圖1.使用ADP1 LDO為AD25上的9680.1741 V域供電。

ADP1741應(yīng)有足夠的空間為所有連接到1.25 V的域供電。然而,這里的罪魁禍首不是LDO,也不是ADC,而是毫無戒心的鐵氧體磁珠。通常,鐵氧體磁珠用于電網(wǎng)中,以過濾流向某個設(shè)備的功率。鐵氧體磁珠中經(jīng)常被忽視的一個參數(shù)是DCR(直流電阻)。那么,我們?yōu)槭裁匆獡腄CR?因為一位名叫喬治·西蒙·歐姆的紳士是這么說的。

歐姆定律指出,通過兩點之間導(dǎo)體的電流與兩點之間的電位差成正比。因此,ADP1741 LDO輸出的電壓可能為1.25 V,聽起來不錯。但是,如果測量ADC引腳或鐵氧體磁珠另一側(cè)的電壓,DMM讀數(shù)為1.12 V(假設(shè)標稱電流)。這就是ADC SPI讀數(shù)0xFF的真正原因。保姆顯然對AD9680內(nèi)部的電壓不滿意。

那么補救措施是什么?有一些選項:

1.選擇不使用鐵氧體磁珠。這可能會也可能不會使設(shè)計更容易受到噪聲的影響。

2. 將LDO輸出電壓調(diào)高,以考慮鐵氧體磁珠上的IR壓降。但是,當未拉出足夠的電流時,這可能會使AD9680面臨過大的電壓。

3. 選擇另一個阻抗和載流能力相同但DCR(小于50 mΩ)的鐵氧體磁珠。

4. 將電壓輸出拆分到相應(yīng)的域(AVDD1、AVDD1_SR、DVDD、DRVDD),并使用具有較低 DCR 的鐵氧體磁珠以確保適當?shù)墓ぷ麟妷骸?/p>

圖 2 顯示了上面討論的選項 2 和 4。選項 4 提供了最佳折衷方案。但是,這確實會增加物料清單 (BOM) 成本,必須考慮到這一點。選項 4 還通過在 AVDD、DVDD 和 DRVDD 域之間提供一些濾波來提供更高的抗噪性。

pYYBAGPu3rqASjVeAACGvqSAJYI976.png?la=en&imgver=1

圖 2:選擇和使用鐵氧體磁珠為 AD9680 供電的不同選項。

因此,下次您插入ADC時,發(fā)現(xiàn)它不起作用,并且SPI在每個讀取周期都返回0xFF,您可能會感謝歐姆先生。在這種情況下,古老的數(shù)字萬用表成為您的首選工具,而不是示波器或您友好的應(yīng)用工程師。鐵氧體磁珠當然可以為您的系統(tǒng)提供良好的抗噪性。但是,如果選擇不當,并且不考慮歐姆定律,這個小元件可能會在實現(xiàn)ADC在系統(tǒng)中的真實性能時引起一些嚴重問題。

審核編輯:郭婷

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

    關(guān)注

    58

    文章

    5640

    瀏覽量

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

    關(guān)注

    97

    文章

    6346

    瀏覽量

    543356
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1681

    瀏覽量

    91053
收藏 人收藏

    評論

    相關(guān)推薦

    SPI中斷時讀取會多接收多余的0Xff的原因?

    源代碼,實現(xiàn)的是spi的寫讀(阻塞式) 改成中斷時讀取,代碼如下 這種情況會多接收多余的0Xff 是哪里有問題呢
    發(fā)表于 03-13 07:53

    why???s3c2440中的spi驅(qū)動程序讀取的數(shù)據(jù)都是0xff

    ;");printf("%.2X ", rx[ret]); } puts("");}在這里我調(diào)用這個函數(shù)循環(huán)的傳一個地址,然后再傳一個數(shù)據(jù)。當我短接mosi和miso時,數(shù)據(jù)返回正常,但是一旦接上外設(shè),返回的數(shù)據(jù)都是0xff。求
    發(fā)表于 11-15 22:43

    why???s3c2440中的spi驅(qū)動程序讀取的數(shù)據(jù)都是0xff

    返回正常,但是一旦接上外設(shè),返回的數(shù)據(jù)都是0xff。當我想外設(shè)先傳控制數(shù)據(jù)初始化外設(shè),然后再循環(huán)傳一個數(shù)據(jù)時,結(jié)果一樣都是0xff求高手解答?。?/div>
    發(fā)表于 11-16 16:18

    why?s3c2440中的spi驅(qū)動程序讀取的數(shù)據(jù)都是0xff

    調(diào)用這個函數(shù)循環(huán)的傳一個地址,然后再傳一個數(shù)據(jù)。當我短接mosi和miso時,數(shù)據(jù)返回正常,但是一旦接上外設(shè),返回的數(shù)據(jù)都是0xff。求高手解答!!
    發(fā)表于 11-17 10:14

    硬件SPI讀取W25x64返回值一直是0xff

    現(xiàn)在用MSP430的硬件SPI,UCB0SPi,當我發(fā)送命令喚醒w25x64之后讀取它的ID,但是總是返回
    發(fā)表于 11-10 14:52

    cyble-22001 SPI讀取只得到0xFF

    你好,先生,我用SPI接口連接Cype 22001和熱電偶IC,但是在讀取數(shù)據(jù)時,我只得到0xFF。我的代碼在這里。UTI8Max 31856A Read數(shù)據(jù)(UIT8 ReGuad
    發(fā)表于 11-22 17:07

    AD9361 SPI讀回來的數(shù)據(jù)是0xFF

    最近在調(diào)9361的時候,發(fā)現(xiàn)在用SPI讀寄存器標志,確認BBPLL是否鎖定時,發(fā)現(xiàn)SPI讀回來的數(shù)據(jù)是0xFF,感覺SPI讀取存在問題,于是
    發(fā)表于 02-27 14:39

    通過SPI讀取Who Am I register返回值為0xFF

    我對LSM6DS3有一個奇怪的問題。 上電后我嘗試通過SPI讀取Who Am I register。返回值為0xFF,如果我再次讀取它將發(fā)送
    發(fā)表于 03-01 10:14

    為什么SPI讀取的第一個字節(jié)總是0xFF?

    你好,你好嗎?我使用PIC32 MX250F128D作為主機,通過ADI與ADAU1701 DSP進行通信。寫得很好,效果很好。然而,讀回有一個問題:SPI讀取的第一個字節(jié)總是0xFF。所以如果我
    發(fā)表于 10-14 13:43

    為什么 byte=SPIx_ReadWriteByte(0Xff);這里要寫入0XFF

    SPIx_ReadWriteByte(W25X_ReadStatusReg); //發(fā)送讀取狀態(tài)寄存器命令 byte=SPIx_ReadWriteByte(0Xff); //讀取一個字節(jié)
    發(fā)表于 10-14 22:04

    為什么往w25q128里面讀取數(shù)據(jù)就寫入0xff?

    為什么往w25q128里面讀取數(shù)據(jù)就寫入0xff?//讀取SPI FLASH//在指定地址開始讀取指定長度的數(shù)據(jù)//pBuffer:數(shù)據(jù)存儲
    發(fā)表于 04-23 09:35

    RTThread SPI讀取W25Q16設(shè)備ID返回 0XFF的問題怎么解決?

    RTThread SPI讀取W25Q16設(shè)備ID返回 0XFF的問題怎么解決?
    發(fā)表于 02-17 07:21

    M031-SPI讀寫外掛flash為什么返回的都是0Xff?

    我采用SPI對外掛的flash(w25q256)讀取ID,寄存器狀態(tài),但返回的都是0Xff,查找問題許久,但還是沒有解決,我嘗試把自動硬件從選關(guān)閉了、速率降低了,但還是不行因此想向各位
    發(fā)表于 08-21 06:33

    MSP432P401R I2C讀取MPU6050的數(shù)值為0xff但是 ACK 是正常的解決辦法

    板子,隊友讓我開發(fā)開發(fā)陀螺儀,期間遇到了MSP432P401R讀取MPU6050的數(shù)值為0xff但是 ACK 是正常的的問題,花了幾天時間解決了,所以寫一篇總結(jié)記錄一下ouo。參考:I2C 讀取總是
    發(fā)表于 12-06 14:06 ?18次下載
    MSP432P401R I2C<b class='flag-5'>讀取</b>MPU6050的數(shù)值為<b class='flag-5'>0xff</b>但是 ACK 是正常的解決辦法

    RTThread SPI 讀取 W25Q16 設(shè)備ID 返回 0XFF,已解決

    硬件:stm32f103rct6最小系統(tǒng)板,Rtthread V4.0.1問題說明:參考RTthread官網(wǎng)SPI例程,剛開始報錯無法查找到"spi10",讀取到的全部是ff或者00等。儲備知識
    發(fā)表于 12-22 19:44 ?7次下載
    RTThread <b class='flag-5'>SPI</b> <b class='flag-5'>讀取</b> W25Q16 設(shè)備ID <b class='flag-5'>返回</b> <b class='flag-5'>0XFF</b>,已解決