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.

[参考译文] CCS/TMS320F2.8379万D:每个次级问题的ADC样本

Guru**** 2553260 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/631342/ccs-tms320f28379d-adc-sample-per-seconde-problem

部件号:TMS320F2.8379万D

工具/软件:Code Composer Studio

大家好,

我正在尝试为我的未来应用转换信号。 目前我可以从ADCa获得4个测量值(SOC0 - SOC3),我正在使用PWM1 (20Khz) SOCA来触发ADCa,我的问题是ADC需要33us来进行4个测量...在设备下方大约有121 kSPS批次

我的配置在那里:

SYSCLK = 200 MHz

ADCCLK = 200/5 = 40 MHz

12位模式

ACQPS = 65 (所有SOC都相同,因此我认为我处于同步模式)

SOC3 EOC中断,用于将结果保存在缓冲区中

在独立模式下从闪存运行

GPIO31 (实验板卡上的LED)与示波器配合使用(切换时间测量)

您是否有提高采集速度的建议? 我需要在5 us以下获得4个SOC结果(如果可能)。 您认为这是ADC问题,内存访问速度还是GPIO切换速度?

非常感谢

此致,

热雷梅

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jeremy:

    如果您只使用ADCA,则无需担心同步/异步操作。

    您可以通过参阅数据表的"ADC时序图"部分来确定转换所需的时间。  如果ADCCLK = 40MHz(/5)且SYSCLK = 200MHz且S+H Window = 66 SYSCLKS,则每个转换应采用51个SYCLK周期,因此应采用4个转换

    触发启动延迟= 2 SYSCLK  

    +

    样本和转换= 4*(51+66)=468 SYSCLK

    +

    输入ISR延迟=14 SYSCLK

    +

    切换GPIO的时间=?

    =

    484个周期

    在SYSCLK =200MHz时,这需要2.42us,所以如果您测量33us,肯定是错误的。 最明显的检查是PLL设置以及ADCCLK和ACQPS设置。  对于PLL,应在引脚上启用XCLKOUT并测量SYSCLK频率。  写入GPIO肯定需要一些周期,并且会因使用的方法而异,但我认为这不能解释差异。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Devin,

    我已经用XCLKOUT和设置重新检查了时钟,一切看起来都很好。 GPIO需要约50ns的脉冲(2xtoggle)。

    我已使用GPIO31脉冲(LED_Rouge_ON和LED_Rouge_OFF)“调试”我的代码,这是我的代码,它包含每个步骤之间的测量时间:

    正如您所看到的,问题不在中断代码中,我看到了两个解决方案:可能是ADC配置/工作问题,也可能是PWM启动(或其他)问题。 在第二种情况下,我将可视化PWM输出。

    我已在SOC3 EOC上配置了ADCa INT,并在PWM1 SOA上进行了同步。 我有一个问题:仅配置了SOC0-3,循环过程是否会扫描其他SOC? 我不使用连拍模式。

    此外,当我执行大量连续转换(结果缓冲区大小=每个示例1000)时,所有值都等于0。 配置错误或缺少Vref是否会显著降低进程速度?

    感谢你的帮助

    此致,

    热雷梅

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我很抱歉,我觉得我犯了一个错误,我的PWM以30kHz运行....或33us周期!! 事实上,我正在测量两次ADC测量之间的时间,在我的情况下,ADC由每个33us的PWM触发。 我已经显示了PWM和EOC脉冲,我在ADCA和ADCD通道上测量了8个测量值,测量值大约为4.72us。 所以我的问题不是真正的问题,我们可以看到结果解释的重要性...

    请回答我关于SOC转换的问题:
    1/如果只配置了8 SOC,循环是否会扫描SOC8-15?

    2/如何确保第一个转换的SOC是每个SOCA PWM脉冲的SOC0? 我知道ADCSOCFRC1寄存器,但在PWM触发之前没有写入它的权限。

    3/是否为4个ADC模块同步了SOC? 如果我使用SOC7 EOC触发ADCa INT1,这是否意味着ADCd SOC7已完成获取值? (具有相同的acqps时间)。

    非常感谢,

    热雷梅

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Jeremy:

    很好地听到您找到了初始问题的根源。 至于您的其他问题:

    1) SOC仅在显式触发时进行转换。 如果不将SOC配置为由ePWM,CPU计时器等触发,或者如果没有显式软件触发转换,则ADC将不会转换。 轮询仅确定在多个SOC同时处于待定状态时接下来要转换的SOC。

    2)如果您仅定期使用ePWM触发,则应始终根据循环优先级方案将SOC按照最低SOC的顺序转换为最高SOC。

    3) ADC模块之间的SOC不同步。 为了获得最佳性能,需要确保将相同的触发器转到所使用的每个ADC,它们使用相同数量的SOC,并且计时相同。 此"确保同步操作"上有TRM部分。 ADC实际上可以相互完全独立和异步运行,但这会导致器件数据表ADC性能部分中指定的性能降低。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢Devin的解释,

    我已经打印了ADC部分数据表,但我找不到用于量化异步性能并与同步模式进行比较的部分。

    根据经验,您能否告诉我两个时间偏差的大小(或百分比)?

    非常感谢,
    热雷梅
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jeremy:

    请参阅数据表中的“ENOB”和“ADC至ADC隔离”规范。