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.

[参考译文] ADS1259:无法从 ADS1259读取正确的数据、

Guru**** 2546300 points
Other Parts Discussed in Thread: ADS1259, ADS1258

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/827561/ads1259-can-not-read-correct-data-from-ads1259

器件型号:ADS1259
主题中讨论的其他器件: ADS1258

我已经使用 STM32中的软件 SPI1来驱动 ADS1259芯片、SPI 的速度为250kHz。

当我打开系统电源时、我等待200ms、然后 初始化 ADS1259、并执行如下复位:

//

硬件复位模式
void ADS1259_reset (void)
{
ADS1259_Init_delay (delay_time_reset);
ADS1259_reset_L;
ADS1259_Init_delay (delay_time_reset);
ADS1259_reset_H;
ADS1259_Init_delay (delay_time_reset);
} 

然后发送数据路径命令

void ADS1259_init (void)
{
ADS1259_Init_delay (delay_time_reset);
ADS1259_reset (ADS1259_Init_delay
(delay_time_reset);

ADS1259_write (CMD_SDATAC);//停止连续读取数据模式 ADS1259_Init_short_delay (delay);ADS1259_short_delay










(ADS1259_short_delay);ADS1259_delay (ADS1259_delay)/ADS1259_short_delay (short_delay);ADS1259_delay (ADS1259_delay)+ ADS1259_short_short_delay);ADS1259/ ADS1259_delay (ADS1259_short_short_delay (ADS1259_delay);ADS1259_short_delay (ADS1259_delay)/ADS1259_delay (ADS1259_delay)/ADS1259_short_delay (ADS1259_delay);ADS1259








ADS1259_WRITE (0x00);
ADS1259_Init_short_delay (delay_short);
//fSC[2:0]
ADS12559_write (0x00);
ADS1259_Init_short_delay (delay_short);
ADS1259_write (0x00);
ADS1259_Init_short_delay (delay_short);
ADS1259_write (0x40);
#endif
ADS1259_Init_delay (delay_time_reset);
} 

while 循环、我调用函数:

void ADS1259_Read_Reg_Enable (void)
{
ADS1259_Init_short_delay (delay_short);
ADS1259_write (CMD_SDATAC);//停止连续读取数据模式
ADS1259_Init_short_delay (delay_short);
ADS1259_write (0x20);//第一个操作码、
ADS1259_short_delay (in_delay);ADS1259_short_delay (in_delay);ADS1259_delay (in_dimay)


要读取寄存器值、

但是、在我刷写芯片并运行 THR MCU 后、

我获取以下数据:

ADS1259_REG[0]= 0x25
ADS1259_REG[1]= 0x8
ADS1259_REG[2]= 0xc0
ADS1259_REG[3]= 0x0
ADS1259_REG[4]= 0x0
ADS1259_REG[5]= 0x0
ADS1259_REG[6]= 0x0
ADS1259_REG[7]= 0x0
ADS1259_REG[8]= 0x40

第一个数据是来自数据表的 diff (复位值为10XX0101b)、这会导致我根本不写入任何寄存器。

然后、我编写如下所示的寄存器:

ADS1259_WRITE (0x40);//从00h
ADS1259_Init_short_delay (delay_short)开始写入;
ADS1259_write (0x08);//写入9 reg 8+1=9
ADS1259_Init_short_delay (delay_short_short_delay);

ADS1259_delay (0x05_short_delay);// ADS1259_short_short_delay (ADS1259_short_short_delay)




;ADS1259_delay (ADS1259_short_short_short_short_delay);ADS1259_delay (ADS1259_short_short_short_short_delay);ADS1259/ ADS1259_delay (ADS1259_short_short_short_short_short_delay (0x59_delay);ADS1259_short_delay (ADS1259_short_short_short_short_short_short_delay (

0x59_




ADS1259_WRITE (0x00);
ADS1259_Init_short_delay (delay_short);
//fSC[2:0]
ADS12559_write (0x00);
ADS1259_Init_short_delay (delay_short);
ADS1259_write (0x00);
ADS1259_Init_short_delay (delay_short);
ADS1259_write (0x40); 

结果是相同的,没有任何变化,

我再次获取以下数据:

ADS1259_REG[0]= 0x25
ADS1259_REG[1]= 0x8
ADS1259_REG[2]= 0xc0
ADS1259_REG[3]= 0x0
ADS1259_REG[4]= 0x0
ADS1259_REG[5]= 0x0
ADS1259_REG[6]= 0x0
ADS1259_REG[7]= 0x0
ADS1259_REG[8]= 0x40

有人可以告诉我原因吗?

 从寄存器读取和  写入寄存器的过程中是否出错?

非常感谢

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

    您好、Ming、

    我在您共享的代码中找不到任何错误、但有时代码会隐藏实际发生的情况。 如果您有一个示波器或逻辑分析仪捕获 SPI 通信、则可以查看/CS、DIN、DOUT、SCLK 和/DRDY 上发生的情况(如果您有第5个通道)。

    您是否在代码中切换了/CS 引脚?
    否则、/CS 可能有助于对 SPI 命令进行帧、以确保在发送 RREG 或 WREG 命令时确实正在启动新命令、并且不会继续执行之前的 RREG 或 WREG 命令。

    您的 SPI 字节之间的延迟有多长时间?
    对于 ADS1259、您不必在字节之间插入额外的延迟(在命令中)。 此外、请注意、如果这些延迟太长、/SPI 通信可能会超时。 这是我建议使用/CS 的另一个原因。  

    此外、我建议使用介于2MHz 和4MHz 之间的更快 SCLK 速度。 有时、当 SCLK 频率太慢时、我会遇到一些奇怪的 SPI 行为。 此外、以不同的 SCLK 速度测试 SPI 通信有时是帮助识别通信问题的良好测试。

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

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

    大家好、克里斯 

    昨天晚上,我在 tie2e 上看到了很多问题,因为我不是很喜欢使用 ADS1259。

    I circuit 的设计如下所示,/cs 连接到低电平,也开始连接到低电平,我使用 FreeRTOS 和 stm32f103,使用 hardwre SPI 来驱动 ADS1259,使用 SPI 模式1.CPOL =0, CPHA=1。

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

    您好、 Chris Hall 先生

    /Cs 被设计成低电平,设计是否正确?  

    我已经阅读了数据表,可以将 CS 设计为连接到 GND,

    ADS1259_Init_short_delay (delay_short)如下所示:

    void ADS1259_Init_short_delay (delay_short)

    for (i-0;i <DELAY_SHORT;i++);

    stm32F103主时钟为72MHz、我认为延迟会非常短。

    我将尝试删除测试延迟、并按照您 的建议使用更快的 SPI 速度、我将在这篇文章中告诉您任何结果。

    比你好多了!!

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

    你(们)好,霍尔先生

    关于如何使用 ADS1259、还有更多问题

    1、我的项目是否需要 ofc 和 FSC 寄存器、如果我使用默认值、我可以使用 ADS1259对 AD 值进行采样吗?

    2、ADC 转换需要校准命令?

    3、我在论坛上读了一些文章,有人初始化芯片使用停止命令,初始化芯片时是否需要停止命令?

    4、当我读取寄存器值时、是否需要 RDATA 命令?

    期待您的回复

    谢谢!

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

    你(们)好,霍尔先生

    我已将 SPI 速度设置为2.273MHz、并删除  了字节之间的延迟(在命令中)、删除了任何写入操作码、

    结果是相同的、

    ADS1259_REG[0]= 0x25
    ADS1259_REG[1]= 0x8
    ADS1259_REG[2]= 0xc0
    ADS1259_REG[3]= 0x0
    ADS1259_REG[4]= 0x0
    ADS1259_REG[5]= 0x0
    ADS1259_REG[6]= 0x0
    ADS1259_REG[7]= 0x0
    ADS1259_REG[8]= 0x40

    我获得了 SCLK clk 图片:我认为 MCU 的 SPI 外设正常。

    我的 SPI 写入代码是  

    void ADS1259_write (uint8_t data)
    {
    //HAL_SPI_Transmit (&hspi1、&data、1、100);
    
    uint8_t pRxData = 0;
    
    HAL_SPI_TransmitReceive (&hspi1、&data、&pRxData、1、 1000);
    } 

    我的 SPI 读取代码是  

    uint8_t ADS1259_read_REG (void)
    {
    uint8_t pTxData = 0;
    
    uint8_t pRxData = 0;
    
    //ADS1259_WRITE (0X11);//停止连续读取数据模式
    
    // HAL_SPI_Receive (&hspi1、&pRxData、1、100);
    HAL_SPI_TransmitReceive (&hspiReceive 1、 pTxData、&pRxData、1、1000);
    
    
    返回 pRxData
    ;} 

    读取代码是  

    ADS1259_Read_Reg_Enable();
    对于(i = 0;i < 9;i++) { ADS1259_REG[i]= ADS1259_Read_REG (); } HAL_Delay (200); printf ("\r\n"); 对于(i = 0;i < 9; i++) { printf ("ADS1259_REG[%d]= 0x%x\r\n"、i、ADS1259_REG[i]); }

    还有其他问题我不考虑吗?

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

    霍尔先生、您好!

    我执行如下测试:

    SPI 速度为2.273MHz、并编写以下 cpcode

    void ADS1259_init (void)
    {
    ADS1259_Init_delay (delay_time_reset);
    ADS1259_reset ();
    ADS1259_Init_delay (delay_time_reset);
    ADS1259_Init_delay (delay_time_reset);
    ADS1259_Init_delay (delay_time_reset);
    
    ADS1259_write (CMD_SDATAC);//停止读取数据连续模式
    ADS1259_write (CMD_STOP);// ADS1259_short_conversion
    (CMD_short_delay);//停止/短整型
    #if 1
    ADS1259_WRITE (0x40);//从00h 开始写入
    
    ADS1259_WRITE (0x08);//WRITE 9 reg 8+1=9
    
    
    ADS1259_WRITE (0x05);//00000101 RBIAS + SPI 超时
    
    // ADS1259_WRITE (0x01);//00000001 SPI 超时
    ADS1259_WRITE (0X18);//00011000 SINC2 + EXTREF
    
    ADS1259_WRITE (0x03);//60sps,栅极转换模式
    
    //OFC[2:0]
    ADS1259_WRITE (0x00);
    
    ADS1259_WRITE (0x00);
    
    ADS1259_WRITE (0x00);
    
    //FSC[2:0]
    ADS1259_WRITE (0x00);
    
    ADS1259_WRITE (0x00);
    
    ADS1259_WRITE (0x40);
    #endif
    ADS1259_Init_delay (delay_time_reset);
    } 

    其它代码不变,读取结果为:

    ADS1259_REG[0]= 0x25
    ADS1259_REG[1]= 0x18
    ADS1259_REG[2]= 0xc3
    ADS1259_REG[3]= 0x0
    ADS1259_REG[4]= 0x0
    ADS1259_REG[5]= 0x0
    ADS1259_REG[6]= 0x0
    ADS1259_REG[7]= 0x0
    ADS1259_REG[8]= 0x40

    由于 i analsy、第一个错误、原因默认值 10XX0101b 应为0xA5 possible、ox25是不可接受的、因为位7总是返回1。

    第二个值还可以

    第3个值正常、导致 DRDY 处于高电平、 EXTCLK 为1、我使用 器件时钟源是外部时钟

    您能告诉我为什么 config0出错吗?

    谢谢!

    期待您的回复!

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

    您好、霍尔先生:


    对于 ADS1259的数据采样、我想提出一些问题。


    CONFIG0寄存器读取的数据与默认值不匹配、但我认为这不会影响 ADC 采样。 (SPI 硬件高速缓存上可能存在垃圾数据。 这是可行的吗?)


    我有想法。 我将数据速率设置的 SPS 设置为14400、然后将 ADS1259设置为栅极控制模式。 DRDY 引脚设置为外部中断引脚。 (这是否正常? 我认为这可以降低系统延迟并提高实时性能、让 CPU 减少工作负载、因为我使用的是 FreeRTOS 系统)。


    当我执行上述初始化时、我将等待10ms。 正如您在其他帖子中提到的、"使用启动的稳定时间"需要时间、对于14400SPS、至少需要144000.424 (sinc1) 0.563 (sinc1)。然后使用 START 命令启动转换、同时打开 RDATAC 命令。 CPU 将确定 DRDY 是否已关闭、存在下降沿触发器、指示数据已就绪、CPU 进入中断、开始读取 ADC 数据、并将其保存到 RAM 以供后续处理。


    下面我有更多问题:


    sinc1和 sinc2的含义是什么、有什么区别? 我的软件是否需要注意这一点?


    2.我在初始化期间发送了 SDATAC。 以后继续发送其他命令时是否仍需要发送此命令? 还是在发送 SDATAC 之前必须再次发送它? (例如、在系统运行100ms 后、我将在发送 RDATAC 命令之前更改一些参数)。


    3.发送 RDATAC 命令后,是否需要发送 RDATA 命令?


    4.启动命令是在 RDATAC 命令之前还是之后?


    5.任何 ADC 转换是否需要校准过程?

     

    期待 您的回复!

    此致!

    非常感谢!  

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

    您好、霍尔先生。
    我在使用寄存器读取操作时发现了一种现象。
    当我使用 for 循环进行读取时、系统崩溃。 并转至 handFAULT_handler 函数

    对于(I = 0;0 < 9;I++)
    {
    ADS1259_REG[i]= ADS1259_Read_REG ();
    } 

    当我不使用 for 循环时、我会正常读取它、第一个 config0除外。

    ADS1259_REG[0]= ADS1259_READ_REG ();
    ADS1259_REG[1]= ADS1259_READ_REG ();
    ADS1259_REG[2]= ADS1259_READ_REG ();
    ADS1259_REG[3]= ADS1259_READ_REG ();
    ADS1259_REG[4]= ADS1259_REG_REG_4]();ADS1259_REG_REG[REG_REG[REG]
    ADS1259_REG[5]= ADS1259_Read_REG ();
    ADS1259_REG[6]= ADS1259_Read_REG ();
    ADS1259_REG[7]= ADS1259_Read_REG ();
    ADS1259_REG[8]= ADS1259_Read_REG (); 

    为什么会发生这种情况?
    谢谢!

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

    忘记 此问题、因为我执行了错误代码、抱歉

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

    你(们)好, 霍尔先生

    今天我测试 ADS1259

    我设置如下芯片:

    ADS1259_WRITE (0x01);//0000 0001 SPI TIMEOUT=1 RBIAS=0

    ADS1259_WRITE (0x08);//00001000 SINC1=0 EXTREF=1启动转换无延迟

    ADS1259_WRITE (0x00);//0000 0000 = 10sps,栅极控制模式
    我得到 DRDY 信号:DRDY 信号为2.5us 高电平、  
    我使用下降输出对 DRDY 的周期进行采样、我使用切换 GPIO 进行验证、我得到 GPIO 波形:

    void HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin)

    basetype_t pxHigherPriorityTaskWatken;

    IF (GPIO_Pin =GPIO_PIN_4)

    //xSemaphoreGiveFromISR( BinarySem_Handle,&pxHigherPriorityTaskWatchen );
    HAL_GPIO_TogglePin (GPIOD、SYS_LED_Pin);

    /*注意:当需要回调时,不应修改此函数。
    HAL_GPIO_EXTI_Callback 可在用户文件中实现
    *

    我可以确保每100ms 出现一次下降沿、

    但正如我所知,我设置为门模式,并且在开始转换后将数据读取操作设置为连续模式。在此测试中,我只对 DRDY 的下降沿进行采样,而不读取 ADC 值。

    ADS1259_init();
    HAL_DELAY (300);
    ADS1259_Start();
    HAL_DELAY (300);//添加延迟以等待 ADS1259 ADC 稳定时间
    ADS1259_RDATAC ();

    数据表中显示:

    在栅极转换转换模式下、DRDY 在 SCLK 的第一个下降沿返回高电平

    结果是否正确?

    谢谢!

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

    您好、Ming、

    您对代码进行了大量更改、并询问了与每次修改相关的问题、这使得执行这些操作变得有点困难。 我将尝试回答一些较为一般的问题、但当您的代码为什么不起作用时、我认为我无法提供很多帮助。

    由于您使用的是 RTOS、因此我建议尝试在没有 RTOS 的情况下实现相同的功能、以查看问题是否消失。 如果是、则 RTOS 调度程序可能会中断您的 SPI 通信并导致问题。

    关于您的原理图、我有一些意见和问题...

    • 将/CS 设为低电平是可以的、但需要在 SPI 通信时更加小心、以确保不会丢失与 ADC 的同步。

    • 连接到 XTAL1管脚的外部时钟的频率是多少?

    • 我建议从 DVDD 电源移除 L1、因为这可能会产生 LC 谐振器并导致电源电压不稳定。

    [引用 user="ming li50749"]我的项目是否需要 ofc 和 fSC 寄存器,如果我使用默认值,我可以使用 ADS1259对 AD 值进行采样?

    是的、您现在应该使用默认值。  这些寄存器只应在校准时进行修改。

     

    [引用 user="ming li50749"] ADC 转换需要校准命令?[/quot]

    否、校准通常是一种不频繁的操作、可校正失调电压和增益误差。 在正常操作期间、您将读取数据、而不会发出校准命令。

     

    [报价用户="ming li50749"]我在论坛上阅读了一些文章,有人初始化芯片时使用停止命令,是初始化芯片时所需的停止命令[/quot]

    由于 START 引脚连接至低电平、因此 ADS1259默认应停止。 我认为您不需要在启动期间发送 STOP 命令、但我会在初始化时以及在读取或写入器件寄存器之前发送 SDATAC 命令。

     

    [引用 user="ming li50749"]读取寄存器值时,是否需要 RDATA 命令?

    否、RDATA 仅用于读取数据。 读取寄存器使用 RREG 命令。

     

    ming li50749 说:
    您能告诉我为什么 config0出错吗?

    我不确定为什么您读取 CONFIG0寄存器的意外值。 我建议在开始 RREG 命令之前插入较长的延迟(以允许 SPI 接口超时)、以确保 MCU 和 ADC 通信同步。
     

    [引用 user="ming li50749">我有一个想法。 我将数据速率设置的 SPS 设置为14400、然后将 ADS1259设置为栅极控制模式。 DRDY 引脚设置为外部中断引脚。 (这是否正常? 我认为这可以减少系统延迟并提高实时性能、让 CPU 减少工作负载、因为我使用的是 FreeRTOS 系统)。

    是的、/DRDY 通常与中断配合使用、以指示 MCU 何时提供 ADC 数据。

     

    [引用 user="ming li50749">当我执行上述初始化时,我将等待10ms。 正如您在其他帖子中提到的、"使用启动的稳定时间"需要时间、对于14400SPS、至少需要144000.424 (sinc1) 0.563 (sinc1)。然后使用 START 命令启动转换、同时打开 RDATAC 命令。 CPU 将确定 DRDY 是否已关闭、存在下降沿触发器、指示数据已就绪、CPU 进入中断、开始读取 ADC 数据、并将其保存到 RAM 以供后续处理。

    您应该发出 START 命令、然后等待转换数据。 但是、如果您使用/DRDY 中断来确定转换何时完成、则无需指示 MCU 在此处插入延迟。 此外、我要小心确保 MCU 不会因读取数据的任务而中断。 您将需要 MCU 完成 SPI 通信、然后再继续执行其他任务。

      

    [引用 user="ming li50749]sinc1和 sinc2的含义是什么?有什么区别? 我的软件是否需要注意这一点?

    这些是不同的数字滤波器类型。 SINC2提供更多噪声衰减、但稳定时间较长。  请参阅 https://e2e.ti.com/blogs_/archives/b/precisionhub/archive/2016/06/10/delta-sigma-adc-digital-filter-types-sinc-filters

     

    [引用 user="ming li50749]I 在初始化期间发送了 SDATAC。 以后继续发送其他命令时是否仍需要发送此命令? 还是在发送 SDATAC 之前必须再次发送它? (例如、在系统运行100ms 后、我将在发送 RDATAC 命令之前更改一些参数)。

    为了读取/写入寄存器、应该在初始化期间发送 SDATAC。 不需要随每个命令一起发送。 进入此模式后,除非发送 RDATAC 命令,否则应保持此模式。

     

    [报价用户="明码50749"]发送 RDATAC 命令后,是否需要发送 RDATA 命令?

    否、仅当处于 SDATAC 模式时才需要 RDATA。 在 RDATAC 模式下、只需发送0x00字节即可读取数据。

     

    [报价用户="ming li50749"]是 RDATAC 命令之前还是之后的启动命令?

    我会在 RDATAC 命令之前发送 START。 在 RDATAC 模式下、ADC 仅检索数据或退出 RDATAC 模式(通过 SDATAC 命令)。

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

    您好、霍尔先生、
    1、我使用硬件 SPI 来驱动 ADS1259、它不应受到 RTOS 的影响。 如果是软件仿真、则必须通过8位保护来完成。
    XTAL-H1的频率为7.3728MHz。
    3、移除 DVDD 电源中的 L1后、我将收到上级指示、因为硬件已经完成。
    4、"我不确定您为什么要读取 CONFIG0寄存器的意外值。 我建议在开始 RREG 命令之前插入较长的延迟(以允许 SPI 接口超时)、以确保 MCU 和 ADC 通信处于同步状态。" 这句话的长延迟是指 RREG 与什么命令之间的延迟? 我今天要测试这个建议。

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

    您好、霍尔先生、
    感谢您的回复、这对我大有帮助。
    ADS1259初始化后、我等待了大约3s、然后发送了 RREG 命令、但结果仍然是:CONFIG0与数据表之间存在差异。 其他寄存器值正常。

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

    您好、霍尔先生、
    感谢您的回复、这对我大有帮助。

    我已经读取了 ADC 数据 fffc86、我认为它应该为负值、并且我没有执行任务校准、所以在这种情况下我需要进行校准吗?
    我阅读了手册第27页、我的理解是:
    1、设置为 PULSE = 0
    2、打开转换启动命令
    3、外部输入输入0或满量程
    4、等待一段时间
    5、发送 OFSCAL 或 GANCAL 命令
    6.等待校准完成。 校准结束时、DRDY 将处于低电平
    我的理解是否正确? 校准过程中是否需要输入外部电压? 每个芯片是否需要外部电压输入? 当我们大规模生产时、这将增加工作量。

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

    您好、霍尔先生、
    我很高兴我获得了数据!

    I 输入2.49913V 在 ADS1259的 AINP 引脚中、AINN 接地、ADS1258采样的数据为2.499290V。

    但我很好奇、如何校准 ADS1259? 是否每个芯片都已出厂、我必须在程序中进行补偿? 或者我是否使用 adsOFSCAL (偏移校准)或 GANCAL (满量程校准)命令进行校准?

    如果我使用 OFSCAL 或 GANCAL 命令进行校准、您能解释如何校准吗?
    具体而言、我不太理解这句话:对 ADS1259应用适当的输入(零量程或满量程)、如何操作此步骤?

    非常感谢!

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

    您好、Ming、

    [引用 user="ming li50749">我阅读了手册第27页、我的理解如下:
    1、设置为 PULSE = 0
    2、打开转换启动命令
    3、外部输入输入0或满量程
    4、等待一段时间
    5、发送 OFSCAL 或 GANCAL 命令
    6.等待校准完成。 校准结束时、DRDY 将处于低电平
    我的理解是否正确? 校准过程中是否需要输入外部电压? 每个芯片是否需要外部电压输入? 这将增加大规模生产时的工作量。[/quot]

    您的序列看起来基本上是正确的。 Setp 4的延迟仅在输入信号稳定时才是必需的。 校准将在步骤5之前开始、并且在发出命令和等待/DRDY 变为低电平之间会有更长的延迟。

     

    [引用 USER="ming li50749]]如果我使用 OFSCAL 或 GANCAL 命令进行校准,您能解释一下如何进行校准吗?
    具体而言、我不太理解这句话:对 ADS1259 (零量程或满量程)应用适当的输入、如何操作此步骤?

    我在 E2E 主题 中写下了有关相关器件校准过程的相当详细的说明:e2e.ti.com/.../707084。 一些 SPI 命令的命名方式不同、但同样的概念适用。 看看这种解释、让我知道这是否有帮助。