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.

[参考译文] LAUNCHXL-F28377S:在模式2 (曼彻斯特编码)下使用 SigmaDelta 滤波器模块(SDFM)并使用 AMC1306E25的数据不稳定

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/595120/launchxl-f28377s-data-using-sigmadelta-filter-module-sdfm-in-mode-2-manchester-encoding-with-amc1306e25-is-not-stable

器件型号:LAUNCHXL-F28377S

您好!

***此问题与 F28377S Delfino (使用 Launchpad)和 AMC1306E25有关。 如果这是错误的发布地点,请随意将其移至其所属的地方***

我尝试使用 AMC1306E25隔离式 Σ-Δ 调制器和 F28377S Delfino 中的集成 Σ-Δ 滤波器测量模拟电压。

为了测试测量、我有一个非常简单的电路:

因此、AMC 应测量0V、Delfino 应得到一个有符号整数(大约)  0。

当关闭5V 电源时、由于 AMC1306的故障保存功能、Delfino 的值应为0xFFFF (在16位模式下使用时)。

但是、即使在使用 来自 TI 器件支持的示例 sdfm_filters _sync_cpu.c 文件时、这也无法正常工作。 它读取滤波器数据并将其存储在大型(1024) uint16数组中。

从示例文件中、我只将滤波器2的模式更改为2、并禁用滤波器1、3和4上的时钟故障中断、因为没有任何连接。 因此、我很确定该软件应该可以正常工作。

我得到以下结果(不考虑前几个值、因为它们在设计上是错误的):

-关闭 AMC 上的5V 电源(->故障保存)时,我将获得100%的正确值

-当打开5V 电源时,结果如下所示:

结果编号
1 0
2. 1
3. 1
4. 1
5. 2.
6. 2.
7. 2.
8. 2.
9. 3.
10. 2.
11. 964
12. 12380
13. 29832
14. 32768
15. 32568
16. 25486.
17. 4156
18 2.
19. 1

由于这些巨大的跳跃、数据完全无法使用、我不知道原因。

我非常确定 AMC 和 Delfino 之间的连接正确、因为在 failsave 时的结果是正确的。

但是、即使输入应该只有0V 的差值、实际测量结果怎么会如此错误? 您能给我指一下我能找到帮助的地方吗?

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

    您的连接看起来正确。

    您能否探测 SD1-D2引脚并确保没有噪声耦合到此引脚? 我想知道您的数据位是否已损坏? DOUT 几乎看起来在一小段时间内变为高电平。 当(AINP - AINN)>=320mv 时、可能会发生这种情况

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

    Manoj、

    感谢你的答复。 在这里、您可以看到 D2引脚的图像:

    在进一步调查中、我注意到以下情况:使用外部振荡器和内部 PWM 作为速度不同的时钟源:

    CLK src

    CLK 速度(MHz)

    电源 src

    结果

    注释

    PWM

    12.9.

    3、3V 电路板

    工作

    示例代码

    PWM

    20.

    3、3V 电路板

    工作

    示例代码

    振荡器

    13.

    5V 外部

    工作

    示例代码

    振荡器

    15.

    3、3V 电路板

    工作

    示例代码

    振荡器

    15.

    3、3V 电路板

    工作

    自定义代码

    OSC OLD

    20.

    3、3V 电路板

    不管用

    故障保存工作正常

    CLK 不是与 PWM 同步运行 (抖动可见)

    振荡器

    10.

    5V 电路板

    工作

    CLK 不是与 PWM 同步运行 (抖动可见)

    PWM

    10.

    3、3V 电路板

    工作

    示例代码

    新 AMC

    PWM

    20.

    3、3V 电路板

    工作

    示例代码

    新 AMC

    在高频时、它是否可能无法可靠地工作?

    有时、由于我有时会获得正电压的负值、因此信号似乎也被 Delfino SDFM 反相。 这是否相关? 我没有考虑这一点、因为它很容易修复(乘以-1)。

     

    此致、

    Sandesh

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

    我不认为 AMC1306x 在20MHz 时不可靠、因为其规范工作频率为21MHz。

    您的第二个观察结果不应发生。 施加的电压范围是多少。 我相信对于 AMC1306E25、它介于+/- 250mV 之间。 是这样吗?

    如果您的差分电压>= 320mv、则可以获得正电压的负值。 请查看勘误表中的通报

    SDFM:当 Sinc3和 OSR = 256时、数据滤波器输出不会饱和至最大值

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

    Manoj、

    感谢您的回答。

    [引用用户="Manoj Santha Mohan"]Sandesh、
     
    您的第二个观察结果不应发生。 施加的电压范围是多少。 我相信 对于 AMC1306E25、它介于+/- 250mV 之间。 是这样吗?

    如果您的差分电压>= 320mv、则可以获得正电压的负值。 请查看勘误表中的通报

    [/报价]

    我有以下结果:

    在施加0V 时、I 得到大约为0的正负值(我认为由于噪声、这是正确的)

    施加+-5V (削波电压)时、我获得反相读数(+5V ->负、-5V 正)

    在不施加任何电压(故障保存)的情况下、我获得负读数。 这可能是由于

    Manoj Santha Mohan said:
    SDFM:数据滤波器输出在 Sinc3和 OSR = 256时不会饱和

    但 当我使用 OSR = 64时也会发生。

    现在、当施加+96.8mV (在指定的+-250mV 范围内、通过电位计进行调节)时、我得到大约-79 333的读数、该读数转换为-96.84mV。

    该值是正确的、但为负。 这在10MHz 下已经得到确认、但请记住、对于我的大多数测试、这是相同的(这就是我认为这不是问题的原因)。

    这怎么会发生?

    此致、

    Sandesh

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

    [引用用户="Manoj Santha Mohan"]
     
    我不认为 AMC1306x 在20MHz 时不可靠、因为其规范工作频率为21MHz。  

    [/报价]

    今天、我对时钟缓冲器 CDCLVC1103PWR 进行了一些进一步的测试。

    我对以下结果进行了一些测试:

    时钟 负?
    外部振荡器 @ 20MHz 压降 正电压的负值(0V 除外)
    PWM @ 12MHz 好的 正电压的负值(0V 除外)
    PWM @ 16MHz 好的 正电压的负值(0V 除外)

    我很快会尝试添加20MHz PWM 测试。

    此致、

    Sandesh

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

    我感觉您是否连接了错误的电压。 简而言之、当应用负值时、您将获得正数字值、反之亦然。 尝试交换 AINP/AINN 的接线、您的问题应该会消失。

    当(AINP - AINN)=-96.8mv 时、无论 OSR/滤波器类型配置如何、您都应获得负数字值。
    当(AINP - AINN)=+96.8mv 时、无论 OSR/滤波器类型配置如何、您都应该获得正数字值。

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

    Manoj、

    感谢您的耐心等待。

    [引用用户="Manoj Santha Mohan"]
     
    当(AINP - AINN)=-96.8mv 时、无论 OSR/滤波器类型配置如何、您都应获得负数字值。
    当(AINP - AINN)=+96.8mv 时、无论 OSR/滤波器类型配置如何、您都应该获得正数字值。

    [/报价]

    我不知道原因、但我很确定我的电路中不是这种情况。

    在一个 AMC 上、我已将 AINP、AINN 和 GND 连接到 GND。 结果是一个类似于0V 的低正数。

    在另一个 AMC 上、我使用一个电位计和一个分压器进行测试、因此我可以在指定范围内调整 AINP 引脚的电压。

    AINN 连接到 GND。 据我所知、在该电路中无法生成负电压。

    我还 通过使用万用表测量电压来确认极性。

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

    您是否使用16位(或) 32位模式? 我建议您使用32位模式进行调试。 我担心您是否错误地将位右移。


    此外、您现在是否可以尝试 mode0而不是 mode2?


    -Manoj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用的是32位和16位模式、没有什么不同。

    我现在不能尝试 mode0、因为我目前只有曼彻斯特编码 AMC 版本可用。

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

    很抱歉、我外出度假。 您是否能够解决该问题?

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

    Manoj、

    不、问题仍然没有解决。 目前、我们正在尝试使用 PWM 作为时钟源、因为它工作正常。

    但是、使用振荡器会更好、因为我们可以将其放置在靠近 AMC 的位置、并避免将 PWM 路由到 PCB。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请尝试以下实验吗? 两个实验都应使用振荡器为 SD 调制器计时。

    实验1.
    1) 1)设置 DOSR = 255 (非 DOSR = 256)
    2) 2)施加大于+320mv 的差分电压、以及观察到的输出是什么。 如果可能、向我发送 SD_CX/SD-Dx 的快照。

    实验2.
    1) 1)设置 DOSR = 255 (非 DOSR = 256)
    2) 2)施加大于-320mv 的差分电压、以及观察到的输出是什么。 如果可能、向我发送 SD_CX/SD-Dx 的快照。

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

    Manoj、您好!

    编辑: 我在此帖子中混淆了一些值。 下一个帖子中显示了正确的结果。 但是、示波器数据是正确的、可以将其视为参考。

    我刚刚完成了实验。 以下是使用20MHz 振荡器(Epson SG-310系列)的结果:

    [引用用户="Manoj Santha Mohan"]。

    实验1.
    1) 1)设置 DOSR = 255 (非 DOSR = 256)
    2) 2)施加大于+320mv 的差分电压、以及观察到的输出是什么。 如果可能、向我发送 SD_CX/SD-Dx 的快照。  

    [/报价]

    这是 SD1_D2输出。 我使用示例代码 OSR=255和16位以及移位9位获得的结果是的值

    32386,是常数

    (我在 Vinp 和 Vinn 上施加+3.3V 电压)

    [引用 user="Manoj Santha Mohan")是否可以尝试以下实验? 两个实验都应使用振荡器为 SD 调制器计时。

    实验1.
    1) 1)设置 DOSR = 255 (非 DOSR = 256)
    2) 2)施加大于+320mv 的差分电压、以及观察到的输出是什么。 如果可能、向我发送 SD_CX/SD-Dx 的快照。  

    [/报价]

    这是 SD1_D1输出:

    我得到的结果是 - 32386。

    这会导致值始终为负值。

    这种情况如何?

    作为参考、我还包括一个原始时钟的图像、该图像被馈送到 AMC 中。

    另一个问题:您认为使用非制造商编码版本(AMC1306Mxx)是否更安全?

    噪声等方面是否更可靠?

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

    我有以下结果:

    输入电压>(大于) 320mV:

    负值约为-31880

    每30次测量时、数值会下降到更低的值。

    输入电压<(小于)-320mV:

    正值 约为31879

    这些值也  会每30次测量下降一次(有时甚至变为负值)。

    为什么极性反转? 我很确定我的一切都连接正确。

    这种下降怎么会发生? 这实际上会使这些值无法使用。 极性可在软件中轻松切换。

    您是否建议使用非曼彻斯特编码版本来避免这种问题?

    非常感谢您的帮助!

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

    Sandeep、

    当(AINP - AINN)>+320mv 时

    当 Sinc3、DOSR = 255时、您应该在(32位模式)中获得16581375

    当(AINP - AINN)<-320mv 时

           当 Sinc3、DOSR = 255时、您应该在(32位模式)中获得-16581375

    它看起来不像您具有正确的输出。 我不明白为什么您对 AINP 和 AINN 都应用3.3V 电压。 正确的方法是在(AINP - AINN)>+320mv 时向 AINP 施加3.3V 电压并将 GND 施加到 AINN。


    此外、您附加的快照也不是很有用、因为我需要在一个快照中同时使用 SD-CX 和 SD-Dx 波形。

    这就是我期望看到的

             当(AINP - AINN)>+320mv 时、SD-Dx 应该是 SD-CX 的倒数

     当(AINP - AINN)<-320mv 时、SD-Dx 应与 SD-CX 相同

    此致、

    曼诺伊

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

    [引用用户="Manoj Santha Mohan"]

    Sandeep、

    当(AINP - AINN)>+320mv 时

    当 Sinc3、DOSR = 255时、您应该在(32位模式)中获得16581375

    当(AINP - AINN)<-320mv 时

           当 Sinc3、DOSR = 255时、您应该在(32位模式)中获得-16581375

    它看起来不像您具有正确的输出。 我不明白为什么您对 AINP 和 AINN 都应用3.3V 电压。 正确的方法是在(AINP - AINN)>+320mv 时向 AINP 施加3.3V 电压并将 GND 施加到 AINN。

    [/报价]

    我使用了16位模式、我可以尝试在星期一的32位模式下验证它。

    我不对 AINP 和 AINN 施加3.3V 电压。 我的解释有点令人困惑。 这应表明:

    对于(AINP - AINN)> 320mV 的测量、我将 Vdd (即5V)连接到 AINP、GND 连接到 AINN。 这会导致 AINP-AINN = 5V > 320mV

    对于其他测量(AINP - AINN)<-320mV I 已将 Vdd (5V)连接到 AINN、GND 连接到 AINP。 这会导致 AINP-AINN = 0V - 5V =-5V <-320mV

    [引用用户="Manoj Santha Mohan"]


    此外、您附加的快照也不是很有用、因为我需要在一个快照中同时使用 SD-CX 和 SD-Dx 波形。

    这就是我期望看到的

             当(AINP - AINN)>+320mv 时、SD-Dx 应该是 SD-CX 的倒数

     当(AINP - AINN)<-320mv 时、SD-Dx 应与 SD-CX 相同

    [/报价]

    好的。 今天、我一次只能测量信号、我将在星期一尝试做得更好。

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

    我担心您将 VDD (5V)连接到 AINP/AINN。 它非常接近可以应用于 AINP/AINN 的最大限制。

    您可以将 AINP/AINN 上的最大电压限制为1V 吗?

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

    很抱歉我迟到了回复。

    [引用用户="Manoj Santha Mohan"]
     
    我担心您将 VDD (5V)连接到 AINP/AINN。 它非常接近可以应用于 AINP/AINN 的最大限制。

    您可以将 AINP/AINN 上的最大电压限制为1V 吗?
     [/报价]

    但是、根据数据表、它应该仍然是可能的。

    但是、今天我在 AINP 和 AINN 之间以1V 的电压进行了一些测量。

    以下是结果(CLK 为红色、数据为黄色)

    AINP > AINN:

    对于 AINN > AINP:

    是这样吗?

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

    这是 Delfino 示例项目读取的 AINP-AINN <-320mV 时的结果:(具有20MHz 振荡器)

    在 AINP-AINN > 320mV 的情况下:

    施加的电压为1.0V (正或负)

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

    使用12MHz PWM 时、示波器输出是相同的(根据数据表、我还确认每128个时钟有一个反相值)。

    但是、结果如下:

    AINP-AINN > 320mV (!)

    结果为负、不在最大范围(OSR_64和32位模式)

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

    Sandesh、

    您的示波器快照看起来不错。 但是、SDFM 滤波器输出不正确。

    对于 DOSR = 255 (对于 DOSR = 255、应写入 DOSR = 254)、您应该会看到这一点。 请检查 SDDFPARMx 寄存器字段说明)。 此外、请配置为32位模式。 我更喜欢在32位模式下读取 SDDATAx、而不是您连接的阵列。

    当(AINP - AINN)>+320mv 时

    当 Sinc3、DOSR = 255时、您应该在(32位模式)中获得16581375

    当(AINP - AINN)<-320mv 时

           当 Sinc3、DOSR = 255时、您应该在(32位模式)中获得-16581375

    此致、

    曼诺伊

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

    Manoj、

    我刚才尝试验证了这一点。

    [引用用户="Manoj Santha Mohan"]

    对于 DOSR = 255 (对于 DOSR = 255、应写入 DOSR = 254)、您应该会看到这一点。 请检查 SDDFPARMx 寄存器字段说明)。 此外、请配置为32位模式。 我更喜欢在32位模式下读取 SDDATAx、而不是您连接的阵列。

    当(AINP - AINN)>+320mv 时

    当 Sinc3、DOSR = 255时、您应该在(32位模式)中获得16581375

    当(AINP - AINN)<-320mv 时

           当 Sinc3、DOSR = 255时、您应该在(32位模式)中获得-16581375

    [/报价]

    当(AINP - AINN)>+320mv 时

    当 Sinc3、DOSR = 255时、我得到-16322291 (32位)

    当(AINP - AINN)<-320mv 时

           当 Sinc3、DOSR = 255时、我在(32位模式)中得到16322291

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

    Sandeep、

    您是否正在使用 SDFM controlSUITE 示例? (或)这是您自己的代码吗? 我建议您尝试运行 SDFM_CPU 控制示例代码。

    如果您已经在使用 SDFM 示例代码、那么我将研究任何硬件问题。

    此致、

    曼诺伊

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

    您好、Manoj、

    很抱歉、我在 Sandesh 的回复中提到了这个主题、我们可以解决所有 Σ-Δ 调制器的问题、找出测量数据的错误迹象。 为了确保我们的设计中不存在硬件问题、我们购买了 AMC1306EVM 评估模块。

    首先、我们测试了评估板随附的 AMC1306M25的完整输入电压范围、并获得了具有正确符号的合理值。 然后、我们将 AMC1306M25替换为曼彻斯特编码的 AMC1306E25版本、并执行了相同的测试、结果出现翻转的符号。

    AMC1306M25的配置:SDFM1、Filter1、MODE_0、Sinc3、OSR256、 DATA_16位、Shift_9位

    AMC1306E25的配置:SDFM1、Filter1、MODE_2、Sinc3、OSR256、 DATA_16位、Shift_9位

    配置中是否遗漏了任何内容、或者您能否确认曼彻斯特编码调制器/滤波器模式会导致负号?

    谢谢

    Jens

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

    很抱歉耽误你的回答。 我认为我找到了您问题的根本原因。

    AMC1306E25曼彻斯特编码位流似乎为"1"提供了低到高的切换脉冲、为"0"提供了高到低的切换脉冲、而 F28377S 似乎为"1"提供了高到低的切换脉冲、为"0"提供了低到高的切换。 这就是您看到翻转符号问题的原因。 您可以在相应 DS 的相应时序图中找到此信息。

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

    我认为这条线程捕获了重要的输入、这对于面临类似问题的其他工程师非常有用。

    您能否为帮助您回答问题的帖子标记"验证主题帖"。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经要求我的前同事关闭它、因为他启动了该主题、我无法按下"验证"按钮...

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

    Jens、

    谢谢。 此主题帖的帖子大于25帖子。 请确保验证有助于我们达到此目的的帖子。

    此致、

    曼诺伊