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/MSP430FR2153:MSP430FR2153控制器 GUI 工具

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/892818/ccs-msp430fr2153-msp430fr2153-controller-gui-tool

器件型号:MSP430FR2153
主题中讨论的其他器件: MSP430FR2433MSP430FR2355

工具/软件:Code Composer Studio

您好!

我在项目中使用的是 MSP430FR2153控制器。 我们已经使用控制器开发了定制板。

我是第一次使用 MSP 控制器。 用于此控制器的任何 GUI 工具。

这是新系列、因此我找不到任何适用于此控制器的 GUI 工具和参考应用手册。

您能不能建议在 不使用 ADC ISR 的情况下如何读取两个以上的模拟通道,有没有任何方法可以这样做。

此致、

Bharat

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

    您好 Bharat、

    遗憾的是、没有 GUI 工具。

    但是,请查看 Resource Explorer (位于 CCS 中的"Help>Getting Started"菜单中)或直接联机。  有一些示例展示了如何为此器件执行此操作。  下面是 其中一个示例的链接。

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

    您好!

    在本示例中、使用 ADC ISR 方法进行 ADC 读取我想在不使用 ISR 的情况下读取 ADC、例如序列转换方法。

    请帮我提供不使用 ADC ISR 的按序列转换读取示例代码 ADC。

    此致、

    Bharat

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

    Bahrat、您好!

    这应该适合您。  无中断。  我在 Launchpad 上设置它、它可以正常工作。

    // 8位 ADC 转换结果数组
    unsigned char adc_result[3];                                    

    int main (空)

       //停止 WDT
       WDTCTL = WDTPW | WDTHOLD;       
       
       //配置 ADC A0~2引脚
       SYSCFG2 |= ADCPCTL0 | ADCPCTL6 | ADCPCTL7;
     
       //禁用 GPIO 上电默认高阻抗模式以激活
       //先前配置的端口设置
       PM5CTL0 &=~LOCKLPM5;

       //配置 ADC
       ADCCTL0 &=~ADCENC;                         //禁用 ADC
       ADCCTL0 |= ADCMSC | ADCSHT_2 | ADCON;       // 16ADCclks、ADC 打开
       ADCCTL1 |= ADCSHP | ADCSHS_0 | ADCCONSEQ_1; //软件开始转换,重复序列

       ADCCTL2 &=~ADCRES;                         // 8位转换结果
       ADCMCTL0 |= ADCMSC | ADCINCH_7 | ADCSREF_0; // A0~7 (EOS);Vref=VCC
       ADCIE &=~ADCIE0;                           //无中断

       ADCCTL0 |=(ADCENC | ADCSC);                //开始转换

       while (!(ADCIFG & ADCIFG0));
       ADC_Result [2]= ADCMEM0;                    //读取转换结果
                                                    //从最高通道开始
       ADCCTL0 |=(ADCENC | ADCSC);                //开始下一次转换

       while (!(ADCIFG & ADCIFG0));
       ADC_Result [1]= ADCMEM0;
       ADCCTL0 |=(ADCENC | ADCSC);                //开始最后一次转换

       while (!(ADCIFG & ADCIFG0));
       ADC_Result [0]= ADCMEM0;

       while (1);


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

     您好 Dennis、

    感谢您的支持。

    SYSCFG2 |= ADCPCTL0 | ADCPCTL6 | ADCPCTL7;在 MSP430FR2153冷却器中不可用。

    如果我在2153控制器中将最高的 ADC 配置为 ADC1、则 ADC1和 ADC0的读数正常。

    但我想使用 ADC8、ADC5、ADC1和 ADC0、这样会在序列转换中产生问题。

    如果我将最高 ADC 定义为 ADC8、则所有 ADC 值都不正确。  

    我不明白为什么2153系列中不提供单个 ADC 配置位。

    如果您有任何建议、请帮助我。

    此致、

    Bharat

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

    您好 Bharat、

    [引用 USER="Bharat Chauhan"] SYSCFG2 |= ADCPCTL0 | ADCPCTL6 | ADCPCTL7; 在 MSP430FR2153 控制器中不可用。[/quot]

    SYSCFG2 ADC 通道适用于 MSP430FR2433、这就是我拥有的功能。  很抱歉造成混淆。

    好的、让我们看看您是否可以获得 我最初指向的示例代码。  您必须修改 PxSEL 位以匹配要使用的模拟通道、然后使用最高通道设置 ADCMCTL0。

    如果可以的话、请告诉我。

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

    您好 Dennis、

    你是对的。

    但是、如果我将 ADCMCTL0 寄存器中的最高 ADC 配置为 ADC1、则 ADC1和 ADC0的 ADC 读数值正常。  

    但我想使用 ADC8、ADC5、ADC1和 ADC0。

    因此、我将  ADCMCTL0 寄存器中的最高 ADC 配置为 ADC8、因此我对所有所需 ADC 的读取不正确。

    在序列模式下、ADC 读取从最高通道到 A0值发生。 但有些模拟通道用于不同的用途。

    请提出解决此问题的任何想法。

    此致、

    Bharat

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

    您好 Bharat、

    请尝试以下操作。  我无法在4个模拟输入端提供稳定电压、但我在每个通道上看到的结果会有所不同。

    int main (空)

       WDTCTL = WDTPW | WDTHOLD;                                  //停止 WDT

       //配置 ADC A1~2引脚
       P1SEL0 |= BIT1 + BIT2 + BI5 + BIT8;
       P1SEL1 |= BIT1 + BIT2 + BIT3 + BIT2;

       //禁用 GPIO 上电默认高阻抗模式以激活
       //先前配置的端口设置
       PM5CTL0 &=~LOCKLPM5;

       //配置 ADC

       ADCCTL0 |= ADCMSC | ADCSHT_2 | ADCON;                      // 16ADCclks、MSC、ADC 打开
       ADCCTL1 |= ADCSHP | ADCCONSEQ_1 | ADCSSEL_1;               // ADC 时钟 ACLK、采样计时器、s/w 三态、单序列

       ADCCTL2 &=~ADCRES;                                        //清除 ADCCTL 中的 ADCRES
       ADCCTL2 |= ADCRES_2;                                       // 12位转换结果
       ADCMCTL0 |= ADCINCH_8 | ADCSREF_1;                         // A0~2 (EOS);Vref=2V

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

       while (1)
       {
           while (ADCCTL1和 ADCBUSY);                               //等待 ADC 内核处于活动状态

           for (i=8;i>0;i---)
           {
               ADCCTL0 |= ADCENC | ADCSC;                              //采样和转换启动
               while (ADCCTL1和 ADCBUSY);                               //等待 ADC 内核处于活动状态
               ADC_RESULSE[I-1]= ADCMEM0;
           }
           _delay_cycles (5000);
           __no_operation();
       }

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

     您好 Dennis、

    这对我不奏效。

    我在所有 ADC 通道上都出错了。

    我在软件中尝试了一个东西、我认为它可以正常工作。

    查看代码并返回给我。

    if (ADC_Count=1)

    ADC_DISABLE (ADC_base);
    ADC_configureMemory (ADC_base、ADC_INPUT_A8、ADC_VREFPOS_INT、ADC_VREFNEG_AVSS);
    ADC_ENABLE (ADC_base);
    ADC_startConversion (ADC_base、ADCCONSEQ_3);
    while (!(ADCIFG & ADCIFG0));
    ADC0 = ADC_getResults (ADC_base);//Temp。 PFC 板的性能
    ADC_DisableConversions (ADC_base、ADCCONSEQ_3);

    if (ADC_Count=2)

    ADC_DISABLE (ADC_base);
    ADC_configureMemory (ADC_base、ADC_INPUT_A1、ADC_VREFPOS_INT、ADC_VREFNEG_AVSS);
    ADC_ENABLE (ADC_base);
    ADC_startConversion (ADC_base、ADCCONSEQ_3);
    while (!(ADCIFG & ADCIFG0));
    ADC1 = ADC_getResults (ADC_base);//输入电流感测
    ADC_DisableConversions (ADC_base、ADCCONSEQ_3);

    if (ADC_Count=3)

    ADC_DISABLE (ADC_base);
    ADC_configureMemory (ADC_base、ADC_INPUT_A0、ADC_VREFPOS_INT、ADC_VREFNEG_AVSS);
    ADC_ENABLE (ADC_base);
    ADC_startConversion (ADC_base、ADCCONSEQ_3);
    while (!(ADCIFG & ADCIFG0));
    ADC2 = ADC_getResults (ADC_base);//输入电压感测
    ADC_DisableConversions (ADC_base、ADCCONSEQ_3);

    ADC_Count 计数器以1ms 计时器中断递增。

    此致、

    Bharat

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

    您好 Dennis、

    此代码对我无效。

    每次我在 ADC 通道上获取错误数据时。

    我尝试了一件事、我认为这是正常的。

    查看代码并返回给我。

    if (ADC_Count=1)

    ADC_DISABLE (ADC_base);
    ADC_configureMemory (ADC_base、ADC_INPUT_A8、ADC_VREFPOS_INT、ADC_VREFNEG_AVSS);
    ADC_ENABLE (ADC_base);
    ADC_startConversion (ADC_base、ADCCONSEQ_3);
    while (!(ADCIFG & ADCIFG0));
    ADC0 = ADC_getResults (ADC_base);//Temp。 PFC 板的性能
    ADC_DisableConversions (ADC_base、ADCCONSEQ_3);

    if (ADC_Count=2)

    ADC_DISABLE (ADC_base);
    ADC_configureMemory (ADC_base、ADC_INPUT_A1、ADC_VREFPOS_INT、ADC_VREFNEG_AVSS);
    ADC_ENABLE (ADC_base);
    ADC_startConversion (ADC_base、ADCCONSEQ_3);
    while (!(ADCIFG & ADCIFG0));
    ADC1 = ADC_getResults (ADC_base);//输入电流感测
    ADC_DisableConversions (ADC_base、ADCCONSEQ_3);

    if (ADC_Count=3)

    ADC_DISABLE (ADC_base);
    ADC_configureMemory (ADC_base、ADC_INPUT_A0、ADC_VREFPOS_INT、ADC_VREFNEG_AVSS);
    ADC_ENABLE (ADC_base);
    ADC_startConversion (ADC_base、ADCCONSEQ_3);
    while (!(ADCIFG & ADCIFG0));
    ADC2 = ADC_getResults (ADC_base);//输入电压感测
    ADC_DisableConversions (ADC_base、ADCCONSEQ_3);

    ADC_Count 在1ms 定时器中断内递增。

    此致、

    Bharat

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

    您好 Bharat、

    很抱歉我的回答有延迟。  我必须订购一些器件、以便修改 launchpad 以确认特定通道上显示的模拟电压是否得到正确测量。  我将对其进行设置和测试、并告诉您可能需要进行哪些更改。

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

    您好 Bharat、

    我相信您已经了解了这一点、但我将向其他人发布我的调查结果、以便从中学习。

    根据我的调查结果、如果您想在不使用中断的情况下测量多个通道、请选择通道序列 ADCCONSEQ_0

    您分配的最高通道编号 ADCMCTL0 |= ADCINCH_8、然后您必须手动执行9次转换、每个通道从8次转换到0次转换。  是的、即使您仅使用通道8、5、1和0、您也必须在两者之间转换通道以满足 ADC 状态机逻辑。  中间其他通道的结果就会被丢弃。

    我做了一个实验、在我的 MSP430FR2355 LP 上、我使用配置为模拟输入的通道11、8、4和1、并使用电阻分压器对每个通道施加不同的电压。  然后、我 使用单通道单次转换 ADCCONSEQ_1来测量每个结果、并将结果放在下面的表格中的"单个"列中。

    然后、我使用具有9次转换(每通道一次转换)的环路的通道序列重复进行、并将结果放在表中的"序列"列中。  您可以看到、我启用为模拟输入的4个通道具有相同的 ADC 计数。  所有其他的都是"无关"的。

    随附了我的代码。

    e2e.ti.com/.../msp430fr2355_5F00_adc_5F00_multi_5F00_ch_5F00_no_5F00_interrupts.c