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.

[参考译文] TMS320F28379D:使用 eCAP 模块测量 PWM 信号的频率

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1368155/tms320f28379d-measurement-of-frequency-of-pwm-signal-using-ecap-module

器件型号:TMS320F28379D

工具与软件:

我正在使用 TMS320F28379D 的 eCAP 模块进行频率测量。 为此、我使用 EPWM1A 生成了频率和占空比分别为1kHz 和0.5的 PWM 信号、并将相同的信号馈入 eCAP1。 GPIO 5使用输入交叉开关配置为 eCAP1。 但在调试过程中、它显示错误的频率值、即使我更改了 EPWM1生成的 PWM 信号的频率。 代码在调试模式下抛出相同的频率值。 请帮助解决该问题。

#include "F28x_Project.h"
void GPIO_select (void);
void Setup_ePWM (void);
void setup_ECAP (void);
外部中断失效 eCAP1_ISR (void);
INT I=0;
浮动 PWM_ON_PERIOD;
浮动 PWM_PERIOD;
浮点频率;

空 main (void)
{
InitSysCtrl();
InitECap1Gpio (0x5);
Dint;
GPIO_select ();
Setup_ePWM ();
Setup_ECAP ();

InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();

EALLOW;
PieVectTable。 eCAP1_INT =&eCAP1_ISR;
EDIS;

IER |= M_INT4;
PieCtrlRegs.PIEIER4.bit.INTx1 = 1;
EINT;
ERTM;
while (1)
{



void GPIO_select (void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1;
EDIS;
EALLOW;
InputXbarRegs。 INPUT7SELECT = 0x5;//将 eCAP1源设置为 GPIO 引脚
EDIS;

void Setup_ePWM (void)
{
EPwm1Regs.TBCTL.bit.CLKDIV = 1;
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 1;
EPwm1Regs.TBCTL.bit.CTRMODE = 0;
EPwm1Regs.TBPRD = 25000;
EPwm1Regs.AQCTLA.all = 0x0012;
EPwm1Regs.AQCTLB.all = 0x0021;
EPwm1Regs.CMPA.bit.CMPA = 12500;

void setup_ECAP (void)
{
ECap1Regs.ECEINT.ALL = 0;
ECap1Regs.ECCTL1.bit.CAPLDEN = 0;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;
ECap1Regs.TSCTR = 0;
ECap1Regs.CTRPHS = 0;
ECap1Regs.ECCTL1.all = 0x01C4;
ECap1Regs.ECCTL2.all = 0x0096;
ECap1Regs.ECEINT.all = 0x0008;

外部中断失效 eCAP1_ISR (void)
{
ECap1Regs.ECCLR.bit.INT = 1;
ECap1Regs.ECCLR.bit.CEVT3 = 1;

PWM_ON_PERIOD = ECap1Regs.CAP2 - ECap1Regs.CAP1;
PWM_PERIOD = ECap1Regs.CAP3 - ECap1Regs.CAP1;

频率= 1/PWM_PERIOD;
PieCtrlRegs.PIEACK.all = PIEACK_group4;

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

    问题已解决。 实际上我犯了一个愚蠢的错误。 可以通过参考 C2000实验的 eCAP 实验对其进行整流。 谢谢你。