请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28386D 您好!
我配置 ADCA1和 ADCA2、问题是
如果我只为 ADCA1提供输入、那么输入会自动进入 ADCA2、而不会为 ADCA2提供输入。
如果我配置 ADCA1和 ADCB1比没有问题它的工作完美.
我通过 CPU 计时器为 ADC 的 soc 提供触发
下面是我的配置。
void myadca_init (){
//
// ADC 初始化:写入 ADC 配置并为 ADC 上电
//
//配置模数转换器模块预分频器。
//
ADC_setPrescaler (myADCA_BASE、ADC_CLK_DIV_8_0);
//
//配置模数转换器分辨率和信号模式。
//
ADC_setMode (myADCA_BASE、ADC_Resolution_12bit、ADC_MODE_single_ended);
//
//设置转换结束脉冲的计时
//
ADC_setInterruptPulseMode (myADCA_BASE、ADC_PULSE_END_OF_CONV);
//
//为模数转换器内核加电。
//
ADC_enableConverter (myADCA_BASE);
//
//延迟1ms 以允许 ADC 时间上电
//
device_delay_us (500);
//
// SOC 配置:设置 ADC EPWM 通道和触发器设置
//
//禁用 SOC 突发模式。
//
ADC_disableBurstMode (myADCA_BASE);
//
//设置 SOC 的优先级模式。
//
ADC_setSOCPriPriority (myADCA_BASE、ADC_PRI_ALL_ROUND_Robin);
//
//转换开始2配置
//
//
//配置 ADC 中的转换启动(SOC)及其中断 SOC 触发器。
/// SOC 编号: 2
//触发条件:ADC_TRIGGER_CPU1_TINT0
//通道:ADC_CH_ADCIN2
//示例窗口:100个 SYSCLK 周期
//中断触发:ADC_INT_SOC_TRIGGER_NONE
//
ADC_setupSOC (myADCA_BASE、ADC_SOC_number2、ADC_TRIGGER_CPU1_TINT0、ADC_CH_ADCIN2100u);
ADC_setInterruptSOCTrigger (myADCA_BASE、ADC_SOC_number2、ADC_INT_SOC_TRIGGER_NONE);
//
//转换开始5配置
//
//
//配置 ADC 中的转换启动(SOC)及其中断 SOC 触发器。
/// SOC 编号: 5
//触发条件:ADC_TRIGGER_CPU1_TINT0
//通道:ADC_CH_ADCIN5
//示例窗口:100个 SYSCLK 周期
//中断触发:ADC_INT_SOC_TRIGGER_NONE
//
ADC_setupSOC (myADCA_BASE、ADC_SOC_Number5、ADC_TRIGGER_CPU1_TINT0、ADC_CH_ADCIN5100u);
ADC_setInterruptSOCTrigger (myADCA_BASE、ADC_SOC_Number5、ADC_INT_SOC_TRIGGER_NONE);
//
// ADC 中断1配置
//来源:adc_soc_number2
//中断源:已启用
//连续模式:已禁用
//
//
ADC_setInterruptSource (myADCA_BASE、ADC_INT_number1、ADC_SOC_number2);
ADC_clearInterruptStatus (myADCA_BASE、ADC_INT_number1);
ADC_disableContinuousMode (myADCA_BASE、ADC_INT_number1);
ADC_enableInterrupt (myADCA_BASE、ADC_INT_number1);
//
// ADC 中断2配置
//来源:ADC_SOC_Number5
//中断源:已启用
//连续模式:已禁用
//
//
ADC_setInterruptSource (myADCA_BASE、ADC_INT_number2、ADC_SOC_Number5);
ADC_clearInterruptStatus (myADCA_BASE、ADC_INT_number2);
ADC_disableContinuousMode (myADCA_BASE、ADC_INT_number2);
ADC_enableInterrupt (myADCA_BASE、ADC_INT_number2);
}
void INT_myADCA_2_ISR ()
{
静态双 AdcBufPtr1;
AdcBufPtr1 = ADC_readResult (myADCA_Result_BASE、myADCA_SOC5);
adcAResult1=AdcBufPtr1*(3.3/4095);
INTERRUPT_clearACKGROUP (INT_myADCA_2_INTERRUPT_ACK_GROUP);
ADC_clearInterruptStatus (myADCA_BASE、ADC_INT_number2);
}
以下是我在不向 ADCA2提供输入时的 ADC 结果、但0.72是作为 ADCA2的结果

请帮助。