Thread 中讨论的其他器件:controlSUITE
工具/软件:Code Composer Studio
主席/女士
我正在学习 tms28335实验套件。 我的目的是将信号发生器的模拟 D.C 信号提供给 ADC 引脚 A0、并观察控制器的脉冲。 我不知道问题在哪里。 我正在复制以下代码。
#include"DSP2833x_Device.h"
#include" math.h"
//外部函数原型
extern void InitAdc (void);
extern void InitSysCtrl(void);
extern void InitPieCtrl (void);
extern void InitPieVectTable (void);
//此文件中找到的函数的原型语句。
void GPIO_select (void);
void Setup_ePWM1 (void);
中断空 ADC_ISR (空);//序列 ISR 的 ADC 末尾
//全局变量
uint16 PWM=750;
浮点 Voltage_VR1;
浮点 Duty_PWM;
//######################################################################################################################
//主代码
//######################################################################################################################
void main (void)
{
InitSysCtrl();// DSP2833x_sysctrl.c 中的基本内核初始化
EALLOW;
SysCtrlRegs.WDCR= 0x00AF;//重新启用看门狗
EDIS;// 0x00AF 要不禁用看门狗、预分频器= 64
DINT;//禁用所有中断
GPIO_SELECT ();// GPIO9、GPIO11、GPIO34和 GPIO49作为输出
//在外设资源管理器上连接到4个 LED)
SETUP_ePWM1 ();// ePWM1A 的初始化
InitPieCtrl();// PIE 表的基本设置;来自 DSP2833x_PIECTRL.c
InitPieVectTable();// PIE 中的默认 ISR
InitAdc ();//基本 ADC 设置、包括 校准
AdcRegs.ADCTRL1.All = 0;
AdcRegs.ADCTRL1.bit.ACQ_PS = 1;// 7 = 8 x ADCCLK
AdcRegs.ADCTRL1.bit.SEQ_CASC =0;// 1=级联序列发生器
AdcRegs.ADCTRL1.bit.CPS = 0;//除以1
AdcRegs.ADCTRL1.bit.CONT_RUN = 0;//单次运行模式
AdcRegs.ADCTRL2.all = 0;
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;// 1=启用 SEQ1中断
AdcRegs.ADCTRL2.bit.ePWM_SOCA_SEQ1 =1;// 1=SEQ1从 ePWM_SOCA 触发器开始
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = 0;// 0=序列每结束后的中断
AdcRegs.ADCTRL3.bit.ADCCLKPS = 2;// ADC 时钟:FCLK = HSPCLK /2 * ADCCLKPS
// HSPCLK = 75MHz (请参阅 DSP2833x_SYSCTRL.c)
// FCLK = 12.5MHz
AdcRegs.ADCMAXCONV.ALL = 0;//从序列发生器1进行1次转换
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0;//将 ADCINA0设置为第一个 SEQ1转换器
EALLOW;
PieVectTable.ADCINT =&ADC_ISR;
EDIS;
PieCtrlRegs.PIEIER1.bit.INTx7=1;// CPU 定时器0
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;// ADC
IER |=1;
EINT;
ERTM;
}
void GPIO_select (void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.ALL = 0;// GPIO15... GPIO0 =通用尸体 I/O
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;// ePWM1A 有效
GpioCtrlRegs.GPAMUX2.ALL = 0;// GPIO31... GPIO16 =通用 I/O
GpioCtrlRegs.GPBMUX1.ALL = 0;// GPIO47... GPIO32 =通用 I/O
GpioCtrlRegs.GPBMUX2.ALL = 0;// GPIO63... GPIO48 =通用 I/O
GpioCtrlRegs.GPCMUX1.ALL = 0;// GPIO79... GPIO64 =通用 I/O
GpioCtrlRegs.GPCMUX2.ALL = 0;// GPIO87... GPIO80 =通用 I/O
GpioCtrlRegs.GPADIR.ALL = 0;
GpioCtrlRegs.GPADIR.bit.GPIO9 = 1;//外设资源管理器:GPIO9上的 LED LD1
GpioCtrlRegs.GPADIR.bit.GPIO31 = 1;//外设资源管理器:GPIO11上的 LED LD2
GpioCtrlRegs.GPBDIR.ALL = 0;// GPIO63-32作为输入
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;//外设资源管理器:GPIO34上的 LED LD3
GpioCtrlRegs.GPBDIR.bit.GPIO49 = 1;//外设资源管理器:GPIO49上的 LED LD4
GpioCtrlRegs.GPCDIR.ALL = 0;// GPIO87-64作为输入
EDIS;
}
中断空 ADC_ISR (空)
{
VOLTGE_VR1 =(AdcMirror.ADCRESULT0);//将结果存储为全局
//为下一个 ADC 序列重新初始化
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;//复位 SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;//清除 INT SEQ1位
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;//确认 PIE 中断
}
void Setup_ePWM1 (void)
{
EPwm1Regs.ETSEL.bit.SOCAEN = 1;//启用组上的 SOC
EPwm1Regs.ETSEL.bit.SOCASEL = 1;//在递增计数时从 CPMA 选择 SOC
EPwm1Regs.ETPS.bit.SOCAPRD = 1;//在发生第一个事件时生成脉冲
EPwm1Regs.TBCTL.bit.CLKDIV = 0;// CLKDIV = 1
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;// HSPCLKDIV = 2
EPwm1Regs.TBCTL.bit.CTRMODE = 2;//向上-向下计数模式
EPwm1Regs.AQCTLA.bit.CAU = 2;//在 CMPA 上设置 ePWM1A
//在 CMPA 递减时清除 ePWM1A
EPwm1Regs.AQCTLA.bit.CAD = 1;//在 CMPB 上设置 ePWM1B
//清除 CMPB 上的 ePWM1B
Duty_PWM = PWM*(Voltage_VR1)/4096;
EPwm1Regs.CMPA.half.CMPA = Duty_PWM;
}
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//源代码结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================