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.

[参考译文] CCS/TMS320F28335:温度变化、然后频率变化

Guru**** 2589245 points
Other Parts Discussed in Thread: TMS320F28335, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/834378/ccs-tms320f28335-temperature-changes-then-frequency-changes

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

工具/软件:Code Composer Studio

使用 C#读取温度传感器的值、将其设置为.txt、通过 TMS320F28335读取.txt、并更改 ePWM 的频率。

我想立即更改。温度更改、频率更改。

这是我的代码。

#include "DSP28x_Project.h"
#include
void InitEPwm1 (void);
void GPIO_Setup (void);
中断 void a (void);
int F;
文件*fp_g;
字符 t[1];

int main()

InitSysCtrl();
InitEPwm1Gpio();
GPIO_Setup();
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();

EALLOW;
PieVectTable.EPWM1_INT =&A;
EDIS;

EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;
EDIS;

EALLOW;
SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1;
EDIS;

InitEPwm1();

EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;
EDIS;

IER |= M_INT3;

PieCtrlRegs.PIEIER3.bit.INTx1 = 1;

EINT;
ERTM;
for (;;){
_asm (" NOP");

void GPIO_Setup (void)

EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0=1;// GPIO配置為ePWM1A功能
GpioCtrlRegs.GPAMUX1.bit.GPIO1=1;// GPIO1配置為ePWM1B功能

GpioCtrlRegs.GPAMUX1.bit.GPIO12=1;//TZ1 -触发区1
GpioCtrlRegs.GPAMUX2.bit.GPIO16=3;//TZ5 -跳匣区域5
EDIS;


空 InitEPwm1 (空)

//设置 TBCLK
EPwm1Regs.TBPRD =F;// TBPRD=150m/f-1
EPwm1Regs.TBPHS.Half.TBPHS = 0x0000;//相位为0 (相位為0)
EPwm1Regs.TBCTR =时基计数器清0;//μ s
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;//向上计数
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//禁用相位加载
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;//时钟与 SYSCLKOUT 的比率
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;//时基时钟分频1倍分频 μ s

//设置隐藏
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;// CMPA影子装载模式 μ s
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;//CTR=0影子寄存器A装载update IT
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

//设置操作
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;// CTR上升至CMPA值 置1 ePWMA输出高
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;// CTR下降至CMPA值 置0 ePWMA输出低
EPwm1Regs.AQCTLB.bit.ZRO = AQ_SET;// CTR上升至CMPB值 置1 ePWMB输出高
EPwm1Regs.AQCTLB.bit.CBU = AQ_CLEAR;// CTR下降至CMPB值 置0 ePWMB输出低

//中断,我们将在其中更改比较值
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_PRD;//在 PRD 事件上选择 INT
EPwm1Regs.ETSEL.bit.INTEN = 1;//启用 INT
EPwm1Regs.ETPS.bit.INTPRD = et_1st;//在发生第一个事件时生成 INT

//设置死区
EPwm1Regs.DBCTL.bit.IN_MODE = 0;ePWMxA是雙邊沿延時輸入源 μ s
EPwm1Regs.DBCTL.bit.OUT_MODE = 3;使能雙邊沿沿時 μ s
EPwm1Regs.DBCTL.bit.POLSEL = 2;ePWMxA不翻轉,ePWMxB翻轉 μ s
EPwm1Regs.DBFED =625;//100ns*150m
EPwm1Regs.DBRED =625;

//设置触发区
EALLOW;
EPwm1Regs.TZSEL.bit.OSHT1 = 1;启用TZ1作为PWM1的错误源 μ s
EPwm1Regs.TZSEL.bit.OSHT5 = 1;
EPwm1Regs.TZCTL.bit.TZA = 2;//EPWM1A 将在跳闸事件上强制拉低。
EPwm1Regs.TZCTL.bit.TSB = 2;
EPwm1Regs.TZEINT.BIT.OST = 1;//启用 OST 中断
EDIS;
EPwm1Regs.CMPA.half.CMPA=0;


中断空 A (空)

fp_g=fopen ("D:\\Xiang\\fp\\fp.txt"、"r");
fread (t、2、1、FP_G);

if (t[1]==28)
{F=2000;
EPwm1Regs.CMPA.half.CMPA=F/2;
EPwm1Regs.CMPB=F/2;
EPwm1Regs.ETCLR.bit.INT = 1;

PieCtrlRegs.PIEACX.All=PIEACK_Group3;


其他
{F=2500;
EPwm1Regs.CMPA.half.CMPA=F/2;
EPwm1Regs.CMPB=F/2;
EPwm1Regs.ETCLR.bit.INT = 1;

PieCtrlRegs.PIEACX.All=PIEACK_Group3;

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

    你好

    您的帖子不清楚、您需要帮助的问题是什么?

    有关器件代码示例、请参阅 C2000Ware。

    此致

    Chris