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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/675944/ccs-msp432p401r-multiple-adc-channels

器件型号:MSP432P401R

工具/软件:Code Composer Studio

您好!  

我正在使用 Resource Explorer 中的示例/演示:

boostxl_edumki_microphonefft_msp432p401r 和  MSP-exp432p401r_grlib_example


我正在集成触摸屏 LCD 并创建一个菜单来转到不同的显示页面。 其中一个页面是播放我的项目的音频信号的 FFT。 在 FFT 屏幕上、我想在右上角有一个"X"来触摸、然后退出 FFT 显示屏幕以返回主菜单。 我遇到的问题是、触摸屏和 FFT 具有两个独立的 ADC 配置。 下面显示了 ADC 配置的两个片段:

FFT:

MAP_ADC14_enableModule ();//启用 ADC 块

MAP_ADC14_initModule (ADC_CLOCKSOURCE_MCLK、ADC_PREDIVIDER_1、ADC_DIVIDER_1、0);
                            // MCLK - CPU 的时钟源
                            //预分频器_1 -在将给定的时钟源馈入主时钟分频器之前对其进行分频。 (默认值)
                            // Divider_1 -对预分频时钟源进行分频(默认)
                            // 0 - ADC_NOROUTE,无内部信道掩码

MAP_ADC14_setResolution (ADC_14BIT);

MAP_ADC14_setSampleHoldTrigger (ADC_TRIGGER_SOURCE1、false);
                            //触发源1 -设置 ADC 模块触发源。
                            //错误-上升沿触发信号

MAP_ADC14_setSampleHoldTime (ADC_PULSE_WIDTH_4、ADC_PULSE_WIDTH_4);

MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P4、GPIO_PIN3、// ADC 端口4引脚3 -- A10
GPIO_TICE_MODULE_FUNCTION);

//配置 ADC 内存
MAP_ADC14_configureSingleSampleMode (ADC_MEM9、TRUE);// ADC_MEM0 -将 ADC 模块配置为使用单个 ADC 存储器位置进行采样/转换。
                                                   // True -执行初始采样/转换集后、使 ADC 模块恢复采样。

// //
MAP_ADC14_configureConversionMemory (ADC_MEM9、ADC_VREFPS_AVCC_VREFNEG_VSS、
ADC_INPUT_A10、false);
                      // ADC_MEM0 -要配置的单个 ADC 存储器位置
                      // Vref = 3.3至 GND
                      // A10 -用于 ADC 采样的通道
                      //错误-差动模式关闭
// //
//将 ADC 结果格式设置为有符号二进制
MAP_ADC14_setResultFormat (ADC_signed_binary);
MAP_ADC14_enableConversion();

 

touch:


MAP_ADC14_initModule (ADC_CLOCKSOURCE_MCLK、ADC_PREDIVIDER_1、// ADCOSC

ADC_divider _1、0);
MAP_ADC14_setResolution (ADC_14BIT);

MAP_ADC14_enableSampleTimer (ADC_MANUAL_DEACation);
MAP_ADC14_setSampleHoldTime (ADC_PULSE_WIDTH_96、ADC_PULSE_WIDTH_96);
MAP_ADC14_setSampleHoldTrigger (ADC_TRIGGER_ADCSC、false);

MAP_ADC14_enableModule();

/*将 Y+输入配置为内存缓冲器0。 *
MAP_ADC14_configureConversionMemory (touch + Y +内存、
ADC_VREFPOS_AVCC_VREFNEG_VSS、
touch Y +输入、
false);

/*将 X+输入配置到内存缓冲区1。 *
MAP_ADC14_configureConversionMemory (touch + X +内存、
ADC_VREFPOS_AVCC_VREFNEG_VSS、
touch X +输入、
false);

for (i = 0;i < touch 过采样;i++)

MAP_ADC14_toggleConversionTrigger ();
status = MAP_ADC14_getInterruptStatus();
while (status!= touch X + IFG)

status = MAP_ADC14_getInterruptStatus();

aDCtemp += ADC14->MEM[1];

aDCtemp =(aDCtemp >> touch 平均除数);

我在 ADC 寄存器中注意到的主要差异是 FFT 使用的

单通道-重复转换(ADC14CONSEQ = 10)

SAMPCON 信号来源于采样输入信号(ADC14SHP = 0)。

触摸屏 ADC 的使用

单通道-单次转换(ADC14CONSEQ = 00)

SAMPCON 信号由 脉宽为96的采样定时器(ADC14SHP = 1)提供。  

我知道有一个模拟输入多路复用器可以选择要转换的通道、那么是否有办法同时使用这两种 ADC 配置并在通道之间进行选择以同时或按顺序运行? 多序列模式是否是可能的解决方案?

谢谢!

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

    通道采样的功能参数不同、无法在多序列运行模式下设置。 由于触摸屏需要间歇性采样、因此您必须在两组 FFT 采集之间更改配置。

    换言之、当在 FFT 页面上时、操作顺序将是

    FFT 数据捕获->检查触摸-> FFT 数据捕获。

    始终这样做的另一种方法是使用 DMA 的散聚机制来重新配置 DMA、如 SDK 示例所示

    C:\ti\simplelink_msp432p4_sdk_2_10_00_14\examples\nortos\MSP_EXP432P401R\demos\CMSIS_DSPLib_Chithmsp432p401r
    C:\ti\simplelink_msp432p4_sdk_2_10_00_14\examples\nortos\MSP_EXP432P401R\demos\CMSIS_DSPLib_ULP
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Amit、

    因此、正如您提到的、我更改了配置。 运行 FFT、然后配置 ADC 进行触摸、检查是否检测到触摸、否则重新初始化 FFT ADC 并继续该序列。

    我担心 FFT 的性能会受到其时钟周期的影响、该时钟周期主要用于停止 FFT、初始化 ADC 以进行触摸、检查触摸、然后重新初始化 FFT、但老实说、这并不明显、尤其是并行运行16位时。 触控是一个小问题、主要是因为它检查得非常快、但我可以触摸"X"按钮、离开屏幕。 检测到触控时、我可以运行小型 for loop、以延长检测触控的时间。

    感谢您的建议!

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

    只要以固定的采样频率间隔采集 FFT 的采样数据、FFT 性能就不会受到影响。 FFT 是离散的、只依赖于样本集、而不依赖于滚动窗口。

    对于触摸、是的、您可以将触摸的采样周期更改为2个连续 FFT 窗口、然后触摸检查、在触摸周期中使循环更长。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Amit、

    这是有道理的、谢谢!

    至于触摸、我可以修改 ADC14SHT0和 ADC14SHT1寄存器来增加采样间隔吗? 现在它设置为96
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jacob、

    是的、只要值不超过 TRM 允许的最大值、您就可以更改该值。