This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS8688EVM-PDK:SPI通信-引脚⁓RST/⁓PD - DAISY -⁓REFSEL和其它引脚

Guru**** 2577385 points
Other Parts Discussed in Thread: ADS8688

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/575437/ads8688evm-pdk-spi-communication---pin-rst-pd---daisy---refsel-and-others-pins

部件号:ADS8688EVM-PDK
主题中讨论的其他部件:ADS8688

我配置了ADSEVM,以便与主机微控制器进行SPI通信。

在我的配置中,ADSEVM是我的主控制器的唯一从属设备,即MicroControllerUnit (Arduino UNO)。 我想使用内部引用。

我想知道我是否正确连接了这些针脚。

⁓RST/⁓PD引脚

我读了ADS8688 (仅ADC)的数据,该引脚可用于通过将ADS设置为关闭电源或重置模式一段时间来设置它。 但我也看到我可以通过使用SDI进入此模式:所以我决定将它缩短为来自微控制器的3.3V电源(通过DVDD引脚为ADSEVM供电)。  

我从接头J1 "获得"此信号,我想知道我要对来自J3的接头执行什么操作。

菊花

正如我所说的,我没有其他奴隶,所以我把它接地

⁓反向选择

正如我所说,我想使用内部参考,因此我将其短接至地

AGND和DGND

我想,看原理图,它们都连接到引脚GND。 I仅对位于AVDD引脚上的GND的微控制器接地短路。

AVDD和DVDD

我将AVDD连接到5V,将DVDD连接到3.3V MCU电源。 我是否需要使用其它引脚来提供ADSEVM。

我最后使用引脚SDI SDO CD和SCLK作为SPI协议请求。  

我没有建立其他联系。

注:

我将附上一个"原始"示意图,以尽可能清楚地显示。 我将使用您从数据表中抽取的内容。

我可以通过将此引脚焊接到三根不同的电线上,使用ADS的GND,AVDD,DVDD。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Michele:

     您所做的大多数连接都是正确的,但以下是为您提供的建议:

    1. ADS8688EVM上的R13电阻器将RST/PDZ引脚上拉至DVDD,因此不必再次从微控制器对3.3V短路。

     2. 菊花式引脚:  如果只有一个ADC,将此引脚短接至地电位是正确的,但这可以通过ADS8688EVM上的J4直接完成。

     3. 反向选择: 这可以通过ADS8688EVM上的J2直接对地短路。

     4. 电源:  如果不使用前端放大器(U4),只需要AVDD(+5V)和DVDD(+3.3V)。 为J32 (PIN2)提供+5V电源是一种良好的做法,因此AVDD可以由U6 (TPS7A4901)创建,它是一种低噪声低压降线性稳压器, 这可以创建一个干净的AVDD电源,作为ADC的模拟电源,这将有助于获得良好的性能,同时+3.3V也可以连接到J33。

    为ADS8688EVM提供外部电源时,请确保未连接SDCC控制器板。

     5. SDI SDO /CS和SCLK的连接正确,所有这些都是激活ADC转换和检索数据所必需的。

    如果您需要更多支持,请告诉我。 谢谢。

    此致

    戴尔·李

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    非常感谢戴尔·李,我对一些我不了解的事情有一些疑问

    AVDD电源


    我在数据表上阅读了以下内容:

    <<如果ADS8688EVM只能由SDCC控制器卡供电,且J32上未提供外部5V电源,请勿打开跳线J17。>>

    因此,如果我为J32的PIN2提供5V电压,我是否必须打开J17?

    前端放大器(U4)


    当您提到前端进样器(U4)时,您是否指的是连接到A0+ A1+ A2+ A3+ A4+的"部件"?

    我的意思是,当我使用AVDD和DVDD时,我不能使用这些"部件"?

    我的意思是,我只是理解了这一点:

    当我使用AVDD和DVDD时:

    -我只能转换来自A5 A6 A7的信号;

    例如:如果我要转换来自A0+的信号,我需要打开J25并关闭引脚2和3之间的J8。 其它引脚“基本相同”;

    菊花链式REFSEL和RST/PD

    谢谢,我没有注意到RST/PD与DVDD短路。 但现在我有一个疑问,我注意到DAISY和REFSEL也被电阻器R15和R18短路到DVDD。 因此,如果我对菊花接地和REFSEL短路,它们也会连接到DVDD。 或者我错了吗?

    使用逻辑转换器进行输入和输出


    我的MCU的数字输出和输入介于0和5V之间,所以我需要使用3个逻辑转换器,从5V到3.3V (用于SCLK SDI和CD),以及1个从3.3 到5V (SDO)。 但这些是否会对ADC的性能造成一些问题? 实际上,我只需要看ADS的工作就行了:)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Michele:

    以下是您的问题的答案:

    1. U9用于创建高压电源(HVDD和HVSS),U7和U10一起使用,此跳线J17用于启用(打开跳线J17)或禁用(关闭跳线J17以将U9的EN引脚短接至接地) U9是因为U9的EN引脚功能拉至1.2V以下以禁用此设备,并浮动以启用此设备。 由于简单捕获卡(SDCC)仅由USB端口供电,不能支持重负载,因此 ,这就是为什么我们在第9页中显示警告,在EVM仅由SDCC供电时,通过不打开跳线J17来禁用U9的原因。 如果您在J32的PIN2上使用外部电源,您可以自行决定打开或关闭J17,这取决于您是否要将前端放大器(U4,U5)与HVDD和HVSS配合使用。

    2. 使用AVDD和DVDD时,您可以转换所有输入通道上的信号,包括A0,A1,A2,A3,而不仅仅是A5,A6,A7通道。 通道A0,A1,A2,A3还有一个使用前端放大器(U和U5)的选项,这些放大器肯定可以通过跳线J8,J10,J9,J11绕过。

    3. R13,R15,R18是/RST,DAISY和/REFSEL引脚的上拉电阻器,它们是分开的,这三个引脚可以单独控制。  

    4.如果使用电压转换器,请确保所有转换器具有相同的传播 延迟和相同的定时参数,任何时间不匹配都会导致检索到错误的数据。 实际上,ADS8688支持不同控制器的宽DVDD范围(2.7~5.25V),您可以为J33上的DVDD提供外部+5V电源,因此您不需要额外 的电压转换器。

    如果您需要更多支持,请告诉我。

    此致

    戴尔·李

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,我明白了。 因此,在每种情况下,我都可以通过前端放大器使用A0 A1 A2 A3,但如果要将它们与HVDD和HVSS一起使用,我需要打开J17。 在这种情况下,我必须能够提供至少(200mA或500mA?) J32表格。 但在这种情况下,输入信号被放大时,我是否必须使用外部参考? 在这种情况下,DVDD又如何?

    返回到我的配置(内部参考,只有一个ADC等...),我遇到了一些问题。 我将通道A6连接到3.3V,但没有看到任何来自Miso的信号,只有低信号。 我不知道代码是否有问题,但如果可能,您能否检查我建立的连接是否正确?

    -DAISY,接地槽J2;

    -REFSEL,接地,槽J4;

    -RST/PD,我没有从任何地方“获得”此信号;

    -AVDD,I提供J32的5V槽形引脚2;

    -DVDD,I提供5V槽形引脚2 J33;

    -GND, I通过J32的引脚1将其短接至MCU接地;

    -A6+,我将其连接到3.3V信号。

    我决定不使用焊接/焊接到引脚GND,AVDD,DVDD的电线。

    我没有断开这些针脚上的焊线,但我确保它们在数据采集期间不会接触任何东西。 但是,我想如果之前的连接正常,我会将它们分开。

    此外,我决定不使用逻辑转换器,因为我为DVDD提供5V电压。

    我将附上另一个我建立的连接的原始示意图。 我忘记说我有默认跳线设置。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Michele:

    外部5V直流电源必须能够提供至少500 mA的电流,如用户指南第9页中所述。 我不完全理解"即使是外部参考,因为输入信号被放大",您可以使用内部或外部电压参考。

    我对您的联系和流程有几个问题:

    1.您是否检查了引脚9/30和引脚34上的AVDD和DVDD是否正确? J13的引脚2和3应该短路,它们应该短路。

    2.您是否检查了REFIO和REFCAP上的电压是否正确?

    3. 检查J24的引脚1和2是否短路,它们应该短路。

    4.您是否正在向ADC发送任何命令? 如果是, 请在此处上传您的/CS,SCLK,SDI,SDO屏幕截图吗?

    谢谢。

    此致

    戴尔·李

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我说过,由于输入信号被缓冲器U4和U5放大,它可能会超过内部电压参考(4V),ADC将无法进行正确的转换。 或者我错了吗?

    很抱歉戴尔·李,但我不明白一些事情:

    1.在哪里可以找到引脚9/30和引脚34? 此外,我没有低估您的意思:

    "您是否检查了AVDD和DVDD在针脚上是否正确....。"   您是否询问我这些针脚上的电压是否正确?

    2,我不知道从哪里可以获得REFCAP信号。 REFCAP和REFIO的电压电平是多少?(我认为REFIO的电压为4V,但我不确定)。 此外,我是否应该将它们(REFIO和REFCAP)缩短到任何地方,或不需要? 因为我没有使用它们,所以我向你们提出了这个问题。

    很抱歉,戴尔

    编辑:

    1.对不起,戴尔,但当您指引脚9/30和引脚34时,您指的是ADS8688 (不是EVM)的引脚吗? 如果是,如何检查这些针脚上的AVDD和DVDD是否正确? 再次强调,执行此操作意味着什么(检查这些引脚上的AVDD和DVDD是否正确)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Michele:

    此ADC(ADS8688)可以直接支持高达+/-10.24V的高电压真双极输入,即使其参考电压为4.096V (无论内部或外部参考电压如何),输入范围如数据表第7页的表部分7.5 所示。

    1. 这些引脚9/30/34突出显示 为下图1 (红圈),它们是ADS8688的电源引脚。

    2. REFCAP引脚也如下图1所示突出显示(蓝色圆圈),您可以检查这些引脚或连接到这些引脚的电容器上的电压。

    3. REFCAP和REFIO上的正确电压应为4.096V,如数据表第10页所示,并突出显示为下图2所示。 检查这些针脚只需确保内部参考是否工作正常。

    4. REFIO和REFCAP针脚不应短路,请参阅数据表中的图62,我还复制并突出显示了它,如下图3所示。

    5.请使用 任何万用表检查这些信号,只需确保电源LDO工作正常,电源与ADC的连接良好,而且您正在制作正确的跳线。  

    6. 您是否通过SDI向ADC发送任何软件命令? 这非常重要。 如果是, 请在此处上传您的/CS,SCLK,SDI,SDO屏幕截图吗?  

    谢谢。

    此致

    戴尔·李

    图1:  

    图2:  

    图3:  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢戴尔·李

    2,这是我第一次处理这些零件,所以我不认为可以(不确定是否可以造成损坏)。 是的,我将使用万用表;

    4.对不起,戴尔,但您发送的图片是用于使用外部参考? 我想使用内部引用。 但是,与内部参考一样,它们"包含"一个输出信号;

    6.代码下方

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    //包括SPI库
    #include<SPI.h>//
    从属选择引脚。 我会将其设置为低以开始通信,并将其设置为高以结束通信。
    const int ss_pin=10;//包含Arduino
    字节ADDRESS_1的引脚编号;//通道
    字节ADDRESS_2地址的第一个8MSb;//通道
    字节电压地址的最后8个LSBit [2]; //它将包含来自ADC SDO的16位
    //它是一个用于计算我所做的测量数量的控制器。
    int c=0;
    
    
    void setup()//此代码将运行一段时间
    {
    Serial.begin(9600);//settings用于与PC
    pinMode(ss_pin,output)进行串行通信;//将pin ss_pin设置为输出。 我只需要将其设置为输出
    ,即digitalWrite (ss_pin,high);//向ss_pin发送高信号
    
    serial.println ("开始4秒");//打印消息
    延迟(4000);//等待4秒
    
    //此Arduino具有16MHz频率
    // Arduino与ADS
    SPI.beginTransaction(SPISettings(1600万,MSBFIRST,SPI_MODE1之间的SPI通信设置);
    address_1=B1101.1万;//I要通过选择通道B0000A6
    地址/2=I来使用man_mode,将设置最重要的位
    
    digitalWrite (ss_pin,low);//将从属选择引脚设置为低。 启动通信
    delayMicroseconds(2);//等待2微秒
    //I传输16位通过SDI传输传输
    8位,并在仅8个时钟周期期间从SDO返回8位
    SPI.transfer (address_1);//第一个8位
    SPI.transfer (address_2);//最后8位
    delayMicroseconds(2);
    SPI.voltage transfer(2);[0] //我将从SDO
    电压[1]=SPI.transfer(0)获得前8位;//我将获得最后8位
    delayMicroseconds(2);
    digitalWrite(ss_pin,high);//将从属选择引脚设置为高。 End Communication
    
    }
    
    void loop()//此代码将运行多次
    {//same
    
    
    digitalWrite(ss_pin,low);
    delayMicroseconds(2);
    //通过将所有0发送给SDI,我决定继续在同一通道(A6)
    SPI.transfer(0);
    ss.transfer(0);delayMicroseconds(2)
    ;
    电
    压传输[0.microsecondsi(0)
    
    ;SPI=0;电压传输[0.microsecondsi(0)
    
    
    serial.println();
    serial.println(volt[0]);
    serial.println(volt[1]);
    而(c>100)//目前我只想制作100{
    
    serial.println ("end");
    delay(1000);
    }
    c=c+1;
    delay(1000);
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Michele:
    我知道,实际上第一张图片显示了ADS8688,其内部参考来自ADS8688EVM,您正在使用它。 第三张清晰的图片显示了数据表中的外部参考,但我只想让您看到REFIO引脚和REFCAP引脚之间的关系,因为您想要缩短这两个引脚,数据表从未建议您这样做。
    我想查看时间安排,请在此处上传您的/CS,SCLK,SDI,SDO屏幕截图吗? 您为SPI接口配置的CPOL和CPHA是什么? 谢谢。

    此致
    戴尔·李
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,我不理解,所以您想看看来自/CS SCLK SDI和SDO的位输出/输入吗?  我是否必须使用示波器?

    我通过设置CPOL =0 CPHA=1来配置我的SPI通信。 我通过将参数SPIMODE1发送到对象来实现此目的:

    SPISettings (频率,MSBFIRST/LSBFIRST,SPIMODE0/1/2/3)  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Michele:

    是的,请使用示波器捕获信号,我想检查您的计时,如下图所示,如果您可以提供额外的放大屏幕截图,应该会更好,因此可以像 数据表第11页中的表格一样检查详细的计时参数。 谢谢。

    此致

    戴尔·李

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Dale Li,

    我检查了所有PIN,结果如下:

    REFIN:

    电容器C7 -->4 V

    REFCAP:

    电容器C8 C8---->4V

    AVDD

    电容器C63 C10 --> 5V

    DVDD

    电容器C5 --> 5V

    和预期的一样

    然后我使用示波器,我将在信道A6上附加一些不同情况的屏幕参考:

    第一个命令和响应(我收到的所有消息都不能独立显示在A6上):

    A6+与A6-短接

    已将3.3 V连接到A6+并将A6-与GND短路(即使不需要)

    未连接到A6+和A6-

    附注:

    使用示波器后,我发现在库中没有从MCU中得到任何东西,所以我修改了代码,决定不使用任何库。 此外,我决定将SCLK保持高和低几次,以便更好地了解发生的情况。  

    这些数据是否一致? 当我将A6+短接至A6-(与地面一样)时,我收到了全部1,这是正常的。 我有疑问。 在CLK的第16下降边缘,第一个有效位是从miso (SDO)中发出的? 我在数据表上读过类似的内容,但我不确定。

    -奇怪的是SCLK CS和miso是1V信号。 但ADC收到了所有命令,至少我想是这样

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Michele:

    ADS8688在SCLK的每个下降沿读取SDI线路上的数据,同时在SCLK下降沿的SDO上对输出数据流进行计时。 如果您的CPHA配置正确为1,则应在第二条边缘(下降边缘)捕获数据,并在SDI的第一条边缘(上升)更新数据, 但您的计时显示不同的行为,突出显示为第一张图片下方,正确的计时显示在第二张图片中(数据表中的ADS8688计时)。 您可以在几个屏幕截图中获得数据,但它们可能不正确,或者您将无法正确捕获。请检查您的控制器和配置,同时请确保您的控制器可以在ADS8688的计时图中的t_CKDO期间读取数据。 请告诉我您的结果。 谢谢。

    ADS8688上的AINx_GND引脚应直接连接到接地,或通过数据表图52中所示的平衡电阻器连接,这是必要的。

    输出数据流的MSB在第16 SCLK下降沿的SDO上超频,随后在每个下降沿上的后续数据位超时。

    您的ADC的内部参考工作正常,电源良好。

    此致

    戴尔·李

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Dale,

    感谢您的回复,但我不了解一些事情:

    1)"下班"的含义是什么? 数据是否保留在SCLK两个下降边缘之间的SDO上?

    2)我将数据发送到SCLK第二边缘的SDI。 我附上了一个屏幕截图。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Michele:

    在CPOL=0时,对于CPHA=1,当控制器捕获ADC的数据n SDO或ADC捕获SDI上的数据时,数据在时钟的下降沿捕获,数据在上升沿输出。 他们都希望获得稳定的数据状态,并且数据应保留一段时间,这对控制器和ADC捕获数据很容易且有帮助。 您的时间是不同的,数据在下降边缘变化,并且在上升边缘保持稳定,因此正确捕获数据至关重要。 正确的计时在ADS8688的数据表中突出显示如下:

    有关SPI计时的一个有用的Web链接是:

    en.wikipedia.org/.../Serial_Peripheral_Interface_Bus

    此致

    戴尔·李

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Dale Li,

    我决定使用像MyRio这样更好的MCU来使用SPI库。

    1)我进行了从0到5V的不同测量,并考虑到默认范围是+- 10V,我收到了一致的数据。 问题是,即使我配置了SPI孔,输出也在下降边缘上可用。 我将时钟相位设置为前导将时钟极性设置

    2)默认电压范围是+-10V,但我知道我可以通过更改程序寄存器中的值来更改它(通过向ADC发送正确的顺序)。 我试图发送数据,将范围更改为0至5V,但我没有管理它。 如果我想将范围更改为0至5V,我应该向ADC发送哪个序列? 我向ADC发送了序列号10.1万01 000001100.1万00110 ,0.011万,但收到的是  1010.0111万。我发送的顺序是否正确? 我猜不是。 请帮帮我。

    谢谢戴尔·李。

    此致,

    Michele Fragasso

    附注:

    1)我使用4V电压基准;

    2)我使用A0输入通道;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Dale Li,

    我解决了我的问题

    2)我所说的是,我发送的序列是101万 100000110,而不是0.0101万 100000110。 此外,在通信开始时,我会重置所有程序寄存器。 我收到的是8位序列0.011万,这次是预料之中的。 而且,即使是来自A0通道的位也是一致的。
    1)当我向ADC发送数据时,我将时钟极性设置为低,时钟相位设置为Trealing,当我从ADC接收数据时,时钟极性设置为低,时钟相位设置为前导,但输出边缘上没有任何变化。 但是,我可以从ADC接收正确的数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Michele:
    感谢您分享这一好消息,很抱歉回复太晚,我刚刚回来。

    此致
    戴尔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢戴尔·李。

    此致,
    米歇尔