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/MSP432P401R:多通道 ADC

Guru**** 2540720 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/805037/ccs-msp432p401r-multichannel-adc

器件型号:MSP432P401R

工具/软件:Code Composer Studio

我 使用 AD1、AD16、AD17对数据进行采样、但重新缓冲 没有数字。 我想知道  我怎么做了?

ADC14_enableModule();
ADC14_initModule (ADC_CLOCKSOURCE_SMCLK、ADC_PREDIVIDER_1、ADC_DIVIDER_1、0);


/*在*/中为模拟配置 GPIO
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P5、GPIO_PIN7|GPIO_PIN6
|GPIO_PIN4、GPIO_TICE_MODULE_FUNCTION);
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P9、
GPIO_PIN0 | GPIO_PIN1、GPIO_Terti_MODULE_FUNCTION);

/*配置 ADC 内存(ADC_MEM1、16、17重复)*/
ADC14_configureMultiSequenceMode (ADC_MEM1、ADC_MEM17、TRUE);
ADC14_configureConversionMemory (ADC_MEM1、ADC_VREFPS_EXTPOS_VREFNEG_EXTNEG、
ADC_INPUT_A1、false);
ADC14_configureConversionMemory (ADC_MEM16、ADC_VREFPS_EXTPOS_VREFNEG_EXTNEG、
ADC_INPUT_A16、false);
ADC14_configureConversionMemory (ADC_MEM17、ADC_VREFPS_EXTPOS_VREFNEG_EXTNEG、
ADC_INPUT_A17、false);

/*在通道7 (序列结束)上进行转换时启用中断
*已完成并启用转换*/

ADC14_enableInterrupt (ADC_INT17);
/*启用中断*/
INTERRUPT_enableInterrupt (INT_ADC14);
interrupt_enableMaster();

/*将采样计时器设置为自动单步执行序列
*转换。
*
ADC14_enableSampleTimer (ADC_AUTOMODIFY_DIOTIVation);

/*触发样本开始*/
ADC14_enableConversion();
ADC14_toggleConversionTrigg();

/*设置分辨率*/
ADC14_setResolution (ADC_14BIT);


void ADC14_IRQHandler (void)
{
uint64_t status;

STATUS = MAP_ADC14_getEncableInterruptStatus();
MAP_ADC14_clearInterruptFlag (status);

if (status & ADC_INT17)
{
MAP_ADC14_getMultiSequenceResult (resultsBuffer);
ADC14_getResultArray (ADC_MEM1、ADC_MEM17、resultsBuffer);
}
}

在 ADC IRQ 期间  、ADC14_getResultArray (ADC_MEM1、ADC_MEM17、resultsBuffer) 和   

ADC14_getMultiSequenceResult (resultsBuffer)  没有任何结果

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

    你好。  以下是需要考虑的一些事项:

    (1)您使用 SMCLK 作为 ADC 时钟和 ADC 采样计时器来建立采样保持时间。  这意味着采样保持时间为4个(默认) SMCLK 周期。  请确保此时间足够长。  采样电容器是与不同通道进行多路复用的电容器、因此如果您没有提供足够的时间、则只需测量采样电容器上没有相对于您要测量的通道发生变化的电压。

    (2)您在开始转换后设置分辨率(ADC14_setResolution)。 仅当 ADC14ENC = 0 (禁用)时、才能调整分辨率。  此 API 调用将不起作用、但默认值也是14。  影响为"0"、但这不是好的做法。  

    (3)我建议将序列更改为仅使用内存位置0-2、分别映射到通道1、16和17。

    ADC14_configureMultiSequenceMode (ADC_MEM0、ADC_MEM2、TRUE);
    ADC14_configureConversionMemory (ADC_MEM0、ADC_VREFPS_EXTPOS_VREFNEG_EXTNEG、
    ADC_INPUT_A1、false);
    ADC14_configureConversionMemory (ADC_MEM1、ADC_VREFPS_EXTPOS_VREFNEG_EXTNEG、
    ADC_INPUT_A16、false);
    ADC14_configureConversionMemory (ADC_MEM2、ADC_VREFPS_EXTPOS_VREFNEG_EXTNEG、
    ADC_INPUT_A17、false); 
    (笑声)
    ADC14_enableInterrupt (ADC_INT2); 

    (4) 由于您选择了重复自动扫描- multiSequence 为 true 并且 sampeTimer 为 automatic_iteration、因此在访问转换结果时需要考虑时序。  例如、在中断之后、但在读取转换结果之前、可以再次测量通道 A1。  如果三个测量值需要与时间相关、则应使用不同的触发器或 DMA 以乒乓方式移动数据。   

    此致、
    Chris

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、在哪里可以找到用于传输多通道 ADC 结果的 DMA 交替模式?
    我是否可以使用计时器 A 触发 ADC,如何尽快对其进行配置,再次感谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../adc14_5F00_multiple_5F00_channel_5F00_repeat_5F00_timera_5F00_source_5F00_05a.c

    DMA 交替模式 对多通道 ADC 结果并不实际可行。  我建议使用散聚模式。  请找到随附的示例。  它有点过时、但应该为您提供所需的信息/结构。

    此致、

    Chris