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.

[参考译文] MSP430F133:ADC示例程序问题(fet140_ADC12_01.c)

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430F133

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/572786/msp430f133-adc-sample-program-problems-fet140_adc12_01-c

部件号:MSP430F133

您好,  

我从资源管理器中构建了ADC程序样本fet140_ADC12_01.c,以开始验证基于新MSP430F133的主板。  列表如下所示。  从原始示例程序中,我添加了P3调试代码,因为P3可以从电路板上的测试点访问。

当我编译和运行样本时,我在示波器上看到了大约70us锯齿图案。  这种模式很奇怪,因为它从3.2v上升到3.8v。  然后, 从3.8 到3.2 的缓慢衰减(约30US)。  它在3.2 继续工作40美元,然后返回到3.8 以完成循环。  这是非常可重复的。  

我认为,在 开始ADC采样之前,到3.8v的步骤是主循环中的P3OUT |= 0x01。   

为了测试一些定时,我在主中添加了一个延迟回路。  它是的(... 3.6万..)循环。  我想只要花时间来延长锯齿的使用时间就可以了。  情况并非如此。  在延迟回路未注释的情况下,锯齿模式完全消失,而WFP 3.0 销保持在3.2V水平。  无升压或降压,在3.2V时始终保持高电压...

我不知道是什么原因导致了这种行为。  感谢您的任何想法。

此外,当我从其他程序切换P3 GPIO输出引脚时,它们工作正常。  我从其他程序中基于其他计时器的ISR生成0-3.2V的方波,因此这不是硬件异常。  

- Dave


#include <MSP4S.h>

内部主(无效)

易失性无符号int I;
volatile unsigned int j;
WDTCTL = WDTPW + WDTHOLD;//停止WDT
ADC12CTL0 = SHT0_2 + ADC12ON;//设置采样时间,打开ADC12
ADC12CTL1 = SHP;//使用采样计时器
ADC12IE = 0x01;//启用中断
ADC12CTL0 || ENC;//已启用转换
P6SEL |= 0x01;// WFP 6.0 ADC选项选择
P1DIR |= 0x01;// WFP 1.0 输出
P3DIR |=0x03;// WFP 3.0 和WFP 3.1 输出

P3OUT &=~0x03;//两个调试引脚均为低电平
(;;)

//用于(i=0;i<0x3.6万;i++)//延迟设置
//{
// j = i;
//}


P3OUT |= 0x01;//调试引脚高
ADC12CTL0 || ADC12SC;//采样打开
__bis_sr_register (CPUOFF + GIE);// LPM0,ADC12_ISR将强制退出
}
}

// ADC12中断服务例程
#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=ADC12_vector
__interrupt void ADC12_ISR (void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (ADC12_vector))) ADC12_ISR (void)
#否则
错误编译器不受支持!
#endif

P3OUT &=~0x01;// ISR中的调试引脚偏低

IF (ADC12MEM0 < 0x7FF)
P3OUT =~0x02;//清除WFP 3.1 LED熄灭
否则
P3OUT |= 0x02;//将WFP 3.1 LED设置为打开
__BIC_SR_REGISTER_ON_EXIT (CPUOFF);//从0 (SR)清除CPUOFF位
}

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

    当我编译和运行样本时,我在示波器上看到了一个70us锯齿图案。  这种模式很奇怪,因为它从3.2v上升到3.8v。  然后, 从3.8 到3.2 的缓慢衰减(约30US)。  它在3.2 继续工作40美元,然后返回到3.8 以完成循环。  这是非常可重复的。  [/引述]

    VCC引脚同时发生什么情况?

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

    VCC稳定在3.3V

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

    你说这是因为你启动ADC,由3.3V神奇输出3.8V供电的芯片? 哇!

    锯齿也"缓慢"超过。 我不知道它怎么会发生,除非你错过了其他东西,比如不太可能的错误的范围接地连接:)

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

    等待...您说:"在延迟回路没有注释的情况下,锯齿模式完全消失,而WFP 3.0 销保持在3.2V平坦水平。" 这可能不会让CPU在LPM0中休眠,因此会更改消耗模式。 当引脚输出跳转高于3.3V时,是否确定VCC没有发生任何变化? 您的电路中是否有任何比3.3V高的电压源(假定以某种方式连接到MSP430)? 也许您使用ADC测量的电压高于3.3V? 是否有机会展示主板示意图?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    无法发布原理图。 是的,我们的主板有辅助电源,但真正的问题是添加NOP延迟回路会完全改变行为。
    我认为ADC示例代码存在问题,这只是一个小衍生自...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    dpekin 说:
    我认为ADC示例代码

    存在问题

    您认为有问题的ADC示例代码可能会在引脚上产生高于VCC的输出电压? :)三思而后行。

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

    您认为这是我在电压方面的错误。  查看电路后,我看到我对电压进行采样的点位于电流驱动器之后。  测试点由GPIO驱动的晶体管切换。  我的错误。  这可能是我所看到的奇怪波形的原因...  我需要看看是否可以直接探测GPIO引脚。  我肯定希望这块主板有一些有意义的东西。