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.

[参考译文] LAUNCHXL-F28379D:LAUNCHXL-F28379D

Guru**** 652440 points
Other Parts Discussed in Thread: LAUNCHXL-F28379D, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1198293/launchxl-f28379d-launchxl-f28379d

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件:C2000WARE

您好,

  我准备在 ADC B、C、D 的连续模式下使用单端 ADC 但我想在连续模式下将 ADC A 用作差分、但我无法这样做。 我想将 A2和 A3用作差分信号、并将 A4和 A5用作其他差分信号。 它在 while 循环中以正常模式工作、但我无法在连续模式下工作。

请找到我的代码并建议我做什么。 它提供了错误的数据。

void Setup_AdcDifferentialContinuous()
{
uint16_t acqps;
acqps = 63; // 150ns



ADC_setPrescaler(ADCA_BASE, ADC_CLK_DIV_3_0);

//
// Set resolution and signal mode (see #defines above) and load
// corresponding trims.
//
ADC_setMode(ADCA_BASE,ADC_RESOLUTION_16BIT, ADC_MODE_DIFFERENTIAL);


// Set pulse positions to late
//
ADC_setInterruptPulseMode(ADCA_BASE, ADC_PULSE_END_OF_CONV);

//
// Power up the ADCs and then delay for 1 ms
//
ADC_enableConverter(ADCA_BASE);


TRACE_I(ADC_TRACE,"adc differential continuous mode config init \r\n");

ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_SW_ONLY,
ADC_CH_ADCIN2, acqps);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER0, ADC_TRIGGER_SW_ONLY,
ADC_CH_ADCIN3, acqps);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_SW_ONLY,
ADC_CH_ADCIN4, acqps);
ADC_setupSOC(ADCA_BASE, ADC_SOC_NUMBER1, ADC_TRIGGER_SW_ONLY,
ADC_CH_ADCIN5, acqps);


ADC_setInterruptSOCTrigger(ADCA_BASE, ADC_SOC_NUMBER0,
ADC_INT_SOC_TRIGGER_ADCINT1);
ADC_setInterruptSOCTrigger(ADCA_BASE, ADC_SOC_NUMBER1,
ADC_INT_SOC_TRIGGER_ADCINT1);
//
// Disable Interrupt flags
//
ADC_disableInterrupt(ADCA_BASE, ADC_INT_NUMBER1);

//
// Enable continuous mode
//
ADC_enableContinuousMode(ADCA_BASE, ADC_INT_NUMBER1);
//
// Configure interrupt triggers
//
ADC_setInterruptSource(ADCA_BASE, ADC_INT_NUMBER1, ADC_SOC_NUMBER0);
//ADC_setInterruptSource(ADCA_BASE, ADC_INT_NUMBER1, ADC_SOC_NUMBER1);

ADC_enableInterrupt(ADCA_BASE, ADC_INT_NUMBER1);

// Clear interrupts
HWREGH(ADCA_BASE + ADC_O_INTFLGCLR) = 0x000F;


ADC_forceMultipleSOC(ADCA_BASE, ADC_FORCE_SOC0 | ADC_FORCE_SOC1);

}

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

    大家好、Vikas、

    您能否提供您正在使用的输入信号? 您是否已验证这些器件是否在单端模式下正确采样? 我将尝试确认此器件的差分模式配置设置、并在明天返回给您。

    此致、

    Omer Amir

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

    大家好、Vikas、

    您能不能澄清数据的含义是什么错误? 您是否获得了任何结果? 结果的电压电平是多少? 输入信号应与附加的图像类似。 您的输入是如何配置的、您能否提供原理图?

    此致、

    Omer Amir

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

    您好,Omer,

        我正在使用 LaunchPad、但我没有获取数据。 在引脚上、我应该得到大约42000的数据、但得到400、这意味着它不起作用。 您能不能查看我的代码并告诉我这是什么问题。

    针对单端配置使用的代码与 ADCB 相同。

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

    对于 采用以下配置的差分 ADC、这些输入在 while 环路中正常工作。

    void ADCA_different_init (void)

    EALLOW;
    AdcaRegs.ADCCTL2.bit.prescale = 6;//将 ADCCLK 分频器设置为/6
    AdcaRegs.ADCCTL2.bit.resolution = resolution_16BIT;//选择分辨率-1作为 ADCA 的16位
    AdcaRegs.ADCCTL2.bit.SGNALMODE = SIGNAL_DEPTICAL;  

    AdcaRegs.ADCCTL1.bit.INTPULSEPOS = 1;//对于 ADCA

    AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;//对于 ADCA

    DELAY_US (1000);//延迟1ms 以允许 ADC 加电时间

    EDIS;

    void ADCA_特色 Setup_Software (void)

    uint16 acqps;

    acqps = 63;//320ns

    //ADCA
    EALLOW;
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 2;//SOC0将转换 adcA 的引脚 A2
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 3;//SOC1将转换 adcA 的引脚 A3
    AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;//采样窗口为 acqps + 1个 SYSCLK 周期

    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 4;//SOC0将转换 adcA 的引脚 A4
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 5;//SOC1将转换 adcA 的引脚 A5
    AdcaRegs.ADCSOC1CTL.bit.ACQPS = acqps;//采样窗口为 acqps + 1个 SYSCLK 周期

    在 main 中、我正在调用。

    //ADCA_different_init ();

    //ADCA_INLOCALSETUP_Software();

    while (1)

        AdcaRegs.ADCSOCFRC1.ALL = 0x0003;//SOC0和 SOC1 = 1;//对于 ADCA

       ADC_Result1 = AdcaResultRegs.ADCRESULT0;

       ADC_Result2 = AdcaResultRegs.ADCRESULT1;

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

    大家好、Vikas、

    [引用 userid="531452" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1198293/launchxl-f28379d-launchxl-f28379d/4520021 #4520021"]我应该得到大约42000的数据,但得到400[/引用]

    您能否为此 差分输入提供两个输入的范围? 它们应该是180度的相位差。

    关于上面的代码、我看到您没有使用任何类型的 ADC 中断。 您是否有理由不至少轮询转换结束时的标志? 触发 SOC 后、您将立即读取结果、但不能保证结果准备就绪。

    此致、

    Omer Amir

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

    我想使用中断并尝试在连续模式下使用差分 ADC。 以上  是我正在使用的代码、但它不起作用。

    正引脚 A2值大于我们提供的 A3值。 像 A2一样、我们提供2v、A3具有1.5伏特、因此我们应该得到0.5伏特的数字值。  应为32767+(65535/6 * 0.5)。  

    请帮助说明 上述程序不起作用的原因。

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

    我对连续模式下的差分 ADC 没有太多了解、您能提供连续模式下的差分 ADC 的任何应用代码吗?

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

    大家好、Vikas、

    [引用 userid="531452" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1198293/launchxl-f28379d-launchxl-f28379d/4521158 #4521158"]我想使用中断并尝试在连续模式下使用差动 ADC [/quot]

    我看到您配置中断和连续模式、但有两个问题: 1) 1)第39-42行正在覆盖中断配置、因此我不确定哪个 SOC 应触发中断1、和2) 当您读取结果时、您没有检查中断的正确标志、因此该配置没有执行任何操作。

    [引用 userid="531452" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1198293/launchxl-f28379d-launchxl-f28379d/4521158 #4521158"]正引脚 A2值大于我们提供的 A3值。 像 A2一样、我们提供2v、A3具有1.5伏特、因此我们应该得到0.5伏特的数字值。  应为32767+(65535/6 * 0.5)。  [/报价]

    您能否提供示波器读数的屏幕截图或图片?

    此致、

    Omer Amir

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

    /

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

    大家好、Vikas、

    您应该 使用下表从结果中计算电压:

    似乎您配置输入的方式、它们将始终偏移约1.2V。 如果这是预期的、那么没关系。

    关于读取结果400当您需要42000时、请尝试轮询适当的中断标志以等待结果实际就绪、然后再读取寄存器。 确保2个输入未连接到任何加载任何引脚的输入、 并尝试在这两个通道上使用单端模式、以查看您获得的结果是否符合预期。 尝试这些操作、让我知道具体情况。

    此致、

    Omer Amir

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

    器件型号:LAUNCHXL-F28379D

    我在使用差分 ADC 连续模式时,我想检查 ADCINT1中断为 ADC 生成的速度,我如何为该中断生成任何 ISR,我应该为该中断的矢量表选择哪个宏。

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

    如何检查、 ADCINT1中断的触发速度以及 ADC 的工作速度、我应该使用哪个宏来从矢量表中执行此中断。

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

    大家好、Vikas、

    请不要为相同的问题创建重复的主题、这 只会给解决问题带来更多困难。

    如果您想为 ADC 使用 ISR、您可以导入示例并查看它们通常是如何设置的、因为它可以更详细地概述设置 ISR 和中断所需执行的操作。 可以在 C2000Ware_4_XX_XX_XX\driverlib\f2837xd\examples\CPU1\ADC 中找到一个示例。 您可以查看 有关在 ADC 上使用连续模式的 ADC_Ex5_SoC_Continuous 示例。 如果您对此有其他疑问、请告诉我。

    此致、

    Omer Amir