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/TM4C1294NCPDT:显示相同值的 ADC0和 ADC1。

Guru**** 2469520 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/677412/ccs-tm4c1294ncpdt-adc0-and-adc1-showing-same-values

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

下午好、程序员们、我在过去几天一直在尝试开发一个 ADC 程序、所以我偶然发现了一个问题。 我已经用序列号2配置了 ADC0和 ADC1、我想读取单独的信息、即:引脚 PK3至 PK1读取并将其值发送到 ADC1和引脚 PE3至 PE1读取并将值发送到 ADC0。 我已经配置了引脚、但是当我调用 ADCSequenceDataGet (我使用2个不同的 uint32变量来存储信息)时、ADC0和 ADC1通道上的信息相同。 是否有办法解决我的问题? 我将附加 code.e2e.ti.com/.../5342.uart_5F00_echo.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请勿考虑 UART 配置和代码。 我将其用于另一个应用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想您说过、您希望对 ADC0和 ADC1使用采样序列2。 但您需要为 ADC1配置采样序列1。 您的代码。

    // ADC 1.

      ADCSequenceConfigure (ADC1_base、1、ADC_TRIGGER_PROCESSOR、0);

      ADCSequenceStepConfigure (ADC1_base、1、0、ADC_CTL_CH2);

      ADCSequenceStepConfigure (ADC1_base、1、1、ADC_CTL_CH1);

      ADCSequenceStepConfigure (ADC1_base、1、2、ADC_CTL_IE | ADC_CTL_END | ADC_CTL_CH0);

      ADCSequenceEnable (ADC1_BASE、1);

    此外、在中断 ISR 中、您只需等待 ADC 中断标志置位、但在等待完成后绝不会将其清零。 它们将保持设置。 您应该插入     ADCIntClear (ADC0_BASE、2)后再读取 ADC 数据。 请参见下面的。

      

    ADCProcessorTrigger (ADC0_BASE、2);
    while (!ADCIntStatus (ADC0_BASE、2、false))

    ADCIntClear (ADC0_BASE、2);
    ADCSequenceDataGet (ADC0_BASE、2、\ui32Value);

    ADCProcessorTrigger (ADC1_base、2);
    while (!ADCIntStatus (ADC1_base、2、false))

    ADCIntClear (ADC1_BASE、2);
    ADCSequenceDataGet (ADC1_base、2、\ui32Value2);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦、抱歉、我将序列发生器更改为1以用于测试、我忘记了更改它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、您是否仍然有问题? 您是否实施了我以红色突出显示的修复程序?

    我建议您首先仅测试一个 ADC。 确保您获得了每个 ADC 样本的预期数据、然后将两个 ADC 合并到最终项目中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我实施了红色高电平的代码、尽管它仍然为我提供了相同的错误。 我已经为一个 ADC 开发了另一个 ADC 读取程序、它运行良好。 这个也可以正常工作、它正在读取预期值、问题是 uint32Value 和 uint32Value2中的值相同。 由于 ADC0和 ADC1具有共享输入通道、我不知道是否可以执行我希望执行的操作、如图所示。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您的问题未在以下代码中修复。 如果您希望 ADC1对引脚 PK3至 PK1进行采样、则这些引脚不是通道0、1、2、而是通道17、18、19。

    // ADC 1.
    ADCSequenceConfigure (ADC1_base、1、ADC_TRIGGER_PROCESSOR、0);
    ADCSequenceStepConfigure (ADC1_base、1、0、ADC_CTL_CH2);
    ADCSequenceStepConfigure (ADC1_base、1、1、ADC_CTL_CH1);
    ADCSequenceStepConfigure (ADC1_base、1、2、ADC_CTL_IE | ADC_CTL_END | ADC_CTL_CH0);
    ADCSequenceEnable (ADC1_BASE、1);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、完全解决了这个问题!