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.

[参考译文] MSP430F1232:读取2个模拟输入:A0和A1

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1093983/msp430f1232-read-2-analog-input-a0-and-a1

部件号:MSP430F1232
主题中讨论的其他部件: MSP430G2553

大家好,

你好! 您能帮助我们的客户吗?

在这里。  

1-我想使用MSP430F1232,A0和A1读取2个模拟输入。
我编写代码是为了完成这项工作。 我的问题是我不能一起读取两个模拟 ,而只能读取一个模拟A0。 请阅读我的代码并告诉我代码有什么问题。  

2-我想在1.4 上生成1 kHz PWM,但在WFP 1.4 上得到1 MHz
请阅读下面的代码并帮助我。

e2e.ti.com/.../Inquiry-and-code.txt

此致,  

乔纳森

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

    您如何判断您仅在一个渠道中采样?

    1)  

    >ADC10CTL0 |= ENC + ADC10SC;
    >ADC10SA =(无符号int) ADC;

    在启动ADC之前,您应该(重新)启动DTC。 按此顺序执行此操作会设置争用,这可能会导致ADC[]中的条目被反转。 我建议你颠倒这两句话。

    2)根据数据表(SLAS361D)第3页,WFP 1.4 的交替功能是SMCLK (~1MHz),而不是TA[0.]1。 TA1出现在WFP 1.2 和WFP 1.6 上。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Bruce:
    以下是客户的回应。
    我在e2e中做了推荐的解决方案,并写了:
    >ADC10SA =(无符号int) ADC;
    >ADC10CTL0 |= ENC + ADC10SC;
    1)但没有变化。 我只读A0面板,不能读A1面板。  
    令人惊讶的是,我用MSP430G2553编写并测试了这个程序,而且使用这个IC,一切都很好。但使用MSP430F1232,这个程序不起作用。 它们在ADC10配置中是否不同?  
    2)如何在WFP 1.4 上生成1kHz信号?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1)您如何判断您只读A0? 我没有在F1系列设备上使用过DTC,但它看起来与F2系列非常相似。

    您的用法是不寻常的:使用CONSEQ=3 (MSC=1)而不是等待完成,您正在与ADC竞争,它可能成功,也可能不成功。 TI示例fet120_ADC10_10.c执行类似的操作[0x200有点过时--替换此处的ADC[]数组]:

    https://dev.ti.com/tirex/explore/node?node=AOlfhGpjqN9YvhsRnQdlbQ__IOGqZri__LATEST

    2) WFP 1.4 似乎不具备硬件PWM功能,但您仍然可以使用软件PWM (有些工作要做)。 [几周前在这里的人遇到了类似的困难,因此他将PWM移至另一个针脚并使用跳线。]

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

    您好,Bruce:

    根据客户:

    您的意思是什么:(1)您如何判断您只读A0?"
    我写:
     如果(ADC[0]>230) P3OUT &=~BIT3;   
         Else P3OUT|= BIT3;
      如果(ADC[1]>230) P3OUT &=~BIT2;    
         Else P3OUT|= BIT2;    
    我要用ADC[0]读取A1,用ADC[1]读取A0。  
    为什么不常使用 CONSEQ_3? 我如何纠正我的错误? 请告诉我ADC10的正确设置,以便读取两个模拟A0和A1?
    此致,
    乔纳森
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1)暂停调试器时,您在ADC[]数组中看到什么值?

    2)我建议您尝试我提到的TI示例(上面的链接),看看这是否能为您提供所需的结果。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Bruce:
    根据我们的客户介绍:  
    1)1232 -A1/4057103#4057103"]1)暂停405.7103万暂停调试405.7103万调试器时,您的阵列中有哪些值[/ADC]?

    暂停调试器时,我读取的ADC[1]=233是根据A0的正确读数。 读取ADC[0]=1023,不更改A1

    2)1232 -A1/4057103#4057103"]2)我405.7103万我建议405.7103万建议您尝试使用TI[如果您希望看到以上提到的示例/链接,请参阅下面的结果。]

     在这个例子中,我的问题解决了

    此致,
    乔纳森