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.

[参考译文] ADS1258:当不预计时、SPIRST 将 SPI 接口复位

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1213439/ads1258-spirst-resets-spi-interface-when-not-expected

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

您好!

我使用的是 ADS1258。 CLK 频率为12.5MHz、SCLK 频率为1.5625MHz

ADC 以自动扫描模式运行。 TE 寄存器条件配置 如下:

CONFIG0 0x56
CONFIG1 0x40
MUXSCH 0x00
MUXDIF   0x3F
MUXSG0  0x00
MUXSG1  0xF0
SYSRED  0x00
GPIOC      0x00
GPIOD      0x00

顺序如下:

1.写入 ADC 配置

2.发送脉冲转换命令0x80

3.等待转换

4、读取通道数据0x30

我看到即使 SCLK 处于活动状态、SPI 接口有时也会进入复位状态、缺少通道数据值的最后一个字节。

SPI 在 µs 开始后~20、84 μ s 进入复位状态、即256个 fclk 周期。

从数据表中、我了解到、在 SCLK 处于运行状态时 SPI 接口不应进入复位状态。

您以前是否观察过此行为?

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

    尊敬的 Konstantinos:

    欢迎来到 E2E 论坛!  我不认为 SPI 正在复位。  这里显示的结果是我预期的、如果该器件实际上是 ADS1158 (ADS1258的16位版本)。  您是否已验证器件 ID 位是否符合预期? 读回寄存器地址0x09并校验位4。  如果该位设置为1、则输出格式为16位。

    此致、

    Bob B

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

    尊敬的 Bob:

    我可以确认该器件是 ADS1258。

    从寄存器地址0x09读回得出的值为0x8B。

    在器件上、我可以读取以下内容:

    AD1258MEP    

    39T.   

    AJTC

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

    尊敬的 Konstantinos:

    因此、我假设有时数据会如您所预期的那样输出。  您能否向我发送正在进行比较的逻辑分析仪照片?  您是否见过它何时运行以及何时不运行的模式?  例如、它始终在特定输入通道上发生。

    此致、

    Bob B

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

    尊敬的 Bob:

    以下是其工作时间和工作时间的屏幕截图:

    工作:

    无法正常工作:

    所有通道在任何时候都工作或不工作。 这种行为会定期出现。

    我认为这与在 SCLK 检测方面芯片内部的时钟域交叉有关。

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

    尊敬的 Konstantinos:

    SPI 超时工作、因此如果 SCLK 在一段时间内处于空闲状态、则 SPI 内部信息将复位。  复位类似于将 CS 置于高电平。  您可以使用超时的默认设置(4096个 fclk 周期)而不是256个 fclk 周期来测试超时理论。  是否有任何其他器件连接到同一 SPI 总线?

    此致、

    Bob B

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

    尊敬的 Bob:

    将 SPIRST 位设置为0后、我不会观察到这种行为。

    SPI 总线上只有一个 ADC。

    在我上传的第一个屏幕截图中、您可以看到 ADC1_SDO 行上最后一个"1"、即来自 ADC 的宽度是预期宽度的一半、这使我认为 SPI 接口此时会进入复位状态。

    此致、

    Konstantinos

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

    尊敬的 Konstantinos:

    我应该更仔细地看一下。  您提供的第一个屏幕截图让我想起了计时标记的位置。  我观察的是过渡边沿、而不是 实际的时间长度。   在行为发生变化时、从 CS 变为低电平到变化的时序约为20.4us、这与设置为256 * fclk 周期的 SPI 超时的预期值相同。  这实际上与 SPI 超时相关、并且我们确信确实发生了这种情况。  可以通过延长通信成功的超时周期(SPIRST = 0)来验证这一点。

    我不清楚为什么会发生这种情况。  出于某种原因、超时周期在 CS 转换为低电平时正确开始、但 SCLK 在此期间不空闲、因此出于某种原因、内部计时器不会通过 SCLK 的时钟边沿复位。  我以前没有看到过这个问题、也没有任何其他人有过这个问题的记录。  我冒风险地认为、大多数应用使用的 SCLK 比您使用的要快、并且适合256 * fclk 窗口。

    此时、您可以通过将 SPIRST 保持为0来增加超时周期、也可以使用更快的 SCLK 来确保数据捕获始终在超时周期内。

    此致、

    Bob B

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

    尊敬的 Bob:

    我继续测量、我认为当 ADC1_CLK 和 ADC1_SCLK 之间的相位如下时、SPI 接口会进入复位状态:

    从数据表中、我假设 CLK 和 SCLK 可以异步

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

    尊敬的 Konstantinos:

    我不清楚你要表达的观点。  主时钟和 SPI 时钟可以异步运行。  然而、时钟同步时、在降低噪声方面有一些优势。  

    我们所知道的只是、有时即使存在 SCLK (不是空闲高电平或低电平)、内部 SPI 复位计时器也不会复位。  最大 SCLK 频率为1/(2*tclk)。  因此、如果 SPI 超时可 在2个主时钟周期内重置、它肯定能够在8个周期内重置。  不管相位 是否偶然、相对于 SCLK 每次相位改变、超时计时器都应复位。

    遗憾的是、我无法访问此器件的 RTL 代码、因此不清楚逻辑是如何工作的、也不清楚为什么每次 SCLK 转换时超时计数器不会复位。  如前所述、您应该使用大于正常转换数据读取周期的默认超时、或者使用更快的 SCLK、以便在超时期间内读取所有数据。  我知道、这并没有具体回答为什么会发生这种情况的问题、但这是我在器件历史记录中第一次知道有人已经将此问题告知我们。  很可能、为什么以前没有看到它、原因是 SCLK 比您使用的要快得多、或者使用了默认的超时周期。

    此致、

    Bob B