我现在将几个用于算法的模拟量,分配到了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执行指令,怎么做?
TI中文支持网



