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.

TMS320F28388D: 关于adc_ex6_soc_continuous_dma例程的问题

Part Number: TMS320F28388D

问题1.

如上图所示,ADC单元的最大采样时钟是50MHz。工程的系统时钟是200MHz,但是ADCCLK = (input clock) / 2.0将ADCC的采样时钟配置成了100MHz,这是不对的吧。

问题2.

上图是我分析的28379Dadc_ex6_soc_continuous_dma工程是的ADC触发方式,是没有使能ADCINT1触发SOC0的,而这个帖子里28388Dadc_ex6_soc_continuous_dma工程,却使能了ADCINT1触发SOC0,如下图所示:

如果是这样配置的话,触发过程我觉得将会是这样:

也就是每个cycle中SOC0都多转换了一次,相比28379的例程这应该是有问题的吧?

 28379的void setupADCContinuous(uint32_t adcBase, uint16_t channel)函数注释中明确注明ADCINT1触发SOC1~SOC15。请TI工程师对比一下两个处理器的这个例程

  • 感谢您对TI产品的关注!已为您咨询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。