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.

[参考译文] TMS320F28375S:AMC1306E25的 SDFM 给出了偶发的错误结果

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/716608/tms320f28375s-sdfm-for-amc1306e25-gives-sporadic-erroneous-resultants

器件型号:TMS320F28375S
主题中讨论的其他器件:AMC1303E2520AMC1306E25AMC1303M2520

您好!  

我有一个三相 PFC 应用。 我测量三相电流、三相电压、直流电压和直流电流。 三相电压为"平滑"50Hz、三相电流具有高频纹波、直流电压/电流也平滑且变化缓慢。

对于测量硬件、我有5个 AMC1303E2520:曼彻斯特编码内部时钟(用于相电压和直流)和3个 AMC1306E25:曼彻斯特编码外部时钟共同由20MHz 振荡器计时(用于相电流)。 这样、具有高变化率的电流被一起采样并完全同步。

 我在 预览项目上使用了 SDFM + AMC1303E2520、但现在 我在获取正确数据时遇到了问题。 我有一个中断集(例如在示例中)、我只需读取数据并保存它。 我不测量任何值(但连接了电阻器-分流器和电压梯)、因此我希望持续测量0+/-Some 噪声。  

对于电压、我会得到类似的结果。 但是、对于电流、我会一直得到尖峰。 它们都位于 SDFM1模块上、配置相同。 如受攻击的图片中所示。 图中显示的是 IL1和 UL1。 其他相电流和电压的情况也是如此。  

有什么想法为什么?  

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

    MarkoAnte、

    您能否澄清我的理解是否正确?

    1) 1) 3相电压测量使用 AMC1303E2520调制器:

      50Hz 信号

    -  SDFM 结果没有问题

    2) 2)直流电压测量使用 AMC1303E2520调制器:

    -  SDFM 结果没有问题

    3) 3)直流电流测量使用 AMC1303E2520调制器:

    -  SDFM 结果没有问题

    4) 4) 三相电流测量使用 AMC1306E25 调制器:

    -   伪波错误滤波器结果

    -   三相电流上具有高频纹波

     我还想让您详细说明三相电流上的高频纹波噪声? 您是否认为看到曼彻斯特输入位流上耦合的高频噪声?

    此致、

    曼诺伊

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我是 MarkoAnte。 (从家庭帐户-忘记邮件)

    现在没有任何东西连接到板。 无电压、无电流。 我只想设置基本程序。 基本上、我尝试读取零。

    1)是的、对于 AMC1203e2520、电压测量似乎没有问题。
    2和3)我尚未对直流测量进行深入测试-但乍一看、电流测量中没有像这样的大尖峰-但这种测量中会产生更多的噪声。
    4) 4)是 AMC1306E25具有杂散错误滤波器结果。 我希望使它们同步、因为电流上会有额外的开关纹波-这具有极高的变化率。 因此、为了实现更好的测量、我希望使 SD 调制器的采样保持同步。

    此外、我还做了一些测试、当一个中断触发时、数据就绪标志很少会全部出现。 即使我尝试同步 SDFM 模块、标志也几乎总是未全部置位。 有时、它们看起来像是在中断程序(仅读取数据)的中间进行了设置(或重新设置)。

    我查看了信号、它们看起来不错。 我在数据线路上放置了交流端接、因此没有数据单通道发生过冲或下冲。 时钟线也很好很干净。

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

    您好!  

    以了解有关标志的更多说明。 我在中断中有程序 、现在就像这样:  

    (笑声)

    DELAY_US (1);
    
    FlagRegister = Sdfm_readFlagRegister (SDFM1);
    FlagRegisterstart = FlagRegister;
    
    if (check_bit (FlagRegister、12)){ 
    //在此处读取数据 Sdfm_clearFlagRegister (SDFM1、SET_BIT (temp、12)); } if (check_bit (FlagRegister、13))){
    //在此处读取数据 Sdfm_clearFlagRegister (SDFM1、SET_BIT (temp、13)); } if (check_bit (FlagRegister、14))){
    //在此处读取数据 Sdfm_clearFlagRegister (SDFM1、SET_BIT (temp、14)); } if (check_bit (FlagRegister、15))){
    //在此处读取数据 Sdfm_clearFlagRegister (SDFM1、SET_BIT (temp、15)); } Sdfm_clearFlagRegister (SDFM1、0x8000000); FlagRegisterend = Sdfm_readFlagRegister (SDFM1); -->此处为制动点

    当我停在断点时、我通常具有以下内容:  

    FlagRegisterstart = 0x8000F000

    FlagRegisterend = 0x80008000

    现在、我甚至不想读取数据。  

    如果我使用 DELAY_US (1)运行代码、也会发生同样的情况;->我想确保所有滤波器都设置了标志、如果从内部时钟和外部时钟的 clk 存在一些差异。 我还启用了调制器故障中断。  

    此致、  

    Marko

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

    那么、现在我的程序是:  

    _interrupt void Sdfm1_ISR (void)
    {
    LED_2_PIN_TOGGLE ();
    Sdfm_clearFlagRegister (SDFM1、0x8000F000);
    PieCtrlRegs.PIEACX.ALL = PIEACK_group5;
    } 

    我一次只配置了一个中断。 一个用于一个 AMC1306E25、一个用于一个 AMC1303E2520。 我使用示波器测量了切换 LED。  

    对于 AMC1303E2520、我必须设置通过失败屏蔽。 我每50000 - 70000示波器测量一次失败。 8个左右采样的采样率似乎下降、然后恢复正常。 请参阅图片:  

     AMC1306E25更糟糕的是、我必须在屏幕上设置持续时间为100ms 的测量值、因为当我按下 START 按钮时、通/失败屏蔽始终会触发。 如此处所示、存在大量抖动:  

    为便于了解、 AMC1303E2520的外观如下:  

    为什么 AMC1303E2520上的采样率会下降、 为什么 AMC1306E25会如此抖动? 对于振荡器、我将使用50ppm 的振荡器、其相位和周期抖动在 ps 范围内。  

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

    您是否使用 PWM 同步功能来同步电流测量通道? 如果是、您很可能在滤波器结果准备就绪之前读取这些结果。

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

    您好!  

    否、我不使用 PWM 进行同步。

    在我的上一篇文章中、您可以看到我在单个滤波器中断上触发、甚至不读取数据、显然是错误的。  

    此致、  

    Marko  

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

    您是否仅在 mode2中看到此问题? (或)您是否在其他模式(例如模式0 / 1)中看到此问题?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    到目前为止、您正在使用20MHz 振荡器为 AMC1306E25计时。 您是否在20MHz 输入时钟上测量了抖动?

    "I get 1 fail every 50000 - 70000示波器测量值"-您的意思是什么? 我无法理解您谈论的是什么失败。

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

    1) 1)我无法测试模式2的其他模式。 我只有曼彻斯特编码芯片、没有路由到 MCU 的时钟。 我尝试了其他模式、只是为了查看、SDFM (正如预期的那样)不执行任何操作。

    2) 2)我已经尝试过、但抖动太小、以至于我无法使用示波器测量它。 例如、500MHz 不足以测量专为 ps 抖动而频谱的时钟发生器上的抖动。 5ps rms 和15ps p-p

    3) 3)我为切换 LED 设置通过/失败屏蔽。 请参阅带灰色区域的图片。 看看信号在白色区域中的正常情况、然后它不是这样、这将是失败的。 因为之前对于50000示波器样本、信号位于白色区域。

    我也做了一些头向。 现在、我非常确信问题不在 MCU 或布局中。 它必须是 ADC 问题。 我在 ADC 组上打开了另一个论坛帖子。
    链接:
    e2e.ti.com/.../717467
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 请随时向我发布。

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

    因此、我更改 了 AMC1303E2520的所有调制器。 乍一看、由于采样时间没有更重的抖动、因此问题得到了解决。 但在进行更多测试后、我发现问题仍然存在。  

    现在我完全困惑/迷路了。 我设置了一个测试程序、如下所示:  

    //引脚设置
    //SDFM1
    GPIO_SetupPinOptions (48、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinMux (48、GPIO_MUX_CPU1、7);
    GPIO_SetupPinOptions (50、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinMux (50、GPIO_MUX_CPU1、7);
    GPIO_SetupPinOptions (52、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinMux (52、GPIO_MUX_CPU1、7);
    GPIO_SetupPinOptions (54、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinMux (54、GPIO_MUX_CPU1、7);
    //SDFM2
    GPIO_SetupPinOptions (56、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinMux (56、GPIO_MUX_CPU1、7);
    GPIO_SetupPinOptions (58、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinMux (58、GPIO_MUX_CPU1、7);
    GPIO_SetupPinOptions (60、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinMux (60、GPIO_MUX_CPU1、7);
    GPIO_SetupPinOptions (62、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinMux (62、GPIO_MUX_CPU1、7);
    //sdfm 设置
    //nastavi 模式输入 zaSDFM 滤波器
    Sdfm_configureInputCtrl (SDFM1、filter1、mode_2);
    Sdfm_configureInputCtrl (SDFM1、Filter2、mode_2);
    Sdfm_configureInputCtrl (SDFM1、FILTER3、MODE_2);
    Sdfm_configureInputCtrl (SDFM1、FILTER4、MODE_2);
    
    Sdfm_configureInputCtrl (SDFM2、filter1、mode_2);
    Sdfm_configureInputCtrl (SDFM2、Filter2、mode_2);
    Sdfm_configureInputCtrl (SDFM2、FILTER3、MODE_2);
    Sdfm_configureInputCtrl (SDFM2、FILTER4、MODE_2);
    
    //nastavi file za uporabo pri comparatorju
    Sdfm_configureComparator (SDFM1、filter1、SINC2、OSR_32、0、 0x7FFF);
    Sdfm_configureComparator (SDFM1、Filter2、SINC2、OSR_32、0、 0x7FFF);
    Sdfm_configureComparator (SDFM1、FILTER3、SINC2、OSR_32、0、 0x7FFF);
    Sdfm_configureComparator (SDFM1、FILTER4、SINC2、OSR_32、0、 0x7FFF);
    
    Sdfm_configureComparator (SDFM2、filter1、SINC2、OSR_32、0、 0x7FFF);
    Sdfm_configureComparator (SDFM2、Filter2、SINC2、OSR_32、0、 0x7FFF);
    Sdfm_configureComparator (SDFM2、FILTER3、SINC2、OSR_32、0、 0x7FFF);
    Sdfm_configureComparator (SDFM2、FILTER4、SINC2、OSR_32、0、 0x7FFF);
    
    //nastavi file za glavne podatke
    Sdfm_configureData_filter (SDFM1、filter1、filter_enable、SINC2、OSR_64、 DATA_16_BIT、SHIFT_0_Bits);
    Sdfm_configureData_filter (SDFM1、Filter2、filter_enable、SINC2、OSR_64、 DATA_16_BIT、SHIFT_0_Bits);
    Sdfm_configureData_filter (SDFM1、FILTER3、FILTER_ENABLE、SINC2、OSR_64、 DATA_16_BIT、SHIFT_0_Bits);
    Sdfm_configureData_filter (SDFM1、FILTER4、FILTER_ENABLE、SINC2、OSR_64、 DATA_16_BIT、SHIFT_0_Bits);
    
    Sdfm_configureData_filter (SDFM2、filter1、filter_enable、SINC2、OSR_64、 DATA_16_BIT、SHIFT_0_Bits);
    Sdfm_configureData_filter (SDFM2、Filter2、filter_enable、SINC2、OSR_64、 DATA_16_BIT、SHIFT_0_Bits);
    Sdfm_configureData_filter (SDFM2、FILTER3、FILTER_ENABLE、SINC2、OSR_64、 DATA_16_BIT、SHIFT_0_Bits);
    Sdfm_configureData_filter (SDFM2、FILTER4、FILTER_ENABLE、SINC2、OSR_64、 DATA_16_BIT、SHIFT_0_Bits);
    
    
    
    //不可寻址的外部删除
    Sdfm_configureExternalreset (SDFM1、0、0、0);
    Sdfm_configureExternalreset (SDFM2、0、0、0);
    
    //nastavi interrupte samo za 调制失败在 za novo Dato
    Sdfm_configureInterrupt (SDFM1、filter1、IEH_DISABLE、IEL_DISABLE、0、 0);
    Sdfm_configureInterrupt (SDFM1、Filter2、IEH_DISABLE、IEL_DISABLE、0、 0);
    Sdfm_configureInterrupt (SDFM1、FILTER3、IEH_DISABLE、IEL_DISABLE、0、 0);
    Sdfm_configureInterrupt (SDFM1、FILTER4、IEH_DISABLE、IEL_DISABLE、0、 0);
    
    Sdfm_configureInterrupt (SDFM2、filter1、IEH_DISABLE、IEL_DISABLE、MFIE_DISABLE、 0);
    Sdfm_configureInterrupt (SDFM2、Filter2、IEH_DISABLE、IEL_DISABLE、MFIE_DISABLE、 0);
    Sdfm_configureInterrupt (SDFM2、FILTER3、IEH_DISABLE、IEL_DISABLE、MFIE_DISABLE、 0);
    Sdfm_configureInterrupt (SDFM2、FILTER4、IEH_DISABLE、IEL_DISABLE、MFIE_DISABLE、 0);
    
    DELAY_US (100);
    
    //启用 Glavni 过滤器
    Sdfm_enableMFE (SDFM1);
    Sdfm_enableMFE (SDFM2);
    
    //主中断启用 za TA 模块
    Sdfm_enableMIE (SDFM1);
    Sdfm_enableMIE (SDFM2);
    //和 iterrupt
    __interrupt void Sdfm1_ISR (void)
    {
    UINT32标志寄存器;
    
    LED_0_PIN_TOGGLE ();
    
    FlagRegister = Sdfm_readFlagRegister (SDFM1);
    
    if (FlagRegister & 0x00001000){
    u31[i1]= SDFM1_READ_filter1_DATA_16BIT;
    if (U31[i1]> max){
    最大值= U31[i1];
    LED_7_PIN_TOGGLE ();
    }
    否则、如果(U31[i1]< min){
    最小值= U31[i1];
    LED_7_PIN_TOGGLE ();
    }
    if (i1 < 2000){
    I1++;
    }
    Sdfm_clearFlagRegister (SDFM1、0x00001000);
    }
    
    if (FlagRegister & 0x00002000){
    iL3[i2]= SDFM1_READ_Filter2_DATA_16BIT;
    if (IL3[i2]> max){
    MAX = IL3[i2];
    LED_7_PIN_TOGGLE ();
    }
    否则、如果(IL3[i2]< min){
    最小值= IL3[i2];
    LED_7_PIN_TOGGLE ();
    }
    if (i2 < 2000){
    I2++;
    }
    Sdfm_clearFlagRegister (SDFM1、0x00002000);
    }
    
    if (FlagRegister & 0x00004000){
    U23[163]= SDFM1_READ_FILTER3_DATA_16BIT;
    if (U23[i3]> max){
    Max = U23[i3];
    LED_7_PIN_TOGGLE ();
    }
    否则、如果(U23[i3]< min){
    最小值= U23[i3];
    LED_7_PIN_TOGGLE ();
    }
    if (i3 < 2000){
    I3 +;
    }
    Sdfm_clearFlagRegister (SDFM1、0x00004000);
    }
    if (FlagRegister & 0x00008000){
    iL2[i4]= SDFM1_READ_FILTER4_DATA_16BIT;
    if (IL2[i4]> max){
    MAX = IL2[i4];
    LED_7_PIN_TOGGLE ();
    }
    否则、如果(IL2[i4]< min){
    最小值= IL2[i4];
    LED_7_PIN_TOGGLE ();
    }
    if (i4 < 2000){
    I4++;
    }
    Sdfm_clearFlagRegister (SDFM1、0x00008000);
    }
    
    Sdfm_clearFlagRegister (SDFM1、0x8000000);
    
    
    //Sdfm_clearFlagRegister (SDFM1、0x8000F000);
    
    PieCtrlRegs.PIEACK.all = PIEACK_group5;
    }
    
    __interrupt void Sdfm2_ISR (void)
    {
    UINT32标志寄存器;
    
    FlagRegister = Sdfm_readFlagRegister (SDFM2);
    LED_0_PIN_TOGGLE ();
    if (FlagRegister & 0x00001000){
    U12[i11]= SDFM2_READ_filter1_DATA_16BIT;
    if (U12[i11]> max){
    最大值= U12[i11];
    LED_7_PIN_TOGGLE ();
    }
    否则、如果(U12[i11]< min){
    最小值= U12[i11];
    LED_7_PIN_TOGGLE ();
    }
    if (i11 < 2000){
    I11++;
    }
    Sdfm_clearFlagRegister (SDFM2、0x00001000);
    }
    
    if (FlagRegister & 0x00002000){
    IL1[i12]= SDFM2_READ_Filter2_DATA_16BIT;
    if (IL1[i12]> max){
    MAX = IL1[i12];
    LED_7_PIN_TOGGLE ();
    }
    否则、如果(IL1[i12]< min){
    最小值= IL1[i12];
    LED_7_PIN_TOGGLE ();
    }
    if (i12 < 2000){
    I12++;
    }
    Sdfm_clearFlagRegister (SDFM2、0x00002000);
    }
    
    if (FlagRegister & 0x00004000){
    UDC[I13]= SDFM2_READ_FILTER3_DATA_16BIT;
    if (UDC[I13]> max){
    最大值= UDC[I13];
    LED_7_PIN_TOGGLE ();
    }
    否则、如果(UDC[I13]< min){
    最小值= UDC[I13];
    LED_7_PIN_TOGGLE ();
    }
    if (I13 < 2000){
    I13++;
    }
    Sdfm_clearFlagRegister (SDFM2、0x00004000);
    }
    if (FlagRegister & 0x00008000){
    IDC[i14]= SDFM2_READ_FILTER4_DATA_16BIT;
    if (IDC[i14]> max){
    MAX = IDC[i14];
    LED_7_PIN_TOGGLE ();
    }
    否则、如果(IDC[i14]< min){
    最小值= IDC[i14];
    LED_7_PIN_TOGGLE ();
    }
    if (i14 < 2000){
    I14++;
    }
    Sdfm_clearFlagRegister (SDFM2、0x00008000);
    }
    
    Sdfm_clearFlagRegister (SDFM2、0x8000000);
    
    PieCtrlRegs.PIEACX.ALL = PIEACK_group5;
    } 


    基本上、我设置1个 LED 来切换单个滤波器的每个中断、并在有另一个最大/最小值时设置另一个 LED 来切换。

    我得到了以下结果:  

    滤波器 我要测量的值 最小值/最大值 丢弃的样本(较低的采样频率)
    SDFM1_F1 u31. -4096/4096 是的
    SDFM1_F2 iL3 -4/4.
    SDFM1_F3 U23. -224/4.
    SDFM1_F4 iL2 -4096/4096 是的
    SDFM2_F1 U12. -4/4.
    SDFM2_F2 IL1. -4096/4096 是的
    SDFM2_F3 UDC -408/4
    SDFM2_F4 IDC -4096/4096 是的

    然后、当这两个样本的采样率下降时、观察到我得到+/-饱和。 某些通道像 IL3和 U12一样正常、但2上也有一些奇怪的噪声。
    所有这些测量通道现在都是相同的。 相同的芯片和布局、相同的原理图。 它们都是作为层次结构块创建的、因此我将它们复制并粘贴到布局中。

    此外、我发现非常奇怪的是、我还记录了调制器的位流。 当引脚切换为我有一个新的最小最大值时、没有什么奇怪的。 就我得到的而言、Σ-Δ 位流平均值就是该采样的值。 对于4096这样的情况、我确切地看到全部1或接近它。 但我看到的只是一个恒定频率的比特流、就像这样
    101010101010101011001010101010101010
            这里是^(这里有1100个)
    第一个错误数据的来源

    然后、我还在没有时钟的情况下测试了芯片、并比较了数据流。
    我得到的结果如下:
    无内部时钟:00111010011001101100110011010011001100110100110011010011
    带内部时钟:011001010101011001010101010110010101010101100

    两个芯片的平均值基本为0.5。 但一次是0101持续时间最多、另一次是0011持续时间最多。

    我不知道。 也许问题毕竟是 MCU -几乎就像它不像1100一样:)

    我不知道该怎么看。

    此致、  

    Marko

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

    您的代码中的所有 SDFM 中断源都被禁用。 我看不到 SDFM1_ISR 和 SDFM2_ISR 将如何执行。

    此外、我很难在一个帖子中跟进多个问题。 我是否可以说您正在读取为调制器提供的模拟输入的意外滤波器结果? 调制器的差分模拟输入是否浮动? 您显示的位流看起来您的 SD 调制器处于饱和状态。

    我建议禁用所有滤波器通道并一次调试一个滤波器通道。

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

    我使用调试器一次启用一个、因此我100%确定我正在读取正确的滤波器结果。

    我的输入全部连接到电阻器-电路如数据表中所示(图55第29页和图57第31页)。 因此、对于例如、 SDFM1_F4两个模拟引脚均通过0.01欧姆电阻器+标记为 R_flt 的330欧姆电阻器接地(图58、第32页)。 但我也厌倦了焊接桥引脚2、3和4。 完全相同的性能。

    我的位流如何显示饱和? 根据第23页的图46、如果我将曼彻斯特解码为全0或全1、则饱和将是。 但是、我有不同的分频器、它们均取平均值至0.5或作为模拟0V。 对吧?

    我显示的表是通过一次只激活1个滤波器并查看结果而生成的。

    我也在参考数据表:
    www.ti.com/.../amc1303e2520.pdf

    此致、
    Marko

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

    Marko、

    这更多是 SD 调制器问题。 我将由 AMC1303工程师对此进行解答。

    此致、
    曼诺伊

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

    我知道您与 SD 调制器团队有一条关于同一问题的单独线程。 他们是否能够提供一些输入、为什么器件会饱和?

    还有其他更新吗?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此问题是否已解决? 我可以关闭此主题吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    否此问题未解决。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SD 调制器人员是否有任何更新的根本原因? 我觉得这很可能是硬件设置问题(一些布局/原理图问题)

    您能否发布与 SD 调制器相关的主题以便将来参考?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    一段时间没听到过你的反馈。 您是否能够解决此问题?

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

    否此问题仍未解决。

    看起来 MCU 曼彻斯特解码器无法正常工作。

    什么会导致 MCU 无法正确解码曼彻斯特编码? 但它可能是 MCU 时钟问题。 我如何测试它? 我探测晶体、它似乎振荡良好。

    如果我重新制作电路板并使用非曼彻斯特编码芯片、是否有一种不同的机制来对进入 SDFM 模块的数据进行采样?

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

    SD-CX 的示波器快照显示调制器处于饱和状态。 如果您输入饱和 SD-Cx、SDFM 滤波器结果将达到最大值、显示 SD-Cx 达到饱和。 这不是意外行为。 您是否从 SD 调制器团队获得了任何反馈? 您是否问过他们为什么 SD 调制器处于饱和状态?

    SDFM 支持四种不同的模式、模式0和模式2是目前为止最常用的模式。 中提到的 SDFM 支持的不同时钟方案、在 DS / TRM 中都有提及。 请遵循此处提供的指南。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否向我展示数据是如何饱和的? SD 调制器团队说不是。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Marko、

    在 mode2中、当调制器饱和时、调制位流看起来像时钟信号。 这是我在您之前的一篇文章中看到的、其中包含示波器快照。

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、是的、您说的是对的。 但是、如果您看看示波器屏幕截图、则调制流的周期不是50ns、而是100ns。 因为它是101010101解码、而不是000000或111111解码。 可以在数据放大的2个示波器屏幕截图中看到该图。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Marko、

    我没有任何理由相信曼彻斯特模式不起作用。 此模式已完全验证。 如果有任何问题、则可能是您的硬件/软件问题。

    因此、我建议您仔细查看应用于 SD 调制器输入端的差分电压。 我建议您施加三个差分电压(-20mV、0mv 和+20mV)、捕获放大后的示波器快照版本并检查相应的 SDFM 滤波器结果。 对于本实验案例、我还建议您配置 SDFM (使用 Sinc3、DOSR = 256、32位格式滤波器结果表示法)

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    显然,这项工作没有得到充分的验证。 曼彻斯特解码块损坏、偶尔停止工作。

    我尝试更换芯片、MCU、端接数据线、焊接 AGND、V+、 V-引脚一起、更改 sinc 和 DOSR、任何其他 thigs 和我都得到相同的结果。

    然后、我用 AMC1303M2520替换了芯片、并将调制器的 ClkOUT 上的0.1 mm 铜线焊接到 SDFM 的 CLKIN 上、并首先尝试一切正常。 使用现有代码、我只更改了 SDFM 模式并复用了 CLKIN 引脚。

    调制器似乎可以很好地进行曼彻斯特编码。 数据是正确的、时序是正确的。 MCU 解码器块已损坏。