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.
您好!
我正在使用系统时钟90Mhz 来运行 TMS320F28069。 时钟源来自 外部20Mhz 晶振。
我正在尝试通过将 ECAP 模块设置为 APWM 模式、来使用该模块输出 PWM 信号。 以下是 ECAP 初始化代码的一部分:
ECap2Regs.ECCTL2.bit.APWMPOL = 1;
ECap2Regs.ECCTL2.bit.CAP_APWM = 1;//将我们置于 PWM 模式
ECap2Regs.ECCTL2.bit.SYNCI_EN = 0;
ECap2Regs.ECCTL2.bit.SYNCO_SEL = 1;// CTP = PRD
ECap2Regs.ECCTL2.bit.stop_wrap = 0x01;
ECap2Regs.ECCTL1.bit.CAPLDEN = 1;//启用 CAP1-CAP4寄存器加载
ECap2Regs.ECCTL2.bit.CONT_ONESHT = 0;
我正在尝试生成周期为:40us/60us/80us/100us/200us/400us 的 PWM 信号。 我用频率计数器测量了信号的周期。 理想的 ppm 误差为0、但我得到了非常大的 ppm 误差:
预期输出周期 | 40 μ s | 60 μ s | 80 μ s | 100 μ s | 200us | 400us |
ECap2Regs.CAP4 (接通时间) | 1738 | 2638 | 3538 | 4438 | 8938 | 17938 |
ECap2Regs.CAP3 (周期) | 3600 | 5400 | 7200 | 9000 | 18000 | 36000 |
预期 ppm | 0 | 0 | 0 | 0 | 0 | 0 |
测得的 ppm 结果 | -282.8 | -190.4 | -144.1 | -166.2 | -60.7 | -33 |
当我将周期减少1的值时、我得到了明显更好的 ppm 误差:
预期输出周期 | 40 μ s | 60 μ s | 80 μ s | 100 μ s | 200us | 400us |
ECap2Regs.CAP4 (接通时间) | 1737.000000 | 2637.000000 | 3537.000000 | 4437.000000 | 8937.00000 | 17937.00000 |
ECap2Regs.CAP3 (周期) | 3599.000000 | 5399.000000 | 7199.000000 | 8999.000000 | 17999.00000 | 35999.00000 |
预期 ppm | 277.770000 | 185.185000 | 138.888000 | 111.111000 | 55.55000 | 27.77000 |
测得的 ppm 结果 | 2.000000 | -5.300000 | -5.300000 | 12.100000 | -5.30000 | -5.30000 |
那么、我在哪里可以找到有关 APWM 精度的详细信息?
如何获得最佳精度?
如何计算 PWM 最坏情况下的误差?
谢谢。
安迪
Andy、您好!
您使用的是 LaunchPad 还是 controlCARD? SYSCLK 应该是影响 APWM 精度的因素、例如、如果 SYSCLK 为200MHz、eCAP 的分辨率将为5ns。 我不确定将周期减少到值1为何有助于改善 ppm 误差。
您是否知道外部时钟的 PPM? 您能否使用 launchpad 或 controlCARD 上的 XTAL 对此进行尝试和验证?
此致!
马瑞安
您好、Ryan、
我们将在我们的产品上测量 ppm、而不是在开发板 launchpad 或 controlCARD 上测量。 我们使用的20Mhz 外部晶体的测量 ppm 为31.5。
安迪
Andy、您好!
假设 SYSCLK 是90Mhz、而 ppm 是31.5、则周期减少1是用于 CAP1的正确周期值。 这是它的计算方法、
这使用 TRM 中的公式:
希望这对您有所帮助!
此致!
mA