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.

[参考译文] CCS/UCD3138128A:配置前端模块。

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/701975/ccs-ucd3138128a-configuring-the-front-end-module

器件型号:UCD3138128A

工具/软件:Code Composer Studio

你好。

我使用:  

UCD3138128A;

Saurus SAU510-USB ISO Plus 仿真器;

CCS v.7.4。

我将前端模块配置为 SAR 模式或任何其他模式。  RAW_ERROR_VALUE 等于任何 AFE_GAIN 上可能的最大值、不依赖于 DAC 值或输出电压。

如果我没有在程序中寻址到模块的寄存器、那么在调试模式中、我会看到默认设置。  如果我在这个模式中手动配置模块、它在所有 FE 模式中工作。

但是、如果我在程序代码的帮助下配置模块、FE 模块的所有寄存器都将填充为0x0、之后所有必要的位都将被置位。

模块无法正常工作。 RAW_ERROR_VALUE = 0xf8、不依赖于 DAC 值或输出电压。

#define main (1)
#include "include.h"

uint32 PRD = 0x3FFFF;

空 DPWM0 (空)

    Dpwm0Regs.DPWMCTRL0.bit.PWM_EN = 0;

    Dpwm0Regs.DPWMCTRL0.bit.CLA_EN = 0;

    Dpwm0Regs.DPWMPRD.ALL = PRD;
    Dpwm0Regs.DPWMEV1.ALL = 0;
    Dpwm0Regs.DPWMEV2.ALL = PRD/2;
    Dpwm0Regs.DPWMEV3.ALL = PRD/2;
    Dpwm0Regs.DPWMEV4.ALL = PRD;

    Dpwm0Regs.DPWMSAMPTRIG1.ALL = PRD/2;
    Dpwm0Regs.DPWMCTRL2.bit.sample_trig_1_EN = 1;

    Dpwm0Regs.DPWMCTRL0.bit.PWM_EN = 1;


void eADC (void)

      UNION EADCCTRL_REG EADC_Ctrl;
 //           eADC_Ctrl.all = 0;
            eADC_Ctrl.bit.eADC_MODE = 2;
            eADC_Ctrl.bit.AFE_GAIN = 0;
           eADC_Ctrl.bit.SCFE_GAIN_FILTER_SEL = 1;
           eADC_Ctrl.bit.SCFE_CLK_DIV_2 = 1;
           eADC_Ctrl.bit.SCFE_ENA=1;

          eADC_Ctrl.bit.eADC_ENA=1;

     FeCtrl1Regs.EADCCTRL = eADC_Ctrl;

void LoopMux (void)

     LoopMuxRegs.SAMPTRIGCTRL.bit.Fe1_TRIG_DPWM0_EN = 1;
     LoopMuxRegs.FECTRL1MUX.bit.DPWM0_FRAME_SYNC_EN = 1;

      UNION GLBEN_REG glben_store;
            glben_store.all = 0;
            glben_store.bit.DPWM0_EN = 1;
            glben_store.bit.DPWM1_EN = 1;
            glben_store.bit.FE_CTRL1_EN = 1;
      LoopMuxRegs.GLBEN = glben_store;

void main()

//###################### 警告!!!! 请查看此####################

      杂项 AnalogRegs.IOMUX.ALL = 0;
//##################################################

      eADC();
      DPWM0();
      LoopMux();

      while (1)
      {

      }


void c_int00 (void)

      main();

我尝试在连续 SAR 模式下启动模块、这不需要样本触发器的参与。 但结果与前一种情况相同。

谢谢你。

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

    我从未见过调试器的结果与代码不同的情况。  

    当您说用零填充所有 FE 寄存器时、您的意思是什么?  这当然不是您应该做的事情。  其中有许多默认设置为1的位、需要保持这种方式。  您使用联合体写入的寄存器中甚至可能有一些。  使用寄存器本身的位设置要安全得多、除非有强烈的理由不这么做。