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.

[参考译文] TMS320F28388S:复位循环指针 (RRPOINTER)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1636553/tms320f28388s-reseting-the-round-robin-pointer-rrpointer

器件型号: TMS320F28388S

您好:

我阅读了《具有连接管理器的 TMS320F2838x 实时微控制器》技术参考手册 (TRM) 文献编号:SPRUII0F 第 20.5 节 ADC 转换简介(第 2581 页)中的以下内容

 

image.png

 

我的目标是在突发模式下转换两个 SOC、然后复位 RRPOINTER。 我不需要任何高优先级 SOC。 我也不确定是否需要重置 RRPOINTER。

 

例如、如果我想使用软件触发器以突发模式转换 ADC A 上的 SOC0 和 SOC1、我应该执行以下操作:

 

AdcaRegs.BURSTCTL.BURSTEN = 1; // Enable ADC Bust Mode for ADC A
AdcaRegs.BURSTCTL.BURSTTRIG = 0; // SW Triggers burst of conversions
AdcaRegs.BURSTCTL.BURSTSIZE = 1; //conversion bursts are 1 + 1 = 2 conversions long
// SOC Configurations...

EALLOW;
AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1; // Interrupt Pulse Generation occurs at the the end of conversion
AdcaRegs.BURSTCTL.bit.BURSTEN = 1; // Enable ADC Bust Mode for ADC A
AdcaRegs.BURSTCTL.bit.BURSTTRIG = 0; // SW Triggers burst of conversions
AdcaRegs.BURSTCTL.bit.BURSTSIZE = 1; //conversion bursts are 1 + 1 = 2 conversions long
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 1; // EOC1 is trigger for ADCINT1
// SOC Configurations...
EDIS;

// Trigger the SOCs as follows
AdcaRegs.ADCSOCFRC1.all = 0x0003; //set SOC flags for SOC0 to SOC1
while(!AdcaRegs.ADCINTFLG.bit.ADCINT1); // Wait for conversion to finish
EALLOW;
// Reset Priority register to clear the RRPOINTER?
AdcaRegs.ADCSOCPRICTL.all = 0x00;

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

    您好:

    对于此用例、通常不需要在每次突发后复位 RRPOINTER。  仅当多个 SOC 同时挂起时、循环仲裁逻辑才使用 RRPOINTER。 如果您仅在 ADCA 上使用 SOC0 和 SOC1、并且这些是唯一参与突发的 SOC、则转换序列通常很简单、无需在每次软件触发后手动复位指针。

    需要清除的是、该 机制更多地用于 ADC 优先级逻辑的重新初始化、而不是作为每次突发后的正常步骤。  因此、在您的示例中、不建议在每次转换突发后例行写入 ADCSOCPRICTL.ALL = 0、除非您特别想重新初始化优先级配置。

    另一个注意事项是、 当启用突发模式时、通常的目的是使用选定的突发触发源并让突发控制器自动对 SOC 进行定序。 因此、使用以下命令手动强制执行两个 SOC 标志:

    AdcaRegs.ADCSOCFRC1.all = 0x0003;

    通常不是必需的。 在许多情况下、单次突发触发事件就足够了。

    此致、

    Masoud