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.

[参考译文] ADS1232:电阻式电桥测量

Guru**** 1396440 points
Other Parts Discussed in Thread: ADS122U04, ADS1220, ADS1232, ADS1235, ADS1261, ADS122C04
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/821077/ads1232-resistive-bridge-measurement

器件型号:ADS1232
主题中讨论的其他器件:ADS122U04ADS1220ADS1235ADS1261ADS122C04

大家好、

我正在研究如何使用 ADS1232或类似的器件进行 电阻式电桥测量。 我使用的传感器的电阻范围为3欧姆(正常未拉伸配置)至22欧姆(完全拉伸)。 我将使用微控制 器连接模数转换器。 我还有3.3V 或5V 的电源电压。 因此、首选单极电源。 一些初始实验显示了恒定电流激励的更好结果、我可以看到一些 TI 芯片支持这种特性。 我能够通过大多数方法(SPI、UART 等)进行通信、因此我没有偏好。 我还了解了 ADS1220、 ADS122U04和其他器件。  

我不熟悉电阻式电桥测量、因此非常感谢您提供有关此 ADC 优缺点的一些建议、而不是您范围内的其他建议。 首选更高的分辨率、因为该传感器的最终目标是对其进行定位测量的特性描述。  

感谢你能抽出时间。

此致、

Zoran

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

    您好、Zoran、

    您是否使用应变仪构建自己的电桥?  应变电阻不能指示要测量的输出电压(或范围)。  通常、电桥具有一定的灵敏度值、其中满量程输出的额定激励电压为 mV/V。  您是否设计了电桥、以便您知道电桥的输出与灵敏度有关?   

    选择哪种 ADC 最适合工作将取决于转换器的噪声和激励方法。  转换器的噪声将决定 ADC 的分辨率、但这不会直接转换为电桥的无噪声计数。  电桥将输出一个相对于激励具有特定范围的电压。  很多时候、电桥的范围是 ADC 满量程范围的1/4或更小、从而降低电桥输出的分辨率。

    尽管 ADS1220和 ADS122U04可以测量电桥输出、但这些器件的噪声并不最低。  ADS1232和 ADS1235是低噪声 ADC、适用于由电压激励的桥接应用。  ADS1235增加了用于内置交流激励操作的选项。  ADS1261与 ADS1235类似、也可提供电流激励。

    ADS1261具有最大的灵活性、但要完全确定要使用的器件、则取决于电桥的执行方式和所需的测量分辨率。

    此致、

    Bob B

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

    尊敬的 Bob:

    感谢您的快速回复。 该传感器是一款定制的柔性应变传感器(不是典型的应变仪)、可集成到衣服和其他织物中、因此在拉伸时、电阻会发生变化。 恒定电流激励和单个运算放大器的结果还可以、但在惠斯通电桥配置中没有。 输出范围很小、可在传感器拉伸的情况下产生良好的工作分辨率。 我 希望其中一款采用桥接配置的 TI 器件能够产生更好的结果。  

    此致、

    Zoran

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

    您好、Zoran、

    如果我更了解电桥输出和所需分辨率、可能会有更多帮助。  如果我们考虑电压、给定激励电压下电桥的最大输出是多少?  对于输出电压、所需的分辨率是多少?  例如、对于5V 激励、最大电桥输出为20mV、需要解析为400nV (相当于输出范围的50k 点测量分辨率)。

    此致、

    Bob B

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

    尊敬的 Bob:

    很抱歉我的答复很晚。 在这个早期阶段、我希望为这个灵活的电阻传感器构建一个电路。 应用是最终将其用于位置测量、因此考虑到它是一个弹性传感器、1k 点的测量分辨率就足够了。 为了让我选择正确的路径、电阻式电桥电路是否更适合此传感器或类似于双线 RTD 方法的器件?

    此致、

    Zoran  

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

    您好、Zoran、

    这有点难回答。  最后、它实际上取决于激励源和传感器的输出电压。  对于惠斯通电桥、输出摆幅取决于桥臂元件的电阻范围。  最简单的配置可能是使用与2线 RTD 类似的恒流源。  本指南中将介绍要使用的电路:

    http://www.ti.com/lit/an/sbaa275/sbaa275.pdf

    ADS1232没有激励电流源、但 ADS1220 (SPI)、ADS122C04 (I2C) 或 ADS122U04 (UART)有激励电流源。  您可以设置与上述文档第10页的图7中所示的测量值类似的测量值。  您可以使用250uA 线电流和6.8k 欧姆的基准电阻器进行比例式测量。  您还可以使用器件 PGA 和128增益来提高测量分辨率。

    此致、

    Bob B

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

    尊敬的 Bob:

    感谢您提供本参考文档和建议。 我刚刚订购了 ADS1220分线板以进行测试。 我将尝试您提到的2线 RTD 配置。

    考虑到该传感器最终很好地佩戴在人体上、传感器温度的升高可能会对输出产生负面影响。 是否可以使用相同的 ADC 来测试惠斯通电桥配置在电流激励下的性能?  

    此致、

    Zoran

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

    您好、Zoran、

    您还可以尝试电桥配置的电流激励、但如果电压激励有问题、您很可能会看到电流激励问题。  确定传感器输出范围的是电桥臂的大小。  电流激励将限制为 ADS1220的总电流输出、同时仍满足 AVDD-0.9V 合规电压。  换句话说、激励电流导致的电桥上的压降限制为 AVDD-0.9V、否则恒定电流源不能长时间保持恒定。  您的最佳电桥输出很可能来自电压激励、因为电桥可由 AVDD 激励、同时仍保持比例式测量。

    如果温度影响传感器、我怀疑您会在任何类型的测量方案中看到误差。  您的测量结果将仅与传感器本身的稳定性一样好。

    此致、

    Bob B  

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

    尊敬的 Bob:

    感谢您迄今提供的支持。 我已经使用灵活的电阻器代替 RTD 实现了下面显示的原理图。 我使用的是 Protocral 的分线板(原理图如下所示)。

    电源电压 AVDD 和 DVDD 为3.3V。 基准电阻器当前是一个具有+-10ppm/°C 的5k 欧姆精密电阻器(我无法找到快速交货的6.8k 欧姆版本)。 激励电流设置为250uA。 增益设置为16。

    此设置将 Vref 电压设置为1.25V、这不是 ADS1220数据表中规定的1.65V 理想共模电压。

    如前所述、柔性传感器的电阻范围为3-22欧姆。 在其扩展状态下、Vin (max)= Vflex = RFLEX * IIDAC1 = 22 Ω* 250uA = 5.5mV。

    Vref = 1.25V 时的最大增益为(1.25V/5.5mV = 227)。 显然、使用 ADS1220无法实现。

    下面是我已经使用的寄存器设置、我已经成功地捕获了一些原始转换数据。

    问题(虽然不确定是否是问题)是我从 ADS1220接收到较大的输出代码负值。 例如:

    未触摸传感器(静止时):-889267942

    完全拉伸的传感器: -889986462

    您对我是否在正确的轨道上进行此操作有什么建议吗? 在整个灵活的传感器扩展范围内(超过700k 点)、绝对有很多数据点。

    此致、

    Zoran

    寄存器配置:

    M_CONFIG_reg0 = 0x38;//AINP=AIN1、AINN=AIN2、增益16、PGA 启用  
    M_CONFIG_reg1 = 0x84;//DR=330SPS、模式=正常、转换模式=连续、温度传感器禁用、 电流源关闭  
    M_CONFIG_reg2 = 0x44;//Vref REFP0和 REFN0、无50/60Hz 抑制、电源开路、IDAC (250uA)
    M_CONFIG_reg3 = 0x20;//IDAC1 (AIN0)、IDAC2禁用、仅 DRDY 引脚  

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

    尊敬的 Bob:

    我想知道您是否有时间考虑我之前的消息和相关问题?

    此致、

    Zoran

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

    您好、Zoran、

    由于我离开办公室几天、今天刚回来、我对延迟回复表示歉意。

    我不确定为什么选择增益为16、而可以使用增益为128。  此外、转换结果以二进制补码输出。  必须确保正确地对该值从24位值符号扩展到32位值。  例如、0xFFFFFFF 为十进制-1。  您还应首先使用多路复用器设置检查转换结果、其中 AINP 和 AINN 短接至(AVDD-AVSS)/2、以确定您是否具有 ADS1220的内部偏移。  您应该减去未来转换结果返回的值。

    如果您向我发送了从 ADS1220返回的原始十六进制值、那么我更容易确定发生了什么情况、因为我不知道您的十进制值真正代表了什么。  此外、确保 IDAC 电流流经 AIN1至 AIN2输入、因为根据负值、电流似乎从 AIN2流向 AIN1。

    此致、

    Bob B

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

    尊敬的 Bob:

    没问题。 我使用增益16来最大限度地降低噪声、但我只是将其增加到了128。 我还将电流增加到1mA、因为之前的系统在该传感器中有效地使用该电流。 我确实意识到我正在处理二进制补码中的转换结果。 我更新了我的代码、以正确地将值从24位符号扩展到32位。  

    感谢您的反馈。 我在数据表中确实注意到了这一点(在 AINP 和 AINN 短接至(AVDD-AVSS)/2时检查转换结果)、并从未来的转换中减去这一点。 我很快就会实施它、看看它是如何的。

    您提到的一切似乎都很好。 关于负值、我看不到这样做的原因。 下面是我的连接照片。 我认为一切都是正确的。 您能在这里看到什么问题吗?

    没问题。 我将记录原始十六进制值并将其发送到。

    感谢 Bob 的支持。

    此致、

    Zoran

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

    您好、Zoran、

    我在原型装配中没有发现任何问题、但请记住、使用试验电路板电路很难获得高精度。  我相信您在数字转换方面有问题。  最大可能负值(或负满量程)发生在0x800000或十进制-8388608处。  您报告的值远超出 ADC 接近32位值的能力。

    如果24位结果的最高有效位为"1"、则该值为负、否则结果为正。  确保您正在捕获转换结果的所有3个字节、并且这些字节的字节顺序正确。  请随时向我发送数据采集和存储到存储器的代码片段。  如果您有通信的示波器或逻辑分析仪快照、我们可以验证您是否在代码中正确解释结果。

    此致、

    Bob B

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

    感谢 Bob 的快速回复。

    我得到的转换值是负值、这让我感到非常困惑。 我成功地解决了(我认为)大于24位值的问题。 我的字节顺序有问题、也对值进行了符号扩展。 下面是从 ADS1220读取数据的代码片段。

    关于消极价值的任何其他想法都将得到极大的赞赏。

    此致、

    Zoran

    以下是最新数据的图像:

    ----------------------------------

    long read_WaitForData()

    静态 char SPI_buff [3];
    long mResult32 = 0;
    long int bit24 = 0;
    int i;

    if ((m_drdy)=0)//等待 DRDY 转换为低电平

    M_cs_pin = 0;//将 CS 置于低电平
    delay_us (100);
    对于(I = 0;I < 3;I++)

    SPI_buff [i]= SPI3_read (SPI_MASTER_Dummy);

    delay_us (100);
    M_cs_pin = 1;//将 CS 清零为高电平

    位24 = SPI_buff [0];
    bit24 =(bit24 << 8)| SPI_buff [1];
    bit24 =(bit24 << 8)| SPI_buff [2];//将3个字节转换为24位 int
    /*符号扩展数据*/
    IF (位24和0x800000)
    bit24 |= 0x000000;

    mResult32 =位24;

    返回 mResult32;

    --------------------------------------

    在下面的 main 部分中、我调用函数并存储要通过 USB HID 传输的数据。

    ADC_DATA = READ_WaitForData ();

    //StoreADC (ADC_DATA、0);
    writebuff[0]=((adc_data >> 24)& 0xFF);
    writebuff[1]=((adc_data >> 16)& 0xFF);
    writebuff[2]=((adc_data >> 8)& 0xFF);
    writebuff[3]=((adc_data & 0xFF);
    delay_ms (10);

    ------------------------------

    在 Windows GUI 侧、我将数据汇编为:

    unsigned char Datal[]={buf[3]、buf[2]、buf[1]、buf[0]};
    memcpy (&ADCVal、&Data、sizeof (Data));

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

    尊敬的 Bob:

    我为偏移校准添加了以下函数、结果为 -587183。  因此、原始转换值 -8170078会减去偏移值、使其变为 -7582895。

    我尚未对二进制补码执行任何操作、因为转换值仍然为负值、我想尝试弄清这种情况的发生原因。

    此致、

    Zoran


    我首先将多路复用器设置为(SELECT_MUX_CHANNELS (MUX_DIV2); //针对 AINP 和 AINN 进行配置短接至(AVDD + AVSS)/2)

    --------------------------------------

    char CalibrateADS1220()

    int i = 0;

    while (i<100)

    if ((m_drdy)=0)//等待 DRDY 转换为低电平

    CalibData += Read_WaitForData();
    i++;


    CalibData = CalibData/100;

    select_mux_channels (MUX_AIN1_AIN2);
    delay_ms (200);
    返回1;

    ----------------------------------------

    以下是最新的偏移数据转换:

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

    尊敬的 Bob:

    所附的是从逻辑分析仪导出的 SPI 数据。

    此致、

    Ze2e.ti.com/.../SPI-Capture.csvoran 

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

    您好、Zoran、

    排除系统故障时、最好检查单个部件、而不是一次查看整个系统。  如果我们查看逻辑分析仪数据、我们会看到一个显示为负值(131 XXX XXX)的模式、但在整个过程中、我们会看到正值3 XXX (时间0.099002)。  正极图形再次出现在时间0.176004、0.308004、0.616006、0.627018、0.737008、 0.770007和0.814008处。

    逻辑分析仪数据中缺少一条信息、这是 DRDY 从高电平转换为低电平的时间。  当您直接从 ADS1220读取而不使用 RDATA 命令时、读取结果时数据很可能会损坏。  当您按照自己的操作直接读取转换结果时、您只会查看 DRDY 是否为低电平、而不会查看 DRDY 是否从高电平转换为低电平。  使用此方法时、应始终监控转换状态、而不仅仅是寻找 DRDY 处于低电平。  如果 DRDY 应在读取周期的中间转换、则将新转换结果写入输出缓冲器会损坏数据。  如果改用 RDATA 命令、则会阻止将转换结果自动更新到输出缓冲区、直到 RDATA 命令完成。

    我建议您使用 RDATA 命令而不是当前使用的方法。  如果要直接读取数据、则应使用中断驱动的系统。  如果必须使用轮询方法,则可能需要确保监视  READ_WaitForData()中 DRDY 的转换,而不是只检查 DRDY 是否为低电平。  原因是您的读数大约每10ms 读取一次、但您将每3.03ms 获得一个新的转换结果。  在此期间、由于几个转换周期内未读取转换结果、DRDY 将处于低电平。  DRDY 将仅在极短的时间内发出脉冲高电平信号、发出新的完成转换。  如果在此更新期间读取数据、结果将被损坏。

    此致、

    Bob B

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

    尊敬的 Bob:

    很抱歉我的答复很晚。 我上周旅行了。 感谢您的反馈。 e2e.ti.com/.../SPI-Capture5.csvI已重新开发代码并更详细地考虑了 ADS 的时序、并遵循了 TI 提供的一些示例代码。 我已经为 DRDY 设置了一个中断、并在 DRDY 变为低电平时设置一个标志。 在主循环中、我检查此标志是否已设置、然后从 ADS 读取数据。 我首先发送 RDATA 命令来读取数据。 下面是具有中断实现功能的逻辑分析仪的屏幕截图、以及我通过 USB 捕获并绘制的数据。

    我还尝试不使用中断、只需使用 RDATA 命令从 ADS 读取数据。 这种方法似乎会产生更多损坏的数据、如下所示。

    我看到使用 RDATA 命令和接口的数据有所改善、但许多数据仍在损坏。 我想知道您是否有任何想法、为什么会发生这种情况?

    我随附了源代码实现以供您参考。

    此致、

    Zorane2e.ti.com/.../HID_5F00_Read_5F00_Write.ce2e.ti.com/.../ADS1220.h

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

    您好、Zoran、

    问题的一部分与使用错误的 SPI 模式有关。  请注意、在 Saleae 照片中、您的 MOSI 正在 SCLK 的下降沿发生变化。  正确操作应使数据在 SCLK 的上升沿发生变化、并在下降沿保持稳定。  因此、您需要为 SPI 模式使用正确的相位。

    由于您在 SCLK 的上升沿错误读取数据、因此结果不正确。  因此、为 Saleae Shot 显示的第一个字节指示0x90、但它应该是0x20。  读取的所有剩余字节也不正确。

    另外请注意、当您使用 RDATA 命令时、必须从 RX 缓冲区中清除第一个字节、并在读取实际数据之前将其丢弃。

    此致、

    Bob B

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

    您好、Zoran、

    您必须更改函数调用:

    SPI1_Init_Advanced (_SPI_FPCLK_DIV16、_SPI_master |_SPI_8_bit |
    _SPI_CLK_IDLE_LOW |_SPI_FIRST_CLK_EDGE_TRANSITION |
    _SPI_MSB_FIRST |_SPI_SS_DISABLE |_SPI_SSM_ENABLE |_SPI_SSI_1、
    &_GPIO_MODULE_SPI1_PA567);

    突出显示的部分应具有类似 LAST_CLOCK_EDGE 的内容、以便 SPI 与 ADS1220正常通信。  读取数据和发送命令都将受到影响。  因此、在尝试与 ADS1220通信之前、必须确保此设置正确。

    此致、

    Bob B

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

    非常感谢 Bob。 解决了主要问题。 我只是想看看为什么、当我丢弃缓冲区中的第一个字节时、我会得到一个负值、但当我使用前3个字节时、它会保持为正。

    此致、

    Zoran

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

    您好、Zoran、

    如果直接读取数据(不发出 RDATA 命令)、则将检索三个字节。  使用 RDATA 命令、为命令发送1个字节、返回到缓冲区的字节应为数据的 MSB。  您应该会看到两次相同的值。  在命令解码后、一次用于命令发送时间、然后在相同字节传输后再次进行。  因此、您需要捕获的数据不是 RDATA 命令之后返回的第一个字节、而是后续的三个字节。

    使用 Saleae、查看返回的数据、并确保 C 代码正在正确处理数据。  如果可能、发送 Saleae 文件、以便我可以查看它、而不是 CSV 文件。

    此致、

    Bob B

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

    尊敬的 Bob:

    我目前正在上传 Saleae 文件、但由于大小原因、需要一些时间。 我测试了以下代码、在这里我放弃了我读取的第一个字节。 然后、我检查了 Windows GUI 端的数据、发现我只接收3个字节的数据、这表明第一个(报废)字节没有通过。 我应该接收4个字节、因为我将其存储在长整数类型中。

    此致、

    Zoran

    长 ADS1220ReadData (空)

    长数据;
    char sData;//报废数据


    //取消 CS 置位以开始传输
    M_cs_pin = 0;
    DELAY_us (1);
    //发送命令字节
    ADS1220SendByte (ADS1220_CMD_RDATA);
    //获取转换结果
    sData = ADS1220ReceiveByte ();//读取第一个报废字节并由于使用 RDATA 命令而丢弃
    数据= ADS1220ReceiveByte();
    数据=(数据<< 8)| ADS1220ReceiveByte ();
    数据=(数据<< 8)| ADS1220ReceiveByte ();

    //对扩展数据进行符号扩展
    IF (数据和0x800000)
    data |= 0xFF000000;
    DELAY_us (1);
    //断言 CS
    M_cs_pin = 1;
    返回数据;

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

    尊敬的 Bob:

    我刚刚将 sData 值(ADS1220的第一个字节)发送到我的 GUI 应用程序、以了解这是什么、因为这是我目前唯一的调试方法。 我看到一个值、例如0x06、当我查看 Saleae 数据时、它是 ADS1220中的第二个字节、即使我是首先读取它。 我想知道我正在使用的 SPI 库是否丢弃 ADS1220中使用 RDATA 命令返回的第一个字节?

    此致、

    Zoran

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

    您好、Zoran、

    我很难理解您想告诉我的内容。  ADS1220转换数据为3个字节(24位)而不是32个字节、因此当数据为正时、您只会看到长整型返回的3个字节的数据。  这样我就可以跟踪了、您能像以前一样再次向我发送 Saleae 的屏幕截图吗?

    谢谢、

    Bob B

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

    尊敬的 Bob:

    很抱歉、我没有解释好。 请参阅下面的屏幕截图。 为什么在某些情况下第二个字节与第一个字节不相同?

    此致、

    Zoran

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

    e2e.ti.com/.../250-MHz_2C00_-500-M-Samples-_5B00_15_5D00_.rar

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

    尊敬的 Bob:

    我尝试确定我使用的 SPI 库是否以某种方式丢弃发送 RDATA 命令后返回的字节。 很奇怪、因为 Saleae 数据显示4个字节、但当我丢弃第一个字节时、我接收到从负向跳转到正的错误数据。

    此致、

    Zoran

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

    您好、Zoran、

    使用 RDATA 命令时、SCLK 应该只有4字节(1字节命令和3字节数据)、但我看到的是5字节。  我认为这是由于以下原因:

    sData=ADS1220ReceiveByte();

    这种做法是发送另一个字节的 SCLK。  您真正要做的是清除 RX 缓冲区、尤其是在有 FIFO 时。  不清楚函数 SPI1_Write ()和 SPI1_Receive ()函数中会发生什么情况。  可以在这些函数中清除缓冲区。  最后、您需要做的就是确保 Saleae 数据与您从代码中看到的结果相匹配。

    确保分析仪中的 Saleae 设置正确。  这些设置应与 CPOL = 0和 CPHA = 1的微设置相匹配。  如果修复这些设置、您将看到接收到的第一个字节将与在所有情况下接收到的第二个字节相匹配。

    此致、

    Bob B

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

    尊敬的 Bob:

    附件是最新 的 Saleae 文件、其中更正了设置(感谢提供该信息)。 这些结果的行(sData=ADS1220ReceiveByte();)已注释掉。 我怀疑缓冲区是用 SPI1_Write()和 SPI1_receive()函数清除的,但我想知道是否有方法可以确认这一点? 我能否将接收到的值转换为电压并与传感器上的电压进行比较? 我将使用哪个方程来实现该目的?

    此致、

    Zoran  

    e2e.ti.com/.../250-MHz_2C00_-500-M-Samples-_5B00_1_5D00_.rar

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

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

    您好、Zoran、

    您无需重新计算任何值、只需查看 Saleae 结果并将其与代码中的结果进行比较即可。  此数据应匹配。  如果它能正常工作、您可以继续。

    此致、

    Bob B

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

    尊敬的 Bob:

    由于您的反馈、系统现在运行良好。  您的支持超出了我的预期。

    此致、

    Zoran