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.

[参考译文] ADS1298:寄存器的菊花链配置例程

Guru**** 2585275 points
Other Parts Discussed in Thread: ADS1298

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/630196/ads1298-daisy-chain-configuration-routine-for-the-registers

部件号:ADS1298

大家好,

我正在尝试使用菊花链配置连接两个ADS1298 ADC。  

在硬件方面,我遵循了数据表第57页上的示意图。

因此,我只使用一个CS,DIN和SCLK引脚来处理SPI,这意味着我期望两个ADC都有相同的响应。

例如,如果我将它们设置为1kSPS,并且所有信道均已打开且每个信道12的增益,那么我将为所有16个信道获得相同的值。

到目前为止还不错。  

但是,当我尝试配置ADC时,我可以设法从主ADC中获得清晰的数据,我们称之为主ADC,但从从属ADC中获取的数据数量不正确。  

我在数字示波器中看到的是来自主ADC的DRDY,它会准时落下,并且数据可用,而对于第二个ADC,我会在每4个主DRDY落在中间并随机地获得数据。  

我不确定问题是什么,但我对两个ADC的初始化感到怀疑。 我使用的初始化例程与用于单个ADC的相同,类似于第85页数据表中提供的初始化例程,即:  

  1. 重置
  2. SDATAC
  3. 连接3 (0xE1)
  4. 配置1 (0xA0)
  5. CONFIIG2 (0x00)
  6. channel_set (全部打开,增益1)
  7. 开始
  8. RDATAC

我假设我不必更改初始化过程,但正如我所看到的,我没有得到我所期望的,因此我开始感觉它有问题。

此外,在RDATAC之后,我尝试引入另一个启动操作码(起始引脚连接到GND),以同步两个ADC,但没有运气。

您能帮我找到问题的解决方案吗?

你有什么建议?  

提前感谢您的参与和帮助。

祝你一切顺利,

乔治

 

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

    感谢您的提问!

    您是否知道在多个菊花链式设备的数据之间需要额外的"不在乎"位? 如果您在发送SCLK时未考虑此额外位,则可能解释第二个设备的数据为何显示损坏。 有关详细信息,请参阅第57页(图67)。

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

    我已经介绍了这一点。 我正在使用FPGA与ADC通信,所以这对我来说不是问题。

    我已设法使其正常工作,但仅当我遵循不同的初始化过程时。

    这意味着我将再次重写config1寄存器。

    我提出这个想法是因为“从属”ADS没有CLK,因为CLKSET引脚连接到GND。
    因此,我的假设是,如果没有内部时钟,ADS就不能运行,也不能写入寄存器。

    我对这一个是否正确?

    我现在使用的初始化过程是:

    1.重置
    2.SDATAC
    3.config1 (0xA0)
    4.CONFIIG3 (0xE1)
    5.config1 (0xA0)
    6.CONFIIG2 (0x00)
    7.channel_set (全部打开,增益1)
    8.开始
    9. RDATAC
    10.启动(用于同步)

    看起来工作正常,但加载代码需要3或4次才能开始正常工作。

    我的另一个问题是关于CLKSET引脚,在初始化两个ADC后,我是否必须将其连接到接地?

    再次感谢。

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

    您好,George,

    两个ADC都需要时钟源才能运行。 此时钟源在内部进行划分,以控制ADC采样频率和数字内核。 CLKSEL针脚的状态告诉设备是使用内部时钟源还是使用外部时钟源。

    您用于"MASTER" ADS1298的时钟源是什么?

    如果您在系统中使用外部时钟,则可以与两个ADS1298器件共享此时钟。 要为两个器件使用外部时钟,请将其CLK引脚短接在一起,并将其连接至外部时钟输出。 另外,将每个CLKSEL引脚接地以禁用内部振荡器。

    如果要使用内部振荡器,则需要将CLKSEL引脚高连接到DVDD。 但是,两个设备应使用相同的时钟运行,以便真正同步。 一种解决方案是从“主”ADS1298输出内部振荡器,并将其连接到“从”ADS1298的CLK输入引脚。 为此,请启用“主”ADS1298上的内部振荡器(CLKSEL = HIGH),并将config1[5]设置为'1'。 然后,在“从ADS1298上,将CLKSEL =0并将两个CLK引脚短接在一起。

    此致,

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

    你好,Ryan,

    首先,感谢您的参与和帮助。

    我已通过两次写入config1寄存器成功解决了问题。 未发现硬件设计问题。

    根据我的理解,由于我使用的是内部时钟(2.048MHz),时钟将会启动,并且从第一个寄存器写入开始,"从属" ADC将会看到,但如果我不第二次写入,第二个ADC将不会启动。  

    虽然100 % 不相信应该遵循此程序,但正如我所说的那样,它对我有效。

    此致,

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,George,这确实很有意义。 默认情况下,“主”ADC不会输出时钟,因此您必须再次写入config1设置,以便配置“从属”ADC。

    此致,