TI中文支持网
TI专业的中文技术问题搜集分享网站

F28377D 的AD采样 EOC中断问题

我现在将几个用于算法的模拟量,分配到了F28377D的ADCA 和 ADCB中,同时用PWM产生SOC 触发采样,用ADCA的EOC5触发ADCA1_INT中断,现在问题是,ADCA的EOC5只能代表ADCA中的五个通道采样完了,不知道ADCB的五个通道是不是采样完成,如果把ADCB的采样值带入算法中,不知道准不准,如果不行,不知道有什么方法解决吗

lijingheng:

你好,你可以通过以下代码确保ADCB采样完成了:

//wait for ADCB to complete, then acknowledge flag

while(AdcaRegs.ADCINTFLG.bit.ADCINT1 == 0);

AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

while(AdcbRegs.ADCINTFLG.bit.ADCINT1 == 0);

AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

然后再处理采样结果

这样就可以保证采样都完成了!!

我现在将几个用于算法的模拟量,分配到了F28377D的ADCA 和 ADCB中,同时用PWM产生SOC 触发采样,用ADCA的EOC5触发ADCA1_INT中断,现在问题是,ADCA的EOC5只能代表ADCA中的五个通道采样完了,不知道ADCB的五个通道是不是采样完成,如果把ADCB的采样值带入算法中,不知道准不准,如果不行,不知道有什么方法解决吗

lijingheng:

我也用28377,希望多多交流!!

我现在将几个用于算法的模拟量,分配到了F28377D的ADCA 和 ADCB中,同时用PWM产生SOC 触发采样,用ADCA的EOC5触发ADCA1_INT中断,现在问题是,ADCA的EOC5只能代表ADCA中的五个通道采样完了,不知道ADCB的五个通道是不是采样完成,如果把ADCB的采样值带入算法中,不知道准不准,如果不行,不知道有什么方法解决吗

Charles Ji:

回复 lijingheng:

或者我是不是可以用EOC15来触发中断,ADCA的EOC15发生了,那么ADCB的所用通道也应该都采完了吧,是不是可以理解成,ADCA 和 ADCB两个大模块获得触发后并行进行采样,不分先后,每个模块内部都遵循SOC0–SOC15这样的优先级进行,也就是说两个大模块的EOC会同时发生呢?

我现在将几个用于算法的模拟量,分配到了F28377D的ADCA 和 ADCB中,同时用PWM产生SOC 触发采样,用ADCA的EOC5触发ADCA1_INT中断,现在问题是,ADCA的EOC5只能代表ADCA中的五个通道采样完了,不知道ADCB的五个通道是不是采样完成,如果把ADCB的采样值带入算法中,不知道准不准,如果不行,不知道有什么方法解决吗

lijingheng:

回复 Charles Ji:

程序可以按你的适当考虑,还可以调整采样时间,采样时间也可以调整的。但最最保险的做法如下

加上以下语句保证你万无一失!

//wait for ADCB to complete, then acknowledge flag

while(AdcaRegs.ADCINTFLG.bit.ADCINT1 == 0);

AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;

while(AdcbRegs.ADCINTFLG.bit.ADCINT1 == 0);

AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1

我现在将几个用于算法的模拟量,分配到了F28377D的ADCA 和 ADCB中,同时用PWM产生SOC 触发采样,用ADCA的EOC5触发ADCA1_INT中断,现在问题是,ADCA的EOC5只能代表ADCA中的五个通道采样完了,不知道ADCB的五个通道是不是采样完成,如果把ADCB的采样值带入算法中,不知道准不准,如果不行,不知道有什么方法解决吗

Jiasong Liu:

回复 lijingheng:

那如果我想让DMA直接将采集结果放在存储单元里,不想通过CPU执行指令,怎么做?

赞(0)
未经允许不得转载:TI中文支持网 » F28377D 的AD采样 EOC中断问题
分享到: 更多 (0)