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.

TMS320F280049C: C2000ware 例程中 DCC (Counter0、Valid0、Counter1)是怎么配置的

Part Number: TMS320F280049C
Other Parts Discussed in Thread: C2000WARE

1、首先, “TMS320F28004x Real-Time Microcontrollers  Technical Reference Manual 6.2.1”中是这样描述的:

2、其次,TMS320F28004x Real-Time Microcontrollers  Technical Reference Manual 6.2.2 Example-1”中例举了这样一个例子:

3、按照6.2.1的算式和6.2.2中的举例参数进行计算验证,结果和6.2.2中一致,过程如下:

     FClk0 = 10M, FClk1 = Fsysclk = 100M, DCC Tolerance = 0.1%, Frequency Tolerance = 0.1%

     Async.Error = 2+2*(Fsysclk /  FClk0) = 22;

     Digitization = 8;

     DCC Error(in Clock0 Cycles) = 22 + 8 = 30;

    Window (in Clock0 Cycles) = (DCC Error)/(0.01* DCC Tolerance) = 30 / ( 0.01 * 0.1) = 30000;

    Frequency Error Allowed(in Clock0 Cycles) = Window * (Frequency Tolerance /100) = 30000 * (0.1/100) = 30;

    Total Error (in Clock0 Cycles) = DCC Error + Frequency Error Allowed = 30 + 30 = 60;

    所以:

            Counter0(DCCCNTSEED0)= Window - Total Error = 30000 - 60 = 29940;

            Valid0(DCCVALIDSEED0) = 2 * Total Error = 2 * 60 = 120;

             Counter1(DCCCNTSEED1) = Window * (FClk1 / FClk0) = 30000 * (100 / 10) = 300000;

  这个计算结果是与6.2.2中的举例结果一致的。

4、我们再来看C2000ware(我看的版本是C2000Ware_3_04_00_00)中的例程,任意一个C2000ware例程应用的参数都是一样的

C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f28004x\driverlib\sysctl.c和ysctl.h

C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f28004x\common\source\device.c和device.h四个文件

SysCtl_isPLLValid()函数内进行

Counter0(DCCCNTSEED0)、 Valid0(DCCVALIDSEED0)、 Counter1(DCCCNTSEED1)值的计算

从 FClk0 = 20M, FClk1 = Fsysclk = 200M,dccValidSeed0 = 24;

可以反算出 :

Async.Error = 2+2*(Fsysclk /  FClk0) = 22;

Digitization = 8;

DCC Error(in Clock0 Cycles) = 22 + 8 = 30;

Total Error  = dccValidSeed0  / 2 = 12;

问题是Total Error (in Clock0 Cycles) = DCC Error + Frequency Error Allowed;上面的计算Total Error已经小于DCC Error,Frequency Error Allowed不可能为负数。

这个怎么解释呢,是我哪里没有计算对吗?