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.

[参考译文] TMS320F28069M:从 Ramp Gen 库文件创建一个 sin

Guru**** 2517230 points
Other Parts Discussed in Thread: TIDA-01606, TIDA-010210, CONTROLSUITE, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1181324/tms320f28069m-creating-a-sin-from-ramp-gen-lib-file

器件型号:TMS320F28069M
主题中讨论的其他器件:TIDA-01606TIDA-010210controlSUITEC2000WARE

您好!

我想创建 RampGen 的 sin 图、因此我在 TI 内部使用了 lib 文件。 (/cfs-file/__key/communityserver-discussions-components-files/171/SolarLib.pdf 第157页)。 我尝试将 CpuTimer0用作中断、每次中断时、它都应该创建一个斜坡。 之后、我得到 了函数的 sin。 但是、我无法获得正确的图。 此外、我不确定是否创建了右侧的斜坡图。 我研究了 TI 的信息来源、但无法解决。 我记下了代码、希望您能向我展示需要更正的器件。 此外、对于这些值、我应该在图形属性中输入什么内容? 如果需要、我可以将完整文件添加为 zip 文件并放置图形结果。  

主文件:

#include "Lab.h"//主 include 文件
#include "Solar_IQ.h"

//--全局变量

//我使用缓冲区获取正确的结果。 我把 AdcBuf1IQ 命名为 AdcBuf1IQ、但它不是关于 ADC、而只是一个名称。 我没有从先前的例子中做出太大的改变。
uint16 AdcBuf1[ADC_BUF_LEN];// ADC 数据缓冲区分配
_iq AdcBuf1IQ[ADC_BUF_LEN];// ADC 数据缓冲区分配- IQ  
long GlobalQ = global_Q;// IQmath 调试支持


RAMPGEN_IQ 斜坡;

/********
*函数:main()
*
*说明:C28x 的主函数  
(二 /
void main (void)

//-- CPU 初始化
InitSysCtrl();//初始化 CPU (文件:sysctrl.c)
InitGpio();//初始化共享 GPIO 引脚(文件:gpio.c)
InitPieCtrl();//初始化并启用 PIE (文件:PIECTRL.c)
InitWatchdog();//初始化看门狗计时器(文件:watchdog.c)

//--外设初始化
InitAdc();//初始化 ADC (文件:adc.c)
InitEPwm();//初始化 ePWM (文件:ePWM.c)
InitECap();//初始化 ECAP (文件:ecap.c)

//RAMPGEN 变量
RAMPGEN_IQ_INIT (&斜坡);
ramp.Freq =_iQ24 (90);
Ramp.StepAngleMax =_iQ24 (1.0/1000);

CpuTimer0.InterruptCount = 0;
//LEDcount=0;

DINT;//禁用 CPU 中断
EALLOW;//这是写入 EALLOW 受保护寄存器所必需的

PieVectTable.TINT0 =&TINT0_ISR;

EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的

//CPU 配置//
InitCpuTimer();
ConfigCpuTimer (&CpuTimer0、90、1000000);//90 MHz、500、000 uSecond

//使用只写指令将 TSS 位设置为0
CpuTimer0Regs.TCR.ALL = 0x4000;

PieCtrlRegs.PIEIER1.bit.INTx7=1;/

IER |= M_INT1;  

EINT;
ERTM;

EALLOW;//这是写入 EALLOW 受保护寄存器所必需的

PieVectTable.TINT0 =&TINT0_ISR;

EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的


//--主循环
while (1)//无限循环-等待中断

asm (" NOP");


}//end of main()


/***文件结尾 /

ISR 文件;

中断空 TINT0_ISR (空)// PIE1.7 @ 0x000D4C TINT0 (CPU 定时器0)

CpuTimer0.InterruptCount++;

PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;//必须确认 PIE 组

静态_IQ * AdcBuf1IQPtr = AdcBuf1IQ;//指向 ADC 数据缓冲区的指针
外部 RAMPGEN_IQ 斜坡;

RAMPGEN_IQ_MACRO (斜坡);

//--管理 ADC 寄存器
AdcRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 ADCINT1标志

* AdcBuf1IQPtr++= Ramp.out;//当我想查看它的正弦图时,我将该行更改为'  AdcBuf1IQPtr++=_IQsinPU (Ramp.out)'。


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

    我们已在 TI 参考设计中使用过这种方法。 因此、请检查 TIDA-010210或 TIDA-01606、以使用斜坡生成模块生成正弦波。 该模块的完整使用文档也在此处提供。

    Shamim

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

    感谢你的答复。 在我尝试使用 Iq 时、这些参考使用 CLA、正如您从代码中所理解的那样。 那么、您能否检查我的代码并告诉我我代码中是否出现了逻辑错误、或者需要更正的器件在哪里?

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

    这些引用显示了基于 CPU 或 CLA 的代码、或者至少显示了 CPU 代码。

    C28x 不需要 IQ 数学。 使用代码的浮点版本。

    Shamim

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

    我认为您不理解我的意思。 我想进行 IQ 数学运算、这是我工作的目的。 此外、参考资料对我没有太大帮助。

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

    大家好、我 也遇到了相同的情况。 ıf 您可以检查代码并为我们提供帮助、我们很高兴。

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

    如果 IQ 数学是您工作的目的、请从 IQ 数学库中的简单示例开始。  

    借助 C28x MCU、您无需使用 IQ 数学。 但是、如果您对 IQ 数学感兴趣、那么您可以看到我们的示例。

    Shamim

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

    Ugur、

    您正在寻求支持的库是 controlSUITE 的一部分、我们不会主动支持这种传统软件。

    您是否尝试使用 DigitalPower SDK、它在中具有 rampgen 实用程序

    C2000Ware_DigitalPower_SDK_ \libraries\utilities\rampgen\include

    谢谢、

    Sira