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.
TI的 FAE您好!
在使用时 PWM1 PWM2 PWM3 为CPU1 控制 PWM4 PWM5 PWM6为CPU2控制 ADC转换器 A B C D都使用
我把ADC C 和ADC D 配置为CPU1控制 使用PWM1 触发ADC采样;可以实现ADC A BC D都能转换
EALLOW;
//allocate PWM1, PWM2 and PWM3 to CPU1
DevCfgRegs.CPUSEL0.bit.EPWM1 = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL0.bit.EPWM2 = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL0.bit.EPWM3 = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL0.bit.EPWM4 = Peripheral_Con_CPU2;
DevCfgRegs.CPUSEL0.bit.EPWM5 = Peripheral_Con_CPU2;
DevCfgRegs.CPUSEL0.bit.EPWM6 = Peripheral_Con_CPU2;
DevCfgRegs.CPUSEL11.bit.ADC_A = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL11.bit.ADC_B = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL11.bit.ADC_C = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL11.bit.ADC_D = Peripheral_Con_CPU1;
EDIS;
void SetupADCCEpwm(uint16_t channel)
{
Uint16 acqps;
//determine minimum acquisition window (in SYSCLKS) based on resolution
if(ADC_RESOLUTION_12BIT == AdccRegs.ADCCTL2.bit.RESOLUTION)
{
acqps = 14; //75ns
}
else
{ //resolution is 16-bit
acqps = 63; //320ns
}
//Select the channels to convert and end of conversion flag
EALLOW;
AdccRegs.ADCSOC0CTL.bit.CHSEL = channel;
AdccRegs.ADCSOC0CTL.bit.ACQPS = acqps;
AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 0x05;
AdccRegs.ADCINTSEL1N2.bit.INT1SEL = 0;
AdccRegs.ADCINTSEL1N2.bit.INT1E = 0;
AdccRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
EDIS;
}
void SetupADCDEpwm(uint16_t channel)
{
Uint16 acqps;
//determine minimum acquisition window (in SYSCLKS) based on resolution
if(ADC_RESOLUTION_12BIT == AdcdRegs.ADCCTL2.bit.RESOLUTION)
{
acqps = 14; //75ns
}
else
{ //resolution is 16-bit
acqps = 63; //320ns
}
//Select the channels to convert and end of conversion flag
EALLOW;
AdcdRegs.ADCSOC0CTL.bit.CHSEL = channel;
AdcdRegs.ADCSOC0CTL.bit.ACQPS = acqps;
AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 0x05;
AdcdRegs.ADCINTSEL1N2.bit.INT1SEL = 0;
AdcdRegs.ADCINTSEL1N2.bit.INT1E = 0;
AdcdRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
EDIS;
}
但我把ADC C 和 ADC D配置为CPU2控制 用PWM4触发 就不成功了
EALLOW;
//allocate PWM1, PWM2 and PWM3 to CPU1
DevCfgRegs.CPUSEL0.bit.EPWM1 = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL0.bit.EPWM2 = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL0.bit.EPWM3 = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL0.bit.EPWM4 = Peripheral_Con_CPU2;
DevCfgRegs.CPUSEL0.bit.EPWM5 = Peripheral_Con_CPU2;
DevCfgRegs.CPUSEL0.bit.EPWM6 = Peripheral_Con_CPU2;
DevCfgRegs.CPUSEL11.bit.ADC_A = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL11.bit.ADC_B = Peripheral_Con_CPU1;
DevCfgRegs.CPUSEL11.bit.ADC_C = Peripheral_Con_CPU2;
DevCfgRegs.CPUSEL11.bit.ADC_D = Peripheral_Con_CPU2;
EDIS;
void SetupADCCEpwm(uint16_t channel)
{
Uint16 acqps;
//determine minimum acquisition window (in SYSCLKS) based on resolution
if(ADC_RESOLUTION_12BIT == AdccRegs.ADCCTL2.bit.RESOLUTION)
{
acqps = 14; //75ns
}
else
{ //resolution is 16-bit
acqps = 63; //320ns
}
//Select the channels to convert and end of conversion flag
EALLOW;
AdccRegs.ADCSOC0CTL.bit.CHSEL = channel;
AdccRegs.ADCSOC0CTL.bit.ACQPS = acqps;
AdccRegs.ADCSOC0CTL.bit.TRIGSEL = 0x0b;
AdccRegs.ADCINTSEL1N2.bit.INT1SEL = 0;
AdccRegs.ADCINTSEL1N2.bit.INT1E = 0;
AdccRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
EDIS;
}
void SetupADCDEpwm(uint16_t channel)
{
Uint16 acqps;
//determine minimum acquisition window (in SYSCLKS) based on resolution
if(ADC_RESOLUTION_12BIT == AdcdRegs.ADCCTL2.bit.RESOLUTION)
{
acqps = 14; //75ns
}
else
{ //resolution is 16-bit
acqps = 63; //320ns
}
//Select the channels to convert and end of conversion flag
EALLOW;
AdcdRegs.ADCSOC0CTL.bit.CHSEL = channel;
AdcdRegs.ADCSOC0CTL.bit.ACQPS = acqps;
AdcdRegs.ADCSOC0CTL.bit.TRIGSEL = 0x0b;
AdcdRegs.ADCINTSEL1N2.bit.INT1SEL = 0;
AdcdRegs.ADCINTSEL1N2.bit.INT1E = 0;
AdcdRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;
EDIS;
}
我确定进入了PWM4的中断