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.

[参考译文] LDC1000:数据就绪位和 SPI 数据有问题

Guru**** 2616675 points

Other Parts Discussed in Thread: LDC1000EVM, LDC1101

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/583020/ldc1000-problem-with-data-ready-bit-and-spi-data

器件型号:LDC1000

您好!

我正在尝试使用 LDC1000实现电感式传感器、它连接到 STM32 MCU、从 MCU 的 MCO 输出(3.3V)获取8MHz 时钟、并连接到其 SPI。 我在 LC 中使用3.8MHz 频率。

我使用的是 LDC1000EVM 的中间部分(具有 LDC1000本身)、该部分通过一侧连接到我自己的线圈、并通过短(~5cm)导线连接到 Olimex STM32-H405板-另一侧。

启动顺序:

0x00 -> 0x0B //断电

0x00、0x3F、220、(CONFIG_AMP_4_VOLT | CONFIG_RESP_TIME_6144)、0x01、 0xFF、0xFF、0x00、0x00、0x00、 0x01 -> 0x01..0x0B 在一个序列中//配置和加电

0x04 -> 0x0A //将 INTB 设置 为 DRDY

在数据表中查找错误花费了一些困难时间后、我最终可以对其进行编程、读取值、对金属部件作出反应、我可以通过 JScope (J-link 工具、可根据 MCU 的实时值显示图形)和 IDE 的调试窗口来查看所有这些情况。

我尝试增加轮询频率、并在~1.8kHz 时满足限制要求、完全符合数据表中的公式。 在1.9kHz 频率下、我看到从 LDC1000读取的大约每秒都标记为 AD "数据未就绪"、这是绝对预期的行为。

但是、当我降低了轮询频率时、我遇到了一个问题-状态寄存器@ 0x20中有时会出现0x70 (而不是像往常一样出现0x30)。 有时、接近数据也可以读取为0x0000或其最大值。 这种情况每秒大约发生1-5次、我找不到任何与任何内容的相关性。

我尝试使用最慢的 SPI 速度、在更改 CS 和实际交换之间插入延迟、使轮询频率更低、高达100Hz、使用最短导线连接8MHz 时钟、并串联22欧姆电阻器-这一点没有任何改变。 仍然存在错误(但在这些错误之间、我仍然可以看到 LDC1000正在工作、接近数据正在变化)。 МСС Ω 为5伏、VDDIO 为3.3伏。

连接到 MCU 侧或 LDC1000侧的逻辑分析仪显示相同的结果-来自 LDC1000的0x70而不是0x30、因此这不是 MCU SPI 问题。

您能就这个问题给我一些建议吗?

提前感谢您! :(  

P.S. 我尝试将额外的导线焊接到所有 SPI 焊盘上、并尝试用手触摸它们或按不同的顺序放置它们-误差的频率会根据位置而增加、从常见的每秒1-5误差增加到~50-80误差。 但我无法理解这种额外的线缆是 LDC1000 "数据未就绪"位的原因-我尝试将 SPI 速度降低16倍-这一点没有改变任何东西。 在我对该导线进行去焊之后、一切都恢复到"稳定"状态-每 秒1-5次错误。

P.P.S. 我尝试打开 INTB 引脚上的 DRDY 信号、发现了一些奇怪的东西。 您可以在此处看到它: www.youtube.com/watch

下午 发生错误时、我将 TEST 引脚变为高电平(状态字节读取为0x30)、并尝试捕捉此错误。 实验表明、当 DRDY 引脚在读取命令的第一个字节(0x20、从0x20读取)结束时脉冲为高电平(转换完成)时、它返回0x70而不是0x30。 当您可以看到 DRDY 引脚在第一个命令字节结束时在返回状态字节之前变为高电平时、我已附加一个文件。 BTW、在这一刻之前、已经有5个 DRDY 脉冲(没有从器件中读取任何数据)、因此我在这里捕获到了第6个转换结束。

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

    您是否能够提供 INx 接地引脚的屏幕截图? 线圈的特征是什么。

    如果您尝试实现非金属识别的应用、LDC1101或 LDC1x1x 器件可能是更好的器件选择。 如果您可以对您的目标应用进行评论、我可以帮助您引导您找到正确的器件。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    今天晚上、我将尝试制作屏幕截图。

    LDC1101和 EVM 昨天刚到、我会尝试它们、但据我了解、它们仍然无法在具有不同探头频率的两个芯片之间同步。

    我希望这只是芯片设计中的一个错误、在下一代中被删除(即1101)。 我将在两天内尝试、并将结果发布在这里。

    我现在正在使用去同步方法:
    -在完成(在 INTB 上)到内存的转换后从两个 LDC1000获取信息
    -每 X ms 从内存中获取当前值

    这种方法不是很好(我希望每次需要时都能手动启动转换)、但至少可以正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试获取屏幕截图(我仅使用两束示波器)。

    您可以在这里看到所有内容:

    更近一点:

    更接近:

    使用 SPI 时钟而不是线圈:

    每次遇到这种情况时、都会在转换完成之前尝试获取数据时发生、因此读取命令的第8个时钟与 DRDY 匹配。 在本例中、我始终从状态寄存器获取0x70。

    P.S. 刚刚测试了 LDC1101、它没有此类错误、只使用状态寄存器0x2C 报告数据(未捕获到"数据未就绪"情况)。