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.

[参考译文] TM4C1294KCPDT:ADC -采样序列发生器

Guru**** 2551110 points
Other Parts Discussed in Thread: TM4C1294KCPDT, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1051586/tm4c1294kcpdt-adc--sample-sequencers

器件型号:TM4C1294KCPDT
Thread 中讨论的其他器件: EK-TM4C1294XL

您好!

  我正在使用 TM4C1294KCPDT 控制器。 我想插入两个模拟引脚,在这种情况下我不知道 ADC 采样序列发生器。 任何机构都可以用示例对此进行解释?

它意味着 FIFO 的采样数和深度是多少? 如何在配置中使用它。

提前感谢。

谢谢、此致、

Rani

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

    器件型号:TM4C1294KCPDT

    您好!

     我 想在  ADCSequenceStepConfigure  中将 ADC 序列号配置为3,步骤配置为1。 那么 ,如果我配置我的 API 如  ADCSequenceStepConfigure ( ADC0_BASE,3,3 ADC_CTL_CH8)  ,这是正确的吗?

    void ADCSequenceStepConfigure	(	uint32_t 	ui32Base,
    uint32_t 	ui32SequenceNum,
    uint32_t 	ui32Step,
    uint32_t 	ui32Config 
    )	

    如果选择    序列发生器-3、1步 作为   ADCSequenceStepConfigure ( ADC0_BASE、3、3 ADC_CTL_CH8)

                  2. SEQUENCER-2 , 4步作为  ADCSequenceStepConfigure ( ADC0_BASE,2,4 ADC_CTL_CH8)

                 3. SEQUENCER-0 ,8步 作为  ADCSequenceStepConfigure ( ADC0_BASE,0,8 ADC_CTL_CH8)

    如果我错了,请更正...

    提前感谢  

    谢谢、此致、

    Rani  

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

    您好 Rani、

    [引用 userid="473476" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1051586/tm4c1294kcpdt-adc--sample-sequencers/3890757 #3890757"]因此 ,如果我配置我的 API,如  ADCSequenceStepConfigure ( ADC0_BASE,3,3 ADC_CTL_CH8)  ,则该选项是正确的?[/QUERP]

    不完全是。  对于序列3、步骤1、您将使用以下内容: 编辑:请参阅2021年11月9日的注释以了解正确的配置。

    ADCSequenceStepConfigure(ADC0_BASE, 3, 1, ADC_CTL_CH8);

    序列号为3、步进号为1。  编辑:请参阅2021年11月9日的注释以了解正确的配置。

    对于序列2/序列0、您的代码是正确的。 编辑:请参阅2021年11月9日的注释以了解正确的配置。

    [引用 userid="473476" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1051586/tm4c1294kcpdt-adc--sample-sequencers "]任何机构都可以用示例解释这一点?

    我们在 TivaWare 中提供了 ADC 的示例代码-我相信您可能已经在自己的基础上找到了这些代码、但在[安装路径]\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\adc_udma_pingpong 中提供了 EK-TM4C1294XL LaunchPad 的示例。

    [安装路径]\TivaWare_C_Series-2.2.0.295\examples\peripheral\ADC 也有其他示例

    [引用 userid="473476" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1051586/tm4c1294kcpdt-adc--sample-sequencers "]它意味着 FIFO 的采样数和深度是多少?

    样本数表示在触发中断之前收集了多少个样本、以指示采样已完成。 FIFO 深度指示 FIFO 满之前可以存储的最大采样数。 一旦 FIFO 满、在 FIFO 被清空前、未来的写入将不会发生、但是会触发一个溢出标志来指示 ADC 被处理的速度不够快、并且采样数据因此丢失。

    此致、

    Ralph Jacobi

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

    Ralph Jacobi,

      我看到了一些 ADC 的示例代码,因为它们配置如下,但我无法理解 。您能解释一下。

      ADCSequenceStepConfigure (ADC0_BASE、0、0、ADC_CTL_CH0);
      ADCSequenceStepConfigure (ADC0_BASE、0、1、(ADC_CTL_CH4));
      ADCSequenceStepConfigure (ADC0_BASE、0、2、ADC_CTL_CH8);
      ADCSequenceStepConfigure (ADC0_BASE、0、3、(ADC_CTL_CH9 | ADC_CTL_IE | ADC_CTL_END));

    序列发生器0表示步骤应该只有8个... 但在这里,它们的菜单有不同的... 上述配置是否正确?

    此致、

    Rani

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

    您好 Rani、

    我必须在这里稍微纠正一下、因为我没有正确地考虑代码转换、即对于寄存器、步长为0到7、而不是1到8。 因此、您之前的代码实际上对 TivaWare API 不准确。 正确的值为:

    ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH8 | ADC_CTL_IE | ADC_CTL_END);
    
    ADCSequenceStepConfigure(ADC0_BASE, 2, 3, ADC_CTL_CH8 | ADC_CTL_IE | ADC_CTL_END);
    
    ADCSequenceStepConfigure(ADC0_BASE, 0, 7, ADC_CTL_CH8 | ADC_CTL_IE | ADC_CTL_END);

    我现在还附加了  ADC_CTL_IE | ADC_CTL_END 方面、用于这些最终步骤、因为它们将是序列中的最后一个采样。 ADC_CTL_IE 通常需要添加、以便正确触发中断、但如果使用手动触发器、则不需要这样做。 ADC_CTL_END 对于标记采样结束非常重要。  

    关于步进本身、步进值决定 了触发发生时 ADC 采样的顺序。  因此、您可以设置任何符合序列条件的值。 此外、如果序列可以有多个步骤、则可以为每个步骤选择不同的通道。 对于具有8个可用样本的序列0、您可以选择在触发中断之前从多达8个不同的输入中采样。

    您发布的代码是针对四个输入执行该操作、其中第0步的第一个采样在 CH0上完成、第1步的第二个采样在 CH4上完成、第2步的第三个采样在 CH8上完成、 第4个采样位于 CH9上、即第3步、第3步是最后一步、因此中断将在该采样被处理后触发。

    现在、深度为4的 ADC FIFO 中将有4个采样。 由于它是一个 FIFO、读取它将按照它们是采样的顺序获得值、即 CH0、CH4、CH8和 CH9。

    如果您希望从单个通道获取8次测量、则需要配置所有8个步骤、这意味着代码如下所示:

    ADCSequenceStepConfigure(ADC_BASE, 0, 0, ADC_CTL_CH1);
    ADCSequenceStepConfigure(ADC_BASE, 0, 1, ADC_CTL_CH1);
    ADCSequenceStepConfigure(ADC_BASE, 0, 2, ADC_CTL_CH1);
    ADCSequenceStepConfigure(ADC_BASE, 0, 3, ADC_CTL_CH1);
    ADCSequenceStepConfigure(ADC_BASE, 0, 4, ADC_CTL_CH1);
    ADCSequenceStepConfigure(ADC_BASE, 0, 5, ADC_CTL_CH1);
    ADCSequenceStepConfigure(ADC_BASE, 0, 6, ADC_CTL_CH1);
    ADCSequenceStepConfigure(ADC_BASE, 0, 7, (ADC_CTL_CH1 | ADC_CTL_END));
    

    我很抱歉 ,我之前的回复很不明确,对序列发生器和步骤的理解没有帮助。 我希望这能提供有关配置 ADC 外设的正确方法的大量信息。

    此致、

    Ralph Jacobi