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:MSP432

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/588670/ccs-msp432p401r-msp432

器件型号:MSP432P401R

工具/软件:Code Composer Studio

本示例中的 ADC 采样频率是多少? (adc14_single_conversion 重复)

dev.ti.com/.../

如果上述链接不起作用、我捕获了此示例位置的图像。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尽可能快。
    如果您想查看速度有多快、可以切换电路板上的 LED。
    尽管 TI 的某个人可能已经测量过它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     我测量过它。 频率约为136kHz。 I 偶数输入10kHz 模拟正弦波、其工作正常(一个周期内13个样本)。 但为什么它是136KHz? 什么决定了该采样频率? 更详细地说、如何更改该频率?

    谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它是 ISR (中断服务例程)软件的速度吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为这是一项声明:
    MAP_ADC14_initModule (ADC_CLOCKSOURCE_MCLK、ADC_PREDIVIDER_1、ADC_DIVIDER_4、
    0);
    您可以尝试 ADC_divider _1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这非常好、它的额定速率仅为1MSPS、因此您的速率大约为20%。 ^μ A)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     我将这一发言修改如下。
    MAP_ADC14_initModule (ADC_CLOCKSOURCE_MCLK、ADC_PREDIVIDER_1、ADC_DIVIDER_2、0);
    根据我的理解、我认为它应该是双倍(2x136KHz)。 但是、测量结果为180KHz (转换速率)。 到目前为止,我还不能理解。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已尝试在"全球"和"整个计划"两个级别上启用优化。 但该程序不再起作用。 换言之、它仅在使用优化编译后才起作用、"关闭"。 但我认为这个 CCS 的问题、而不是 ADC。

    仅供参考、我发布了计划中更改的部分、如下所示。

    我只添加了2项内容:
    1、切换 P1.0、以便我可以测量中断速率。
    2、阵列"ADC_DMA_BUF_A[4096]";因此我可以保存数字化数据。


    volatile uint16_t ADC_DMA_BUF_A[4096];
    volatile uint16_t * adc_buffer_address;
    .
    ADC_buffer_address =&ADC_DMA_BUF_A[0];

    //将 P1.0配置为输出
    GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);

    while (1)

    COUNTER++;




    /* ADC 中断处理程序。 每当发生转换时都会调用此处理程序
    *已针对 ADC_MEM0完成。
    *
    void ADC14_IRQHandler (void)

    uint64_t status = MAP_ADC14_getEnabableInterruptStatus();
    MAP_ADC14_clearInterruptFlag (status);

    IF (ADC_INT0和状态)

    *ADC_buffer_address++= MAP_ADC14_getResult (ADC_MEM0);
    MAP_ADC14_toggleConversionTrigger ();
    GPIO_toggleOutputOnPin (GPIO_PORT_P1、GPIO_PIN0);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能无法获得具有1MSPS 的完整14位。 从系列参考中:

    "对于8位、10位、12位和、模数转换需要9、11、14和16个 ADC14CLK 周期
    分别为14位分辨率模式。 SHI 信号源的极性可通过反转
    ADC14ISSH 位。 SAMPCON 信号控制采样周期和转换开始。 时间
    SAMPCON 为高电平、采样有效。 高到低 SAMPCON 转换启动模数转换
    转换。 两种不同的采样时序方法由控制位 ADC14SHP 扩展采样定义
    模式和脉冲模式。 有关 SHI 源的可用定时器、请参阅《特定器件数据手册》。"

    TI 的某个人必须对此发表评论。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    如前所述、采样频率是 ADC 时钟(48Mhz)的函数、也是 ISR 切换下一次转换所需的时间。 我建议查看 TRM、但一般来说、您可以期望16个时钟用于转换、4个时钟用于采样保持、另一个时钟用于将结果加载到 ADC 存储寄存器中。 中断服务和代码实际执行的指令/时钟周期数是 ARM M4的函数(即我不知道-请记住、闪存等待状态设置为2)。

    您可以通过几种不同的方法来控制采样频率、但主要可以使用计时器触发 ADC、也可以简单地让 ADC 进入自动模式以尽可能快地进行采样。

    以下是一些示例:
    e2e.ti.com/.../2063942

    dev.ti.com/.../

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

    谢谢 Chris。

    1.能否将 ADC 时钟设置为24MHz (48MHz/2)? 根据数据表、ADC 的最大时钟为25MHz。

    2.我尝试设置自动模式;下面是我所做的,但它不起作用。 一旦我在 ISR 中注释掉 TOGGLE 语句、就不会发生 ADC 中断。  

    在使用计时器触发 ADC 方面、我让它在14位分辨率下以高达200kHz 的采样率工作。 但我不能得到任何高于此值的东西。 收集足够的信息后、我将在 E2E 上发布有关此问题的另一个主题。

    /*将采样定时器配置为自动模式*/
    ///map_ADC14_enableSampleTimer (adc_manual_iteration);
    MAP_ADC14_enableSampleTimer (ADC_AUTOMATE_DIOTIVation);

    //注释掉切换转换触发器。

    void ADC14_IRQHandler (void)

    uint64_t status = MAP_ADC14_getEnabableInterruptStatus();
    MAP_ADC14_clearInterruptFlag (status);

    IF (ADC_INT0和状态)

    *ADC_buffer_address++= MAP_ADC14_getResult (ADC_MEM0);
    //map_ADC14_toggleConversionTrigger ();
    GPIO_toggleOutputOnPin (GPIO_PORT_P1、GPIO_PIN0);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据数据表、我认为当它以1MSPS 运行时、应该能够获得14位分辨率
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    要获得1Msps、您需要使用 DMA 移动数据。 ISR 执行此操作太慢。 如果您对示例有任何疑问,请告诉我: e2e.ti.com/.../2063942

    此致、
    Chris