0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ADC的SPI接口读取返回0xFF解决方案

星星科技指导员 来源:ADI 作者:Umesh Jayamohan 2023-02-17 09:56 次阅读

Umesh Jayamohan

系统中,ADC的SPI接口每次读取都会返回0xFF。可能出了什么问题?

答:

新一代GSPS(每秒千兆采样)ADC(模数转换器)在系统实现中提供了业界领先的性能和可靠性。但是,如果SPI接口每次读取都回读0xFF,那么这肯定是不可能的。这很可能意味着ADC内部的某些东西不符合要求。让我们找出它可能是什么。

最新一代GSPS ADC(例如AD9680)采用深亚微米65 nm CMOS工艺设计。为了达到所需的交流性能规格,该设计必须适应多个电压域(1.25 V、2.5 V、3.3 V)。通常,任何具有这些多个电压域的硅器件都需要某种电源排序。但是,ADI公司的设计人员内置了一些超基准电路,无需任何电源排序,使AD9680更易于客户在其系统中实现。

AD9680内置上电复位(POR)保姆电路,可控制所有电源轨。在该POR电路满足电源轨电平之前,器件将处于复位模式。在复位模式下,如果SPIVDD为1.8 V、2.5 V或3.3 V,ADC将通过SPI端口发送每次读取0xFF。看起来我们正在到达某个地方。这就是您最好的朋友是旧的可靠数字万用表 (DMM) 的地方。

使用数字万用表时,首先要检查的是AD9680各个引脚的电源电压。就POR电路而言,其中之一可能超出了范围。现在事情可能会变得棘手。请看图1,其中显示了AD9680-1250的框图原理图,时钟频率为1.25 GHz。 对于第一次看原理图的人来说,这里的一切看起来都很正常。此处未显示去耦电容,其他电源域也是如此。重点是1.25 V域,因为这是最小的电源电压。

poYBAGPu3riAPxeJAABCGm9gnCk930.png?la=en&imgver=1

图1.使用ADP1 LDO为AD25上的9680.1741 V域供电

ADP1741应有足够的空间为所有连接到1.25 V的域供电。然而,这里的罪魁祸首不是LDO,也不是ADC,而是毫无戒心的铁氧体磁珠。通常,铁氧体磁珠用于电网中,以过滤流向某个设备的功率。铁氧体磁珠中经常被忽视的一个参数是DCR(直流电阻)。那么,我们为什么要担心DCR?因为一位名叫乔治·西蒙·欧姆的绅士是这么说的。

欧姆定律指出,通过两点之间导体的电流与两点之间的电位差成正比。因此,ADP1741 LDO输出的电压可能为1.25 V,听起来不错。但是,如果测量ADC引脚或铁氧体磁珠另一侧的电压,DMM读数为1.12 V(假设标称电流)。这就是ADC SPI读数0xFF的真正原因。保姆显然对AD9680内部的电压不满意。

那么补救措施是什么?有一些选项:

1.选择不使用铁氧体磁珠。这可能会也可能不会使设计更容易受到噪声的影响。

2. 将LDO输出电压调高,以考虑铁氧体磁珠上的IR压降。但是,当未拉出足够的电流时,这可能会使AD9680面临过大的电压。

3. 选择另一个阻抗和载流能力相同但DCR(小于50 mΩ)的铁氧体磁珠。

4. 将电压输出拆分到相应的域(AVDD1、AVDD1_SR、DVDD、DRVDD),并使用具有较低 DCR 的铁氧体磁珠以确保适当的工作电压。

图 2 显示了上面讨论的选项 2 和 4。选项 4 提供了最佳折衷方案。但是,这确实会增加物料清单 (BOM) 成本,必须考虑到这一点。选项 4 还通过在 AVDD、DVDD 和 DRVDD 域之间提供一些滤波来提供更高的抗噪性。

pYYBAGPu3rqASjVeAACGvqSAJYI976.png?la=en&imgver=1

图 2:选择和使用铁氧体磁珠为 AD9680 供电的不同选项。

因此,下次您插入ADC时,发现它不起作用,并且SPI在每个读取周期都返回0xFF,您可能会感谢欧姆先生。在这种情况下,古老的数字万用表成为您的首选工具,而不是示波器或您友好的应用工程师。铁氧体磁珠当然可以为您的系统提供良好的抗噪性。但是,如果选择不当,并且不考虑欧姆定律,这个小元件可能会在实现ADC在系统中的真实性能时引起一些严重问题。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CMOS
    +关注

    关注

    58

    文章

    5665

    浏览量

    235054
  • adc
    adc
    +关注

    关注

    98

    文章

    6419

    浏览量

    543941
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1695

    浏览量

    91267
收藏 人收藏

    评论

    相关推荐

    SPI中断时读取会多接收多余的0Xff的原因?

    源代码,实现的是spi的写读(阻塞式) 改成中断时读取,代码如下 这种情况会多接收多余的0Xff 是哪里有问题呢
    发表于 03-13 07:53

    why???s3c2440中的spi驱动程序读取的数据都是0xff

    ;");printf("%.2X ", rx[ret]); } puts("");}在这里我调用这个函数循环的传一个地址,然后再传一个数据。当我短接mosi和miso时,数据返回正常,但是一旦接上外设,返回的数据都是0xff。求
    发表于 11-15 22:43

    why???s3c2440中的spi驱动程序读取的数据都是0xff

    返回正常,但是一旦接上外设,返回的数据都是0xff。当我想外设先传控制数据初始化外设,然后再循环传一个数据时,结果一样都是0xff求高手解答!!
    发表于 11-16 16:18

    why?s3c2440中的spi驱动程序读取的数据都是0xff

    调用这个函数循环的传一个地址,然后再传一个数据。当我短接mosi和miso时,数据返回正常,但是一旦接上外设,返回的数据都是0xff。求高手解答!!
    发表于 11-17 10:14

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

    现在用MSP430的硬件SPI,UCB0SPi,当我发送命令唤醒w25x64之后读取它的ID,但是总是返回
    发表于 11-10 14:52

    cyble-22001 SPI读取只得到0xFF

    你好,先生,我用SPI接口连接Cype 22001和热电偶IC,但是在读取数据时,我只得到0xFF。我的代码在这里。UTI8Max 31856A Read数据(UIT8 ReGuad
    发表于 11-22 17:07

    AD9361 SPI读回来的数据是0xFF

    最近在调9361的时候,发现在用SPI读寄存器标志,确认BBPLL是否锁定时,发现SPI读回来的数据是0xFF,感觉SPI读取存在问题,于是
    发表于 02-27 14:39

    通过SPI读取Who Am I register返回值为0xFF

    我对LSM6DS3有一个奇怪的问题。 上电后我尝试通过SPI读取Who Am I register。返回值为0xFF,如果我再次读取它将发送
    发表于 03-01 10:14

    为什么SPI读取的第一个字节总是0xFF

    你好,你好吗?我使用PIC32 MX250F128D作为主机,通过ADI与ADAU1701 DSP进行通信。写得很好,效果很好。然而,读回有一个问题:SPI读取的第一个字节总是0xFF。所以如果我
    发表于 10-14 13:43

    为什么 byte=SPIx_ReadWriteByte(0Xff);这里要写入0XFF

    SPIx_ReadWriteByte(W25X_ReadStatusReg); //发送读取状态寄存器命令 byte=SPIx_ReadWriteByte(0Xff); //读取一个字节
    发表于 10-14 22:04

    为什么往w25q128里面读取数据就写入0xff?

    为什么往w25q128里面读取数据就写入0xff?//读取SPI FLASH//在指定地址开始读取指定长度的数据//pBuffer:数据存储
    发表于 04-23 09:35

    RTThread SPI读取W25Q16设备ID返回 0XFF的问题怎么解决?

    RTThread SPI读取W25Q16设备ID返回 0XFF的问题怎么解决?
    发表于 02-17 07:21

    M031-SPI读写外挂flash为什么返回的都是0Xff

    我采用SPI对外挂的flash(w25q256)读取ID,寄存器状态,但返回的都是0Xff,查找问题许久,但还是没有解决,我尝试把自动硬件从选关闭了、速率降低了,但还是不行因此想向各位
    发表于 08-21 06:33

    MSP432P401R I2C读取MPU6050的数值为0xff但是 ACK 是正常的解决办法

    板子,队友让我开发开发陀螺仪,期间遇到了MSP432P401R读取MPU6050的数值为0xff但是 ACK 是正常的的问题,花了几天时间解决了,所以写一篇总结记录一下ouo。参考:I2C 读取总是
    发表于 12-06 14:06 18次下载
    MSP432P401R I2C<b class='flag-5'>读取</b>MPU6050的数值为<b class='flag-5'>0xff</b>但是 ACK 是正常的解决办法

    RTThread SPI 读取 W25Q16 设备ID 返回 0XFF,已解决

    硬件:stm32f103rct6最小系统板,Rtthread V4.0.1问题说明:参考RTthread官网SPI例程,刚开始报错无法查找到"spi10",读取到的全部是ff或者00等。储备知识
    发表于 12-22 19:44 7次下载
    RTThread <b class='flag-5'>SPI</b> <b class='flag-5'>读取</b> W25Q16 设备ID <b class='flag-5'>返回</b> <b class='flag-5'>0XFF</b>,已解决