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.

[参考译文] CCS/ADS1282:带TMS320C6701的ADS1282

Guru**** 2581345 points
Other Parts Discussed in Thread: SMJ320C6701, TMS320C6701, ADS1282, TMS320VC5507, DAC121S101, ADC128S102, ADS1252

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/653578/ccs-ads1282-ads1282-with-tms320c6701

部件号:ADS1282
线程中讨论的其他部件:TMS320C6701,SMJ320C6701 TMS320VC5507DAC121S101ADC128S102

工具/软件:Code Composer Studio

我想将ADS1282与TMS320C6701处理器连接起来。  我已将McBSP0端口信号连接到ADS1282。  DX0至ADS1282的DIN,FSX0可同步ADS1282的输入,DRDY 输出至DSP的FSR0,DOUT至DSP的DR0。

我想在连续转换模式下操作ADS1282,采用2000或1000 SPS速率,并通过DSP进行握手,而不会丢失任何数据。  我想每隔一秒切换一次频道和PGA增益。 我的输入是从-1.25V到+1.25V的斜波信号,速率为10到100Hz。  我在基于命令的单转换模式中尝试了一些使用大约100/160KHz SCLK的代码。 但是,读取数据时我不会得到任何DOUT,而是在配置ADS1282时得到一些DOUT。 寄存器值的顺序为:0x11,0x41,0x01,0x52,0x08, ox12,然后是ox00,ox00,ox00和ox00,用于四个字节的DOUT。  但我的实际要求是 使用  多个同步脉冲的连续转换模式。 即,每个同步脉冲转换一个。

我想知道以下内容。

1,McBSP应配置的模式是什么? 是SPI主中继器还是独立McBSP发送/接收?

2.提供所有McBSP寄存器的值。

3. ADS1282寄存器的配置顺序是什么?

4.要写入寄存器的值是多少?

5.如何从转换器读取数据?

6.如何将读取的数据与ADS1282中的DRDY输出同步?

7.如何将32位数据转换为相应的模拟值?

请快速响应,因为这是一个紧急项目。

此致,

项目经理Pradeepkumar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    此问题最好在数据转换器论坛中讨论。 我将把它移到那里

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

    您好,Pradeepkumar,

    欢迎来到TI E2E论坛!

    我会尽力回答您的问题... 我对ADS1282比较熟悉,但对TMS320C6701处理器不太熟悉,所以如果您有关于处理器的其他问题,我会看看我是否可以让处理器方面的人来帮助解决这些特定问题。

     

    ADS1282数字接口与SPI兼容。 当/CS引脚为低电平时,它将充当SPI从属设备并使用SPI模式0 (CPOL = 0;CPHA = 0)进行通信。 从您的描述来看,您似乎是在使用处理器上的FSX引脚来控制ADS1282上的同步引脚,而不是使用/CS引脚。 您是否从单独的GPIO控制/CS引脚?  通常,FSX引脚用于控制ADC的/CS引脚;但是,由于ADS1282使用的可变长度SPI命令,您可能需要将FSX引脚配置为GPIO,并在要与ADC通信时手动将其设置为低电平。

    另外请记住,ADS1282具有一个平坦的带式FIR滤波器,需要大约63个转换周期才能稳定下来。 每次切换同步引脚(或切换输入通道)时,您将中止当前ADC转换并重新启动转换过程。 如果您切换同步PIN的频率太高,则可能没有足够的时间完成转换,这可能是您不读取任何数据的原因。

    此外,在使用连续同步模式时,您需要确保同步脉冲对应于整数的ADC转换周期,精确到+/- 0.5 fCLK范围内,否则您还将中止并重新启动当前的ADC转换。 我不确定这是否是您的预期使用案例...您需要确保同步多个ADC,还是只需命令ADC为每个同步脉冲提供1个转换结果?  对于以后的使用情况,我建议使用脉冲同步模式(ADS1282的默认配置)。

     

    寄存器值的顺序为:0x11,0x41,0x01,0x52,0x08, 对于四个字节的DOUT,依次选择ox12和ox00,ox00,ox00和ox00。

    请注意,“0x41,0x01,0x52,0x08”命令序列正在将CONFIG0和config1寄存器配置为其默认值。

    在读取数据之前,您需要等待/DRDY引脚变低。 通常/DRDY连接到处理器上的GPIO中断以触发RDATA (读取数据)操作。 如果您在转换完成之前读取数据,您可能在DOUT上看不到任何活动,除非转换已完成,在这种情况下,您可能会看到先前转换结果的重复。

     

    关于您的特定问题:

    1. 我不是特别熟悉McBSP模式;但是,处理器需要提供SCLK和CONTROL /CS,以允许可变长度SPI命令。

    2. 我建议您参考本参考指南以获得帮助:
       

    3. 有关高级编程顺序的概述,请参阅ADS1282数据表中的第12节。 对于寄存器配置,除了在写入设备寄存器之前确保设备处于SDATAC模式(通过发送SDATAC命令或0x11,如您在示例中所示)之外,没有任何必需的顺序。

    4. 这取决于您的应用程序以及您希望ADS1282如何运行(同步模式,数据速率等)。 某些寄存器可能在初始化期间设置一次。 但是,对于更动态的设置(如输入MUX通道选择),您需要在ADC转换之间定期重新编程这些寄存器。 有关寄存器配置的详细信息,请参阅ADS1282数据表中的第11节。 如果您对不同模式或特定寄存器有任何具体问题,我很乐意回答这些问题。

    5. 有两种方法可通过命令或连续(RDATAC)模式读取数据...。 在这两种模式下,您都需要等待/DRDY信号变低(表示ADC转换已完成)。 通过命令读取时,您将发送RDATA命令,后跟“0x00”字节,以对数据进行时钟处理。 在RDATAC模式中,您只需要对数据进行时钟处理(通过发送“0x00”字节)。

    6. 这可以通过轮询/DRDY引脚或使用中断来完成。 一般来说,我建议使用中断,这样当处理器忙于执行另一个进程时,就不会不必要地占用处理器带宽,并确保更及时的响应。 应快速处理读取数据,以确保您不会在下一个/DRDY低发生率期间读取数据,因为这可能会导致数据损坏,这是新旧数据的混合。

    7. 有关ADS1282数据格式化的详细说明,请参阅此E2E帖子:
        

    我希望这能有所帮助!

    此致,
    Chris

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

    非常感谢您的快速回复。

    我现就你的答复中的以下各点作出回应。
    1."您是否从单独的GPIO控制/CS引脚?"
    ADS1282没有/CS引脚,因此我不使用/CS引脚
    目前,FSX引脚配置为McBSP的FSX。
    2。" ADS1282具有平坦的带式FIR滤波器,需要大约63个转换周期才能稳定下来。 每次切换同步PIN"
    使用连续同步模式时是否需要63个转换周期才能稳定下来,确保将同步脉冲指定为时钟,该时钟与ADC转换周期的整数相对应,精确到+/- 0.5 fCLK范围内。?
    它是否需要63个转换周期才能在使用单同步脉冲的连续转换模式下满足每次转换的要求?
    3.另外,使用连续同步模式时,您需要确保同步脉冲对应于整数的ADC转换周期,精确到+/- 0.5 fCLK内,否则您还将中止并重新启动当前的ADC转换"
    上述中止的转换是否需要另外63个转换周期才能稳定下来?
    4.."您是否需要确保多个ADC同步,或者只需命令ADC在每个同步脉冲中提供1个转换结果?"
    我只需要从一个ADC控制和获取数据

    5。" 在读取数据之前,您需要等待/DRDY引脚变低。 通常/DRDY连接到处理器上的GPIO中断以触发RDATA (读取数据)操作。 如果您在转换完成之前读取数据,您可能在DOUT上看不到任何活动,除非转换已完成,在这种情况下,您可能会看到先前转换结果的重复。"
    我认为这是我的问题,目前通过发送4字节0x00读取的数据不是通过同步发送的,而是在延迟后发送的。 我也尝试了1ms,2ms和64ms的延迟,但转换器没有DOUT。 我觉得还有一个问题。 由于我是在SPI模式下操作McBSP,帧同步FSX也会在每次发送0x00以收集数据时进入ADS1282的同步输入。 这可能会触发另一个新的转换,因此没有数据。 因此,我认为每次发送ox00字节来收集数据时,我都必须重新配置McBSP以禁用FSX。
    还有其他办法吗?
    我想使用带有单同步(FSX)脉冲的连续转换模式来启动对话。 是否正常?

    我只为重新发送的引脚提供开机重置。 是否还需要使用某些GPIO重置设备?

    如何连接调制器数据输出引脚M0 (引脚9)和M1 (引脚8)?


    如何连接调制器时钟输出引脚MCLK (引脚7)?

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

    您好,Pradeep,

    1. 正确,ADS1282上没有/CS引脚;此器件的SPI始终处于活动状态。 但是,我仍然不确定FSX引脚是否能够为ADS1282提供准确的同步时钟。 为了在ADS1282上使用连续同步模式,通常需要从ADC的主时钟派生同步时钟,以确保这些时钟不会相互偏移。
       

    2. 如果同步时钟与ADC的转换周期一致,则不会发生任何情况(ADC将在每个转换周期结束时持续提供数据)。 只有当您首次开始转换或重新开始转换时(如同步时钟与ADC的转换周期不一致时),才需要等待过滤器再次稳定。

      在脉冲同步模式下,SYNC命令将始终重置数字滤波器,并要求您等待滤波器再次稳定。

      请注意:只有FIR滤清器需要63个转换周期才能结算。 窦性滤波器的沉降速度快得多(~5个转换周期)。 请参阅数据表中的表35了解确切的时间。


    3. 是的。 但是,我相信在连续同步模式下,每个转换期间您仍会看到/DRDY脉冲低;在过滤器重新确定之前,您将得到无效数据(全部为0或全部为1)。
       

    4. 如果您只是使用一个ADC,那么我看不到使用连续同步模式的好处... 该模式的目的是确保多个ADC保持同步,或者重新启动不同步ADC以使其与其他ADC恢复同步。
       

    5. 这对我来说很有意义... 我将禁用FSX引脚功能并配置为GPIO,这样您就不会在每次读取数据时重新同步该部件。

     

    关于您的其他问题...

    我想使用带有单同步(FSX)脉冲的连续转换模式来启动对话。 是否正常?[/QUOT]

    这种方法有效,但您也可以使用脉冲同步模式,因为在脉冲同步模式中,您知道每次切换同步引脚时ADC都会重新同步。
     

    我只为重新发送的引脚提供开机重置。 是否还需要使用某些GPIO重置设备?[/QUOT]

    最好在通电后重置设备。 我认为您不需要使用GPIO控制/reset引脚,因为您还可以发送SPI命令来重置设备。 如果您不使用/reset引脚,请确保将其拉高以防止其浮动。
     

    如何连接调制器数据输出针脚M0 (针脚9)和M1 (针脚8)?
    如何连接调制器时钟输出引脚MCLK (引脚7)?[/QUOT]

    如果您没有在调制器模式下使用ADS1282,请将M0,M1和MCLK绑定到DVDD或GND。

     

    此致,
    Chris

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

    尊敬的Chris先生:

     继续 我以前的疑虑。  我想在SPI模式下从ADS1282 ADC收集32位数据。  我已将DSP SMJ320C6701 McBSP0端口连接到ADS1282。  DSP_DX0连接 到ADS的DIN,DSP_CLKX0连接到ADS的SCLK, 由ADS组成的DOUT连接到DSP_DR0, 来自ADS的#DRDY连接到DSP_FSR0。  ADS1282的此CLK由独立的2MHz CMOS振荡器提供。  DSP时钟是另一  个24MHz CMOS振荡器。

    这样,如何 在2000和4000 SPS的连续模式下通过SPI从ADS1282收集数据?

    是否可以提供用于执行此操作的样例汇编代码?

    请提供帮助。

    此致,

    Pradeep。

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

    尊敬的Chris先生:

    主题:ADS1282和DSP320C6701 SPI接口问题

     继续 我以前的疑虑。  我想在  SPI模式下从ADS1282 ADC收集32位数据。  我已将DSP SMJ320C6701 McBSP0端口连接到 ADS1282。  DSP_DX0连接 到ADS的DIN,DSP_CLKX0连接到ADS的SCLK, 由ADS组成的DOUT连接到DSP_DR0, 来自ADS的#DRDY连接到DSP_FSR0。   ADS1282的此CLK 由独立的2MHz CMOS振荡器提供。  DSP时钟是另一  个24MHz CMOS振荡器。

    这样,如何 在  2000和4000 SPS的连续模式下通过SPI从ADS1282收集数据?

    是否可以提供用于执行此操作的样例汇编代码?

    请提供帮助。

    此致,

    Pradeep。

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

    您好,Pradeep,

    如果您打算在2 kSPS和4 kSPS的速率下使用ADS12FIR滤波器,则需要为ADC提供4.096 MHz时钟,否则,如果使用2.048 MHz时钟,您需要为ADC编程,使其达到标称数据速率的两倍。

    您的硬件连接看起来不错... 我将它们与ADS1282EVM上的连接进行比较,ADS1282EVM连接到TMS320VC5507上的McBSP端口。 我唯一不确定的是"FSR"(帧同步接收)是否可用于/DRDY输入。 在ADS1282EVM上,/DRDY引脚连接到“FSR”引脚和外部中断引脚,但我不知道软件使用哪个引脚来触发数据读取操作。

    就软件示例而言,TI.com上的内容很可能是我们拥有的所有可用示例... 我参考了“TMS320C6000 DSP
    多通道缓冲串行端口(McBSP)参考指南”。 我能够找到的唯一其他代码资源是“TMS320C6000芯片支持库”,可在此处找到:
    http://www.ti.com/tool/sprc090

    您可以尝试在C6000单核DSP E2E论坛中查看或询问是否有任何人能够帮助该DSP提供一些SPI示例代码。 下面是指向该论坛的链接:
    e2e.ti.com/.../

    此致,
    Chris

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

    尊敬的Chris先生:

    非常感谢您的帮助。  

    您可以回答一个有关采样率的问题。   我观察到,它的速率始终是数据表中指定的速率的一半。 好的,我们已经决定通过更高的费率选择来处理这一问题。 我们实际上需要1000SPS及以下。 因此,有2MHz是可以的。

    讨论我的实际问题。 我想知道是否使用真正的SPI,可以在连续采样模式下以1000SPS的速率收集数据。   我可以将/DRDY连接到FSR引脚。  但在真正的SPI模式中(这意味着McBSP具有时钟停止CLKSTP位设置),FSR没有角色,如果我正确,McBSP将禁用它。  

    文档“SPRU580G–2006年12月” “多通道缓冲串行端口(McBSP)”第 59页 指出“FSR和CLKR信号不应在SPI模式下使用。”

    这就是为什么我不能使用FSR,即使我已将/DRDY连接到FSR。

    我找不到任何方法在SPI模式下使用FSR。  

    我希望避免使用中断,因为我正在使用DAC121S101,在从最小到最大的快速扫描模式下使用相同的SPI端口。  它需要连续不间断的时钟以避免出现故障。  如果我使用中断,DAC将每隔1毫秒中断一次,并且输出中将出现一个故障。

    因此,请在真正的SPI模式或McBSP的任何其他模式下,找到使用SPI接口读取ADS1282的方法。

    此致,

    Pradeep。

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

    很抱歉耽误你的时间。 我想找一个支持TMS320C6701的人,他将能够更好地回答您的最新问题。

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

    感谢大家的支持。

    我决定将ADS1282 DRDY输出用作中断,以同步ADS1282数据读取/配置,ADC128S102数据读取和DAC121S101更新。

    使用单SPI (DSP320c6701 McBSP0端口)连接所有三个接口的问题已解决,但我再次因操作中的某些间歇性问题而困扰,详情如下。

    目前,我正在使用ADS1282 ADC的DRDY输出来同步ADS1282数据读取和DAC更新,它们处于连续循环操作中。 只要ADS输出就绪,DRDY就会降低。 打开电源时,由于2MHz时钟而非4MHz额定输入,DRDY以2ms速率而非1ms速率工作。 这对我来说没问题。

    程序启动时,首先配置ADC128s102,然后配置ADS1282 (1ms速率,即2000SPS @2MHz),最后配置DAC。

    我们观察到的是:

    1,ADS1282在重新配置(编程)之前,会进行多次尝试,尝试次数从2次到10次以上不等。 所有这些尝试都在具有相同McBSP参数和ADS1282编程字节序列的循环中。

    2.有时,ADS1282在尝试数十次后仍无法更新,然后无法生成DRDY输出,从而停止整个采集程序,该程序依赖于它来同步所有操作。

    如果ADS1282在几次尝试中编程,则该程序将持续运行,不会出现任何问题,并且每隔3秒(每循环一次)就会重新编程数十分钟。

    我们无法理解ADS1282第一次尝试时未编程的原因。

    我们也不知道为什么即使在多次尝试之后,ADS1282也根本没有编程。

    更危险的是,如果无法对ADS1282进行编程,则它会在一段时间后停止生成DRDY输出。

    我能看到的唯一问题是,当我更新DAC时,ADS1282会获得时钟,因为它们之间共享时钟。

    1.在DAC更新过程中,如果将任何零设置为ADS1282,是否会影响其编程?
    2. ADS1282如何知道其编程所需的全部八位均已移进?
    3.何时开始计时?
    4.同步脉冲是否有助于同步ADS1282编程时钟和数据?
    5.还是在每个时钟上简单地移动数据,并在获得8位时开始工作?
    6.如果是这种情况,在开始执行数据之前,它将等待多久才能看到不再出现时钟和数据?

    Kinldy快速回复并为我们提供解决方案。

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

    您好,Pradeep,

    我只能看到这样的问题: 我更新DAC时,ADS1282会获取时钟,因为它们之间共享时钟。 [/引述]

    我刚刚问您是否在设备之间共享相同的SPI信号...

     

    要回答您的问题:

    1. 由于ADS1282没有/CS引脚,因此每当您向同一SPI总线上的另一个器件发送SPI命令时,ADS1282也会解释此命令。 这可能是您通信问题的原因。
    2. ADS1282实质上是对SCLK进行计数。 只要MCU和ADC保持同步,这就可以正常工作...如果SCLK出现故障,则可能会成为问题,因此ADC认为它是MCU前的一个SCLK。

    3. 计数在器件释放内部复位后开始(在开机期间,请参阅图50或51,具体取决于所查看的ADS1282的数据表),超时后(SCLK保持低电平65 DRDY周期)以及SPI命令完成后开始。

    4. 如果我理解您的问题是正确的,同步脉冲不会“重置”SPI接口上的时钟计数。

    5. 正确,在传输8位命令后,ADC将查找下一个8位命令。

    6. 通常,ADC在SCLK第八个上升沿之后的下一个上升沿 ƒCLK开始执行该命令,换言之,在收到命令后立即执行。

    如果可以,我建议为ADS1282使用单独的SPI (或McBSP)接口,或者在不与ADS1282通信时将SCLK门控到ADS1282,如本E2E POST上的附件所示:

    下面是纯文本URL,以防上面的多媒体链接不起作用:"e2e.ti.com/support/data_converters/precision_data_converters/f/73/p/29.151万/1016953#1016953"</s>101.6953万 101.6953万

    此致,
    Chris

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

    尊敬的Chris先生:

    感谢大家的支持。  

    我决定将 ADS1282 DRDY输出用作中断,以同步 ADS1282 数据读取/配置, ADC128S102 数据读取和 DAC121S101 更新。  

    使用单SPI (DSP320c6701 McBSP0端口)连接所有三个接口的问题已解决,但我再次因操作中的某些间歇性问题而困扰,详情如下。  

    目前,我正在使用 ADS1282 ADC的DRDY输出来同步 ADS1282 数据读取和DAC更新,它们处于连续循环操作中。 只要ADS输出就绪,DRDY就会降低。 打开电源时,由于2MHz时钟而非4MHz额定输入,DRDY以2ms速率而非1ms速率工作。 这对我来说没问题。  

    程序启动时,首先配置 ADC128s102 ,然后配置 ADS1282 (1ms速率,即2000SPS @2MHz),最后配置DAC。  

    我们观察到的是:  

    1, ADS1282 在重新配置(编程)之前,会进行多次尝试,尝试次数从2次到10次以上不等。 所有这些尝试都在具有相同McBSP参数和 ADS1282 编程字节序列的循环中。  

    2.有时 ,ADS1282 在尝试数十次后仍无法更新,然后无法生成DRDY输出,从而停止整个采集程序,该程序依赖于它来同步所有操作。  

    如果 ADS1282 在几次尝试中编程,则该程序将持续运行,不会出现任何问题,并且每隔3秒(每循环一次)就会重新编程数十分钟。  

    我们无法理解 ADS1282 第一次尝试时未编程的原因。  

    我们也不知道 为什么即使 在多次尝试之后,ADS1282也根本没有编程。  

    更危险的是 ,如果无法 对ADS1282进行编程,则它会在一段时间后停止生成DRDY输出。  

    我能看到的唯一问题是 ,当 我更新DAC时,ADS1282会获得时钟,因为它们之间共享时钟。  

    1.  在DAC更新过程中,如果将任何零设置为ADS1282,是否会影响其编程?
    2. ADS1282如何 知道其编程所需的全部八位均已移进?
    3.何时开始计时?
    4.同步脉冲是否有助于同步 ADS1282 编程时钟和数据?
    5.还是在每个时钟上简单地移动数据,并在获得8位时开始工作?
    6.如果是这种情况,在开始执行数据之前,它将等待多久才能看到不再出现时钟和数据?

    Kinldy快速回复并为我们提供解决方案。  

    此致,  
    Pradeep。

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

    正如Chris前面提到的,由于ADS1282没有专用的芯片选择引脚,它将侦听/响应来自TMS320C6701发射器的MOSI馈送的任何内容。 您正在使用的DSP具有两个McBSP外设,您是否可以通过将ADS1282从ADC128S102和DAC121A101中移至其它McBSP端口来隔离它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的Chris先生:

     

    我决定将 ADS1282 DRDY输出用作中断,以同步 ADS1282 数据读取/ ADS1282配置, ADC128S102 数据读取和 DAC121S101更新。  这将确保中断时不存在SCLK,以避免ADS1282数据的MSB丢失。

    使用单SPI (DSP320c6701 McBSP0端口)连接所有三个接口的问题已解决,但我再次因操作中的某些间歇性问题而困扰,详情如下。  

    目前,我正在使用 ADS1282 ADC的DRDY输出来同步 ADS1282 数据读取和DAC更新,它们处于连续循环操作中,每次迭代大约需要8毫秒。 。 只要ADS输出就绪,DRDY就会降低。 打开电源时,由于使用2MHz时钟而不是4MHz额定输入,DRDY以2ms速率而不是1ms速率工作。 这对我来说没问题。  

    程序启动时,首先配置 ADC128s102 ,然后配置 ADS1282 (1ms速率,即2000SPS @2MHz),最后配置DAC。  然后它将进入8毫秒的4xADS1282数据读取循环(4 nos DRDY@2毫秒)和DAC更新。 此循环将持续大约3秒,然后使用 ADC128s102和  ADS1282的配置再次重复(用于更改通道,PGA增益和采样率)。 我们还将在配置ADS1282寄存器后对其进行读取。

    我们观察到的是:  

    1, ADS1282 在重新配置(编程)之前,会进行多次尝试,尝试次数从2次到10次以上不等。 所有这些尝试都是在具有相同McBSP参数和 相同ADS1282  编程字节序列的循环中进行的。  

    2.有时 ,ADS1282 在尝试数十次后仍无法更新,然后无法生成DRDY输出,从而停止整个采集程序,而该程序依赖于它来同步所有操作。  

    3.如果 ADS1282 在几次尝试后编程,则程序将持续运行,不会出现任何问题,并且每隔3秒(每循环一次)就会重新编程数十分钟。  

    4.我们无法理解 ADS1282 第一次尝试时未编程的原因。  

    5.我们也不知道 为什么在 多次尝试之后,ADS1282根本无法编程。  

    6.更危险的是 ,如果无法 编程,ADS1282会在一段时间后停止生成DRDY输出。  

    我能看到的唯一问题是 ,当 我更新DAC时,ADS1282会获得时钟,因为它们之间共享时钟。  此外,ADS1282还可获得一些不带SCLK的DIN位。

    7.但主要要求是DRDY应持续来自ADS1282。 DRDY输出的这种间歇性已成为我们的主要问题。  我们正在更改频道,并在每次扫描(3秒)后更新PGA增益和采样率。  如果ADS1282不接受该命令,它将不会更改通道,从而从以前的通道本身收集数据,我们无法知道正在转换哪个通道。  因此我们命令读取ADS1282寄存器以了解当前通道,PGA增益和采样率。  这样我们就可以在数据标题中使用该信息,以避免认为每个备用数据都来自备用通道,这是需要的。  但我们从未从ADs1282寄存器读取操作中获得任何输出。  因此,目前还没有解决方案。

    另一个主要问题是ADS输出代码与给出的模拟输入不匹配。 这是我们主要关注的问题。

    请尽早回答以下问题>

    1.  在DAC或ADC128S102更新过程中,任何位转移到ADS1282是否会妨碍其编程?

    2.没有时钟的情况下,DIN输入到ADS1282是否会停止DRDY并停止进一步的转换?
    3. ADS1282如何 知道其编程所需的全部八位均已移进?
    4.何时开始计算时钟?
    5.同步脉冲是否有助于同步 ADS1282 编程时钟和数据?
    6.还是数据在每个时钟上简单地移动,并在获得8位时开始工作?
    7.是否存在任意数量的SCLK输入到ADS1282且具有任何无效数据,停止DRDY并停止进一步的转换?

    8.如果将多个SCLK和DIN输入到ADS1282中,它将使用前8位还是最后8位作为有效输入?

    9.如果它占用前8位,那么如果8位没有移进,它是否会等待剩余的位移后再处理它? 如果是,它将等待多少时间? 或者等待什么事件?

    10.如果它需要最后8位,那么如果8位的倍数中有超过8位的位被移进,它是否会等待剩余的位被移后再处理它? 如果是,它将等待多少时间? 或者等待什么事件?

    11. DRDY在哪些情况下会停止?

    12.主要是为什么ADS1282有时会执行命令,有时不执行命令?

    13.为什么ADS1282的转换输出数据就绪“DRDY”会间歇性停止?
    14.为什么ADS1282寄存器读取操作从不给出值?
    15.为什么ADS1282转换后的数据输出与输入值没有任何关系?
    16.将AINN1和AINN2输入连接到GND是否导致此问题?


    请帮助我快速回答每一个疑问。

    提前感谢。

    Pradeep。

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

    您好,Pradeep,

    当您重新读取ADS1282寄存器以查看其是否已正确编程时,您通常会在失败的尝试中看到什么? 是否所有寄存器都未更改(仍设置为默认值),您是否发现某些寄存器已更新,而其他寄存器尚未更新,或者您是否回读垃圾数据?

    您是否查看过示波器上的SPI通信,以查看是否存在任何信号完整性问题或计时问题?

    要解决您的问题...

    1. 如果您无意中将位数转换为ADS1282,则会由于数据不对齐而使通信混乱。 您可以尝试在64个/DRDY周期内保持SCLK低电平,以允许ADS1252的SPI接口在对寄存器进行编程之前重置,或者您可以切换/reset引脚,这也会重置SPI接口。 这将有助于确保SPI命令和数据对齐,以便ADS1282正确解释它们。

    2. 如果您意外发送了待机命令,它可能会停止/DRDY输出。 此外,任何校准命令都可能会暂时停止/DRDY,因为校准可能需要一段时间。
    3. 我怀疑这是一个内部计数器;因此,为什么确保SCLK清洁且无故障非常重要。 按住SCLK LOW (SCLK低) 64个/DRDY周期或切换/重置将重置此计数器。

    4. 如果没有/CS引脚,ADS1282将始终计算时钟。

    5. 否。SYNC独立于SPI接口。

    6. 正确

    7. 是的,在某些情况下,随机或任意SPI命令可能被解释为ADS1282的实际命令,并且它们可能导致/DRDY输出停止。

    8. 从第一个SCLK开始,每组8位将成为设备的新命令。

    9. 我认为设备在第8次SCLK之后解码命令(否则它如何区分RDATAC 0x10和SDATAC 0x11)。 如果您未完成该命令,并且SCLK保持在低位,则它将等待到超时发生(64 /DRDY周期)。 如果SCLK保持在高位,则很可能会无限期等待。

    10. 完成的命令将执行,然后不完整的命令将以问题9中所述的方式等待。

    11. 可能有许多方法可以阻止/DRDY脉冲,包括断电,fCLK丢失,将/reset或/PWDN GPIO针脚保持在低位或发送待机命令。

    12. 听起来您有某种通信错误。 数据可能不对齐,导致对设备的命令被误解。 我建议重置SPI接口,然后尝试与设备重新通信,以解决此问题。

    13/14/15/16。 我认为所有这些问题都可以通过SPI数据与SCLK的不对齐来解释。

    我强烈建议您在与ADS1282进行有效通信时尝试将SCLK信号发送到ADS1282。 下一个最佳解决方案可能是在使用ADS1282之前切换/reset引脚,以确保清晰的寄存器配置和新SPI数据的启动。

    此致,
    Chris

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

    尊敬的Cris:

    非常感谢您回答所有问题。

    我现在还有几个问题。

    1. 我决定不使用ADS1282 ADC的同步输入,因为在SPI模式通信中无法停止连接到同步输入的DSP的帧同步输出(FSX0)。  所以我测试了同步输入保持打开的ADS1282。  

    如果我不使用同步输入,我可以保持同步输入打开吗?

    2.是否可以单独执行偏移校准,即使ADS1282的输入是变化的?

    提前感谢。

    此致,

    Pradeep。

    。  

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

    您好,Pradeep,

    没问题!

    1. 我建议将同步引脚绑定到高,以确保ADC正在转换,并且您可以发出“SYNC”SPI命令和校准命令(要求同步引脚高)。 如果同步处于浮动状态,则当您不希望同步时,可能会导致设备同步问题。

    2. 您不能使用"OFSCAL" SPI命令,因为它假定输入为0V直流信号。 但是,如果您的输入信号是围绕0V的干净正弦波,我想您可以编写自己的校准例程,测量输入信号的平均值,并手动对OFC[2:0]寄存器进行编程,使平均值等于0。 但我主要担心的是,这将是一个更加复杂的偏移校准例程,需要非常清晰的输入信号,因此比简单地应用0V直流信号和运行"OFSCAL"命令更容易出错。

    请告诉我我是否可以帮助解决其他问题。

    此致,
    Chris