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.

[参考译文] TM4C123GH6PM:TM4C123GH6PM

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/614807/tm4c123gh6pm-tm4c123gh6pm

器件型号:TM4C123GH6PM

我正在使用具有3个不同输入的 ADC0序列发生器1。寄存器中的值持续变化。转换后如何获得3个模拟输入、我如何从寄存器中读取它们。

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

    持续变化意味着什么? 预期的噪声。
    您使用什么作为信号?
    您使用什么来设置和读取 A/D?

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将在三个不同的输入端发送0、1 3.3。我按照示例中的所有步骤操作。但我不确定我的转换值在寄存器中的位置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有人认为(更多) cb1s (可能)会受到欢迎... 我把这个(详细)给您...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    #include
    #include
    #include "inc/hw_memmap.h"
    #include "inc/hw_types.h"
    #include "inc/hw_gpio.h"
    #include "driverlib/debug.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/sysctl.c"
    #include "driverlib/adc.h"
    #include "driverlib/gpio.h"
    #include "driverlib/gpio.c"
    #include "driverlib/interrupt.h"
    #include "driverlib/timer.h"
    //#include "inc/tm4c123ghp6.h"

    uint32_t value[4];
    uint8_t data=14;
    uint32_t a、b、c;

    main (空)




    //SysCtlClockSet (SYSCTL_SYSDIV_1_| SYSCTL_USE_OSC| SYSCTL_OSC_MAIN| SYSCTL_XTAL_16MHz);
    SysCtlClockSet (SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN| SYSCTL_XTAL_16MHz);

    SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
    //ADCReferenceSet (ADC0_BASE、ADC_REF_INT);

    GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_5);
    GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_4);
    GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_1);
    GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1);
    GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);
    GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_3);

    while (!SysCtlPeripheralReady (SYSCTL_Periph_ADC0))



    //ADCIntEnable (ADC0_BASE、3);
    ADCSequenceDisable (ADC0_BASE、1);
    ADCSequenceConfigure (ADC0_BASE、1、ADC_TRIGGER_PROCESSOR、0);


    ADCSequenceStepConfigure (ADC0_BASE、1、0、ADC_CTL_CH2);
    ADCSequenceStepConfigure (ADC0_BASE、1、1、ADC_CTL_CH9);
    ADCSequenceStepConfigure (ADC0_BASE、1、2、ADC_CTL_CH8 | ADC_CTL_IE | ADC_CTL_END);



    IntEnable (INT_ADC0SS1);
    ADCIntEnable (ADC0_BASE、1);
    ADCSequenceEnable (ADC0_BASE、1);

    IntMasterEnable();

    while (1)


    ADCProcessorTrigger (ADC0_BASE、1);





    空 ADC0IntHandler (空)

    //int i;

    while (!ADCIntStatus (ADC0_BASE、1、false))


    ADCIntClear (ADC0_BASE、1);
    ADCSequenceDataGet (ADC0_BASE、1、VALUE);

    /*
    for (i=0;i<3;i++){
    adc[i]=value[i];

    *
    a=value[0];
    b=值[1];
    C=value[2];

    if (值[0]& 0x00000800)

    GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1、DATA);


    否则 GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1、0);






    这是我的代码。 我不确定转换后是否得到正确的值。我将在 CH2发送1、在 Ch9发送0、在 Ch8发送3.3。我不知道转换后每个通道值的位置。是否有人可以帮助我解决这个问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的帖子在包含您的代码后会更加清晰(现在)-海报 Robert、我很感激它的包含。

    您写的"发送"(电压?) 3个模拟通道。 "向 MCU 的 ADC 施加或输入"电压是描述此类电压引入的"更常见"方法。 (发送 MOST 始终应用于数据传输)

    您的代码看起来类似于"Examples/外设"中的"Single_end.c"- IIRC、该代码可能不使用"中断"-这极大地加速和简化了您的任务。

    您报告"不确定 ADC 值"-但您没有描述这些值-它们可能会对您的诊断有用 crüe……

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

    我不明白您想解释什么、如何确认我的 ADC 工作正常。

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

    请提供以下详细信息:

    • 您如何创建这些不同的电压并将其连接到 MCU?
    • 您描述的"读数范围"有哪些错误/不正确?
    • 您是否可以"切换"远离"内部 ADC 基准?" (因为这简化了您的代码)

    您选择同时引入0V 和3V3证明其价值很小。   (这两个级别处于 ADC 的极端值-这可能会将您的精度降低一半)

    如果您的 ADC 电压仍然"干扰"-下面概述的是一种"快速/不干净"的方法、以最少的器件生成各种电压。

    您可以(更恰当/更有效)通过8、1K 电阻器(配置为简单(3个串联电阻器)分压器创建(轻松)输入电压。   (这3个电阻器链连接到3V3和 GND -您在第一个电阻器(其端的一个@ GND -因此3V3/3结果并馈送到 ADC); 第二组3 Rs 抽头位于第二个和第三个"R 结"(产生(3V3 * 2)/3; 只有2个电阻器(同样对3V3印象深刻-馈入第3个 ADC 通道。  (产生3V1/2)  如果有简单的运算放大器可用-这些电阻器可能会连接到放大器的(+)端子-放大器配置为"电压跟随器"。

    同样、您也不会"发送"此类电压-您的正在将其"介绍"到 MCU 的 ADC。

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

    [引用 USER="CB1_MOBIT)]您能否"切换"远离"内部 ADC 参考?" (因为这简化了您的代码)[/quot]

    很好的收获 我没有使用过具有内部基准的变体。 我快速看了一下、我的建议是远离它、除非你真的知道自己在做什么。

    Robert

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

    我将通过 AC opal RT 模型创建这些电压。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒的地方! 很棒的地方! 这样的竞争(几乎不可能)与"相似"或两个(尤其适合于一只"鹰眼")的竞争是否不是真的?

    海报的"一句回答"-(勉强)"一个 N 个问题"是"Krzy Making "。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不使用内部参考。您能否简单地解释一下。我应该在 ADC 模拟输入上应用什么输入来检查它是否正常工作。

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

    我今天是否没有做过,只是做过几个更早的帖子? (即通过3个电阻器的说明-串联连接-由3V3和 GND 供电?
    我不知道如何写"更简单"。

    您发布的代码之前包含"ADCReferenceSet (ADC0_BASE、ADC_REF_INT);" 、它不是吗?

    如果您"列出"不理解的内容-可能会应用其他描述-是否没有其他人(附近)可以阅读并更好地解释?

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

    [引用 user="rabbia Qamal"]我是通过 AC opal RT 模型创建这些电压。[/quot]

    嗯…

    嗯…

    嗯、我想如果你要违反 kiss、可能会有人说过你会犯整个 hog (可能不礼貌、但有一些)。 天哪!

    这种情况有很多种可能会严重的方法。

    两项建议

    1. 请遵循 CB1关于电压源的建议进行测试
    2. 坐下、回答我问的 CB1问题。 回答所有问题。 到目前为止、我认为您实际上只回答了一个问题、并尝试了另一个问题。
      1. 帮助我们为您提供帮助

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我正在正确连接 ADC、并且在使用一个通道时获得正确的结果。但是、当我使用多个通道时、我将获得正确的结果、但阵列的不同位置。结果的位置不断变化。
    请告诉我如何解决这个问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="rabbia Qamar"]......正在正确连接 ADC,并且得到正确的结果... (开)... 一个通道...(仅限!)...[/报价]

    那么、"将您的电压源连接从该(后续)通道更改为(故障)通道-但一次仅一个(新)连接是否有意义?  重复测试、记录并报告您的结果。   这是"kiss"-您的任务是确认您(可能)向故障通道注入相同(后续)的电压、从而使您能够更好地检测"连接错误"。   (这似乎是最有可能的-在诊断的早期阶段。)

    此描述-只有一个通道(显然)工作且"位置"发生变化-未提前提供...