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.

[参考译文] TMS320F28075:创建与输入脉冲同步的 PWM、测量输入脉冲的占空比/周期

Guru**** 2796425 points

Other Parts Discussed in Thread: TMS320F28075, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1137161/tms320f28075-create-pwm-synchronized-with-input-pulse-measure-duty-period-of-input-pulse

器件型号:TMS320F28075
主题中讨论的其他器件: C2000WARE

你(们)好

 

请询问以下问题。

请帮帮我。

____________________________________________________________

用途:检测不同的方波信号以形成相同的 PWM、并确定感测到的信号的占空比和周期。

使用的器件:TMS320F28075

问题: eCAP1未检测方波、它检测28075输出 PWM。 我想检测输入方波信号。

________________________________________________________________

 

硬件:

- GPIO24 [连接到另一个方波。 我在示波器中检查了占空比50%脉冲信号。]

- GPIO25 [以与 GPIO24相同的方式连接。]

 

F/w 设置

// GPIO 设置

InputXbarRegs.INPUT5SELECT = 24;        //将 EXTSYNCIN1源设置为 GPIO24

InputXbarRegs.INPUT7SELECT = 25;        //将 eCAP1源设置为 GPIO25  

//设置捕捉

EALLOW;

 

   SyncSockRegs.SYNCSELECT.bit.ECAP1SYNCIN = 5;//EXTSYNCIN1选择

 

   EDIS;

 

 

 

  

  //

  //配置外设寄存器

  //

//  ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUCT;  //单次触发

  ECap1Regs.ECCTL2.bit.CONT_ONESHT = EC_OneShot;  // 1h (R/W)=在单次触发模式下运行

  ECap1Regs.ECCTL2.bit.STOP_Wrap = EC_EVENT4;    //在4个事件时停止

 

  ECap1Regs.ECCTL1.bit.CAP1POL = EC_FALLING;             //下降边沿= 1.

  ECap1Regs.ECCTL1.bit.CAP2POL = EC_RISING;          //上升边沿= 0

  ECap1Regs.ECCTL1.bit.CAP3POL = EC_FALLING;             //下降边沿= 1.

  ECap1Regs.ECCTL1.bit.CAP4POL = EC_RISING;          //上升边沿= 0

 

  ECap1Regs.ECCTL1.bit.CTRST1 = EC_Delta_MODE;      // 1:事件1时间戳已被捕捉后的复位计数器(用于差分模式运行)

//EC_ABS_MODE;      // 0:不在捕捉事件1 (绝对时间戳)上复位计数器

  ECap1Regs.ECCTL1.bit.CTRST2 = EC_Delta_MODE;      // 1:事件1时间戳已被捕捉后的复位计数器(用于差分模式运行)

  //EC_ABS_MODE;      // 0:不在捕捉事件1 (绝对时间戳)上复位计数器

  ECap1Regs.ECCTL1.bit.CTRST3 = EC_Delta_MODE;      // 1:事件1时间戳已被捕捉后的复位计数器(用于差分模式运行)

  //EC_ABS_MODE;      // 0:不在捕捉事件1 (绝对时间戳)上复位计数器

  ECap1Regs.ECCTL1.bit.CTRST4 = EC_Delta_MODE;      // 1:事件1时间戳已被捕捉后的复位计数器(用于差分模式运行)

  //EC_ABS_MODE;      // 0:不在捕捉事件1 (绝对时间戳)上复位计数器

 

  ECap1Regs.ECCTL2.bit.SYNCI_EN = EC_ENABLE;    //启用同步输入

  ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_CTR_PRD;// EC_SYNCIN;

  //EC_SYNCO_DIS;    //直通//不同步

//  ECap1Regs.ECCTL2.bit.SYNCO_SEL = EC_CTR_PRD;    //选择同步输入事件作为同步输出信号

  ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;      //启用捕捉单元

 

  ECap1Regs.ECCTL2.bit.CAP_APWM = EC_DISABLE;

 

  ECap1Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;    //开始计数器

  ECap1Regs.ECCTL2.bit.rearm = EC_ARM;         // ARM 单次触发

  ECap1Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;       //启用 CAP1-CAP4寄存器加载

  ECap1Regs.ECEINT.BIT.CEVT4 = EC_ENABLE;         // 4个事件=__INTERRUPT

 

 

  ECap1Regs.ECCLR.bit.INT = 1;。

 

 

 

   PieVectTable.ECAP1_INT =&eCAP1_ISR;//用于 ECAP1中断的函数

   PieCtrlRegs.PIEIER4.bit.INTx1 = INT_ENABLE;//CAP1

IER |= M_INT4;//启用连接到 ECAP1-6的 CPU INT4 INT:

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

    感谢您的回答

    IER |= M_INT4;

    我已经放了。

    捕捉并不测量输入方波、而是测量 ePWM1输出的占空比。 具体而言、如果 ePWM1没有 PWM 输出、则不会发生 CAP1中断。

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

    Jake、

    C2000Ware SDK 中有一个示例。 请查看示例如何配置它:

    C:/ti/c2000/C2000Ware_4_01_00_00/device_support/f2807x/examples/cpu1/ecap_capture_pwm/cpu01/ECap_Capture_Pwm_cpu01.c

    谢谢、此致、

    桑托什