Other Parts Discussed in Thread: LDC1000EVM, LDC1101
器件型号: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个转换结束。




