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.
问题1.
如上图所示,ADC单元的最大采样时钟是50MHz。工程的系统时钟是200MHz,但是ADCCLK = (input clock) / 2.0将ADCC的采样时钟配置成了100MHz,这是不对的吧。
问题2.
上图是我分析的28379D的adc_ex6_soc_continuous_dma工程是的ADC触发方式,是没有使能ADCINT1触发SOC0的,而这个帖子里28388D的adc_ex6_soc_continuous_dma工程,却使能了ADCINT1触发SOC0,如下图所示:
如果是这样配置的话,触发过程我觉得将会是这样:
也就是每个cycle中SOC0都多转换了一次,相比28379的例程这应该是有问题的吧?
28379的void setupADCContinuous(uint32_t adcBase, uint16_t channel)函数注释中明确注明ADCINT1触发SOC1~SOC15。请TI工程师对比一下两个处理器的这个例程
ADC单元的最大采样时钟是50MHz。工程的系统时钟是200MHz,但是ADCCLK = (input clock) / 2.0将ADCC的采样时钟配置成了100MHz
是的,您的假设是正确的,但是 2838x 和 2837x 的最大 ADC 速度是 50MHz。对于 200MHz 的设备时钟,ADC 预分频器应设置为 4 分频以产生 50MHz 的 ADC 时钟。
也就是每个cycle中SOC0都多转换了一次,相比28379的例程这应该是有问题的吧?
不会,SOC0 只会转换一次。 SOC15 结束生成 ADCINT2,进而触发 F2838x 中 SOC0 的转换。在 F2837x 中,SOC0 由 EPM SOC 触发。在这两个示例中,SOC0 都被转换一次。
您好 感谢您帮助确认问题1
不过 对于问题2我还是觉得28388例程SOC0会被多触发一次
您答复中“ SOC15 结束生成 ADCINT2,进而触发 F2838x 中 SOC0 的转换”的描述没有问题
第一步SOC15结束产生ADCINT2,
第二步ADCINT2会触发SOC0,相关的代码在初始化过程中,如下图所示
SOC0结束,会触发ADCINT1,配置如下图所示
接下来,对于28388例程,ADCINT1会触发SOC0至SOC15这16个中断,所以我还是觉得SOC0会被多转换一次,因为在第二步中,已经转换过一次了
再有就是在我画的这个图里
Cycle2的SOC0结束产生的ADCINT1和SOC15产生的ADCINT2,不会有冲突吗?我还是不太理解28388例程的SOC0为什么也要配置成ADCINT1触发
而对SOC0的配置,28379的例程是不一样的,ADCINT1不会触发SOC0的
不会的,当EOC0产生ADCINT1时,两个连续的SOC0被转换不会有任何冲突。这是因为在 F28388 ADC_init() 设置中调用了循环设置。进行循环优先级设置,使 SOC0 获得第一优先级,然后是下一个 SOC#,依此类推,直到 SOC15。