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.

[参考译文] MSP430F2013:模拟输入(SD16)

Guru**** 2580485 points
Other Parts Discussed in Thread: MSP430F2013

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/604647/msp430f2013-analog-input-sd16

器件型号:MSP430F2013

我使用 MSP430F2013来获取模拟输入电压。 它使用 SD16并每0.256ms 将计数值保存在 SD16MEM0中。 它在运行几个月后停止工作。 当我插入 MSP430编程器以检查 SD16值时、即使我们有电压输入、它也显示为0。 我们40%的生产都有这个模拟问题。

如何解决该问题或 此制造问题?   

谢谢

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

    感谢您发帖。 要尝试确定所发生情况的根本原因、您能否帮助提供一些初始诊断问题的信息:

    1.您能否确定 SD16是否仍在运行(例如、使用调试器、在 SD16MEM0中放置一些东西。 当您运行时、它是否会被新转换覆盖为0、或者该值是否不再发生变化)?
    2.设备的其他功能是否仍然正常工作?
    在正常运行中、什么触发 SD16 -定时器? 如果是、请尝试确定计时器(或其他源)是否仍在运行? 如果是您正在检查的定时器、应该会看到用于定时器计数的示例 TA0R 寄存器应该一直递增。
    4.如果您读出故障设备的完整内存,请将其与设备中应存在的代码映像进行比较-是否已更改?
    5.如果您重置有故障的设备,它是否会再次开始工作?
    6.如果重新编程故障装置,它是否会再次开始工作?
    7.如果您在良好的主板和故障主板之间交换了部件,问题出在主板还是设备上?

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

    SD16不再工作、SD16MEM0即使有电压输入也显示为0。 看起来它无法再读取输入

    2.其他功能仍然有效

    3、SD16不使用定时器。 我使用频率来触发标志

    --------------------------------------------------

    int SD16_init (void){  
    /*在端口 A0上设置 SD16_A 为1MHz*/
    SD16CTL =(SD16XDIV16 + SD16REFON + SD16VMIDON+ SD16DIV4);
    // SD16XDIVx=010源时钟/16.
    // SD16LP=0禁用低功耗
    // SD16DIVx = 00 SD16_A 时钟分频/ 1.
    // SD16SSELx = 00源时钟为 MCLK
    // SD16VMIDON = 0 VMID 缓冲区关闭
    // SD16REFON = 1.2V 基准生成
    // SD16OVIE = 0溢出中断被禁用

    SD16CCTL0 =(SD16SNGL + SD16OSR_64);
    // SD16UNI = 0双极模式-Vref/2 ->+Vref/2
    // SD16XOSR = 0
    // SD16SNGL = 1单次转换模式
    // SD16OSRx = 00 256随采样率变化
    // SD16LSBTOG=0 SD16LSBACC 不会在读取 SD16MEM0时切换
    // SD16LSBACC = SD16MEMx 16位转换数据0:MSB 1:LSB
    // SD16OVIFG =溢出中断条件
    // SD16DF = 0偏移二进制
    // SD16IE = 1 SD16_A 中断被使能
    // SD16IFG = SD16_A 中断标志条件
    // SD16SC =开始转换位

    SD16AE =(SD16_A0p | SD16_A0n);
    // SD16输入使能寄存器使能 SD16_A0引脚

    SD16INCTL0 =(SD16INCH_0);
    // SD16INTDLYx = 00第四个采样引起中断
    // SD16GAINx=000 x1前置放大器增益
    // SD16INCHx = 000通道 A0

    返回1;

    ------------------------------------------------------

    4.完全没有变化

    5、我复位、但没有任何变化

    6.仍然没有变化

    7.也不起作用、如果我更改新的 MSP430、它起作用

    额外好处: 如果我一直以1MHz 运行 SD16、它的持续时间是多久。 我是说持续时间。 如果我将频率降低到250kHz、它可以持续更长时间吗?

    谢谢

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

    感谢您提供更多信息!

    对于#1、我知道 SD16MEM0显示为0、即使施加了电压输入也是如此。 我想确定问题是 SD16停止转换、还是输入引脚因某种原因损坏或未将电压传递到 SD16 (SD16MEM0中两种不同的故障模式都可能显示始终为0)。 要测试这一点、您可以使用调试器向 SD16MEM0写入一个值、然后允许器件运行、并查看 SD16是否会覆盖您输入的值、结果为0 -这表示 SD16仍然运行并转换、 但输入有问题。 但是、如果您写入 SD16MEMO、则允许器件运行、但不会覆盖该值(您在中写入的值会保持不变)、那么这可能表示 SD16由于某种原因已停止转换。

    对器件进行重新编程、复位、重新编程都不起任何作用、而所有其他功能仍然起作用、并且切换到新的 MSP430起作用、这一事实让我相信一定会出现一些硬件问题、例如器件随着时间的推移而损坏。 您能否共享 MSP430引脚上可能暴露的电压范围? 对于建议的工作条件和绝对最大额定值、我们需要对照数据表规格检查这一点:
    答:MSP430上的任何引脚上是否存在超过 Vcc + 0.3V 的电压? 这包括当 Vcc 仍在上升时、例如当 Vcc 处于较低电压时、MSP430上是否有引脚连接到电路板上的其他器件、此时的电平可能高于 MSP430 Vcc?
    b.您能否分享 SD16引脚连接图、包括引脚上的电压范围?
    c.器件是否会暴露在 ESD 下?

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

    此应用用于测量交流电流。 A0-= 0.6V (ref)和 A0+获得0至1.2V 的电压。 该系统几乎可以全天候运行、A0+~ 0.8V。  

    我在 Vcc+0.3上测量所有引脚、但没有引脚、它不能暴露在 ESD 之下、因为电路板始终位于塑料盒内、由内腔面板保护。

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

    Quan、您好!

    Katie 目前不在办公室、因此我将尽力为您提供支持。 感谢您提供部分原理图。 最初、我感到惊讶的是、差分电压输入没有直接连接到 MSP430F2013 SD16模块的+/-引脚、但您似乎添加了一些外部器件来执行隔离(ACS)和其他功能。 我将假定这些器件正常工作。

    我同意 Katie 的看法、在所有其他器件施加输入电压之前、MSP430F2013必须加电。 假设您使用3.3VDC 为 MSP430F2013供电(不幸的是、您的原理图中未显示此情况)、这很可能来自5VDC 电源轨。 因此、所有这些器件(以及可能未显示的其他器件)将首先加电、并且可能会在 VCC 等于3.3VDC 之前向 MSP430的引脚施加高于最大值的电压。 您能否在启动期间使用示波器对此进行检查? 这将解释为什么 MSP430会工作一段时间、然后停止工作、以及为什么更换器件是解决此问题的唯一方法(至少暂时)。

    此外、我注意到您正在将 SD16模块配置为使用内部1.2V 基准、但您似乎也在使用外部1.2V 基准电压。 我强烈建议您使用其中一个。 如果要输出1.2V 内部基准电压,则需要启用输出缓冲器,并确保 Vref 和 AVss 之间连接470nF 电容器。 如果要使用外部基准输入、则需要禁用内部1.2V 基准电压并正确配置 P1.3/VREF。

    请仔细执行这些测量、并在继续之前解决基准电压源差异。

    此致、

    James

    MSP 客户应用

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

    尊敬的 James:

    我认为我使用内部1.2V 基准。 它由引脚 P1.3和引脚 A0生成-得到0.6V、由1.2V 和2个电阻器提供。 我还在 P1.3和 VSS 之间连接470nF (原理图中的下部)。  

    我也设置了使能输出缓冲器(SD16VMIDON=1)并且 MSP430F2013一直处于打开  状态、所以我确实确信 MSP430F2013在所有其他器件施加输入电压之前已加电。

    我在上一个帖子中的代码是正确的、但我放置了错误的描述 (SD16VMIDON = 1 VMID 缓冲器打开)

    --------------------------------------------------

    int SD16_init (void){  

    SD16CTL =(SD16XDIV16 + SD16REFON + SD16VMIDON+ SD16DIV4);
    // SD16XDIVx=010源时钟/16.
    // SD16LP=0禁用低功耗
    // SD16DIVx = 00 SD16_A 时钟分频/4
    // SD16SSELx = 00源时钟为 MCLK
    // SD16VMIDON = 1 VMID 缓冲器打开
    // SD16REFON = 1.2V 基准生成
    // SD16OVIE = 0溢出中断被禁用

    SD16CCTL0 =(SD16SNGL + SD16OSR_64);
    // SD16UNI = 0双极模式-Vref/2 ->+Vref/2
    // SD16XOSR = 0
    // SD16SNGL = 1单次转换模式
    // SD16OSRx = 10 64随采样率变化
    // SD16LSBTOG=0 SD16LSBACC 不会在读取 SD16MEM0时切换
    // SD16LSBACC = SD16MEMx 16位转换数据0:MSB 1:LSB
    // SD16OVIFG =溢出中断条件
    // SD16DF = 0偏移二进制
    // SD16IE = 1 SD16_A 中断被使能
    // SD16IFG = SD16_A 中断标志条件
    // SD16SC =开始转换位

    SD16AE =(SD16_A0p | SD16_A0n);
    // SD16输入使能寄存器使能 SD16_A0引脚

    SD16INCTL0 =(SD16INCH_0);
    // SD16INTDLYx = 00第四个采样引起中断
    // SD16GAINx=000 x1前置放大器增益
    // SD16INCHx = 000通道 A0

    返回1;

    ------------------------------------------------------

     

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

    感谢您确认您正在使用内部基准、并且 MSP430在其他器件之前已通电。 此外、我错过了原理图中电阻梯两端的0.47uF 电容器、因此感谢您指出这一点。 您的代码似乎正常工作、因此我担心有硬件问题会损坏器件。

    您是否知道此问题是否在高温下发生?

    您能否确认电压尖峰不会损坏 MSP430? 尽管您似乎在使用隔离器、但前端上没有看到任何 TVS 二极管或压敏电阻。 但是、如果隔离器的输入端出现尖峰、会发生什么情况? 它的输出是否相应地响应?

    问题发生后、您能否共享 SD 寄存器的状态? 查看是否设置了任何可能指示问题原因的中断标志会有所帮助。

    问题的可重复性如何? 是否存在使器件发生故障的特定步骤和条件? 如果是、请将其记录下来并分享。

    此致、

    James

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

    您好!

    由于您之前提到您的差分电压输入范围为-0.6V 和0.6V、我查看 了《MSP430x2xx 用户指南 》中的第26.2.2节、其中提到对于增益为1的1.2V 电压基准、最大满量程输入范围为+/-0.6V。 在 MSP430F2013 的数据表中查看第43页 、您可以看到、对于增益为1的情况、建议的满量程范围(FSR)为+/-0.5V (500mV)、而不是+/-0.6V。 此外、您可以看到脚注1指定"模拟输入范围不应超过 VFSR+或 VFSR-的80%"。

    此外、由于您使用双极偏移二进制格式、这意味着等于-FSR 的模拟输入将导致 SD16MEM0等于所有零。 这意味着输入电压将等于零、因为0V (A0+)- 0.6V (A0-)=-0.6V。 您提到了"您有电压输入"。 您是否测量了 MSP430引脚上的电压、以确认当向前端输入施加高电压时其他外部器件实际施加了电压?

    此致、

    James

    MSP 客户应用

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

    您是否能够解决此问题?

    此致、

    James

    MSP 客户应用