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.

[参考译文] MSP430FR2311:如何实现200ksps 的转换速率

Guru**** 2589275 points
Other Parts Discussed in Thread: MSP430FR2311

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/628097/msp430fr2311-how-to-achieve-200-ksps-conversion-rate

器件型号:MSP430FR2311

您好、

 我正在使用 MSP430FR2311 微控制器... 10位 ADC

 任何人都可以告诉我如何计算采样频率… ??

 我何时可以实现200ksps 的最大转换速率...?

 Wright 现在我已经配置了 ADC... 时钟= MODOSC

                                 采样时间= 16个 ADC10CLK 周期

                                  REF:1.5VREF + VSS (内部基准)

                                 分辨率:10位  

                                

现在、我仅实现了23.86kSPS

我已附上我的代码... 如果有任何错误,请通知我… 谢谢大家

我的代码:

int main (void)
{


P1DIR |= BIT0;

//配置 ADC A1引脚
P1SEL0 |= BIT1;
P1SEL1 |= BIT1;


PM5CTL0 &=~LOCKLPM5;

//配置 ADC10
ADCCTL0 |= ADCSHT_2 | ADCON; // ADCON、S&H=16 ADC 时钟
ADCCTL1 |= ADCSHP; // ADCCLK = MODOSC;采样定时器
ADCCTL2 |= ADCRES; // 10位转换结果
ADCMCTL0 |= ADCINCH_1 | ADCSREF_1; // A1 ADC 输入选择;Vref=1.5v
ADCIE |= ADCIE0; //启用 ADC 转换完成中断

//配置参考
PMMCTL0_H = PMMPW_H; //解锁 PMM 寄存器
PMMCTL2 |= INTREFEN; //启用内部基准
__delay_cycles (400); //基准趋稳延迟
while (1)
{
ADCCTL0 |= ADCENC | ADCSC; //采样和转换开始
_bis_SR_register (GIE); // LPM0、ADC_ISR 将强制退出

}
}

// ADC 中断服务例程
#if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__)
#pragma vector=adc_vector
__interrupt void adc_isr (void)
#elif defined (__GNU__)
void __attribute__((interrupt (adc_vector))))) adc_isr
#else error
编译器#void (void)!
#endif
{
switch (__evo_in_range (ADCIV、ADCIV_ADCIFG))
{
案例 ADCIV_NONE:
中断;
ADCIV_ADCOVIFG 案例:
中断;
案例 ADCIV_ADCTOVIFG:
中断;
ADCIV_ADCHIIFG 案例:
中断;
ADCIV_ADCLOIFG 案例:
中断;
ADCIV_ADCINIFG 案例:
中断;
案例 ADCIV_ADCIFG:
P1DIR ^= BIT0;
中断;
默认值:
中断;
}

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

    您好!

    采样频率可通过以下公式计算:

    时钟频率/(位数+1)+采样保持周期)。

    因此、假设 MODOSC 频率为4.8MHz、您的采样频率应为4.8MHz /(11 + 16)= 178ksps。

    要增加采样频率、您需要使用更高的时钟速率或更短的采样保持时间。 此外、如何测量采样率? 如果您依赖 GPIO 切换、则可能会增加延迟、从而降低测量的转换速率。

    此致、

    Nathan

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

    Thans for Prompt Reply。

    我将通过切换 GPIO 来测量采样率。

    我还可以通过其他方法实际测量采样率吗?

    开尔文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有没有人能告诉我如何实际测量采样率?

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

    切换 GPIO 应该是一种正常的方法。 您是否可以尝试不将 ADC 使能和全局中断使能置于 while 环路中? 这可能会占用您看到的额外时间。 因此、将您的 while 环路替换为如下所示的内容:


    ADCCTL0 |= ADCENC | ADCSC; //采样和转换开始
    _bis_SR_register (GIE); // LPM0、ADC_ISR 将强制退出

    while (1);

    此外、您不会进入低功耗模式、因此无需解锁 PMM 寄存器。

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

    我曾尝试过你的建议。
    我之前也尝试过相同的方法。 但是、采样率仍然为27.62kHz
    我预计为200kHz。
    是否有观看 MODOSC 时钟的选项?


    //配置 ADC10
    ADCCTL0 |= ADCSHT_2 | ADCON; // ADCON、S&H=16 ADC 时钟
    ADCCTL1 |= ADCSHP;
    ADCCTL2 |= ADCRES; //内部基准选择
    ADCMCTL0 |= ADCINCH_1 | ADCSREF_1; // A1 ADC 输入选择;Vref=1.5V
    ADCIE |= ADCIE0; //启用 ADC 转换完成中断

    //配置引用
    PMMCTL0_H = PMMPW_H; //解锁 PMM 寄存器
    PMMCTL2 |= INTREFEN; //启用内部基准
    _DELAY_CYCLES (400); //基准趋稳延迟


    ADCCTL0 |= ADCENC | ADCSC; //采样和转换开始
    _bis_SR_register (GIE);



    while (1)








    Kelvin Kalariya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这个问题通过增加 ADC 时钟来解决

    谢谢
    Kelvin Kalariya