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/MSP430FR5858:CAN#39;t congifure 温度传感器

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/871309/ccs-msp430fr5858-can-t-congifure-temperature-sensor

器件型号:MSP430FR5858

工具/软件:Code Composer Studio

我需要使用 MSP430FR58IRHAT 来测量温度、并按照数据表中的步骤对其进行了配置、然后我尝试读取它、但它不起作用。  :

//配置 ADC12
   //打开 ADC 并启用多个转换
   ADC12CTL0 = ADC12SHT0_2 | ADC12ON | ADC12MSC;
   //ADC12CTL0 = ADC12SHT0_2 | ADC12ON;
   //采样计时器,单序列
   ADC12CTL1 |= ADC12SHP | ADC12CONSEQ_1;
   //ADC12CTL1 |= ADC12SHP;
   // 12位转换
   ADC12CTL2 |= ADC12RES_2;

   //将 pode en modo lectura de temperatura
   //ADC12CTL3 |= ADC12TCMAP | ADC12ICH0MAP | ADC12BATMAP;
   ADC12CTL3 |= ADC12TCMAP;

   //在 MEM1上启用 ADC 中断
   //ADC12IER0 |= ADC12IE1;
   // A0选择、Vref=1.2V
   ADC12MCTL0 |= ADC12INCH_0;
   // A1选择、Vref=1.2V
   ADC12MCTL1 |= ADC12INCH_1;
   // A2选择、Vref=1.2V、序列结束
   //ADC12MCTL2 |= ADC12INCH_2 | ADC12EOS;
   ADC12MCTL2 |= ADC12INCH_2;
   // A3选择、Vref=1.2V
   ADC12MCTL3 |= ADC12INCH_30 | ADC12EOS;
   //ADC12MCTL3 |= ADC12INCH_30 | ADC12EOS;
   // A4选择、Vref=1.2V、序列结束
   //ADC12MCTL4 |= ADC12INCH_4 | ADC12VRSEL_0 | ADC12EOS;

   ADC12CTL0 |= ADC12ENC;//采样启动

   ADC12CTL0 |= ADC12SC;


   // espera hasta que se realicen las lecturas
   while (!(ADC12IFGR0 & BIT0));

   TEMCERATE_VALUE = ADC12MEM3;

有人有这个问题吗? 如何解决?

谢谢你。

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

    这样做不起作用的方式是什么?

    ----

    > while (!(ADC12IFGR0 & BIT0));
    这正在等待 ADC12IFG0 [参考用户指南(SLAU367O)表34-15]。 此时(第一个)开始时、A30转换甚至不会开始。 尝试:

    > while (!(ADC12IFGR0 & ADC12IFG3));//等待最终转换完成
    ----

    >ADC12CTL0 = ADC12SHT0_2 | ADC12ON | ADC12MSC;
    这指定了一个16个节拍的采样/保持时间。 对于温度传感器、S/H 时间需要至少30uS [参考 UG 第34.2.11节]。 由于您使用的是 ADC12OSC (~5MHz)、这大约是30*5=150个周期、因此您需要更像这样的东西:

    >ADC12CTL0 = ADC12SHT0_7 | ADC12ON | ADC12MSC;//温度传感器有192个 ADC 时钟。
    ----

    Resource Explorer 示例 ADC12_10与温度传感器(单通道)配合使用:

    http://dev.ti.com/tirex/explore/node?node=AM1nsPMuCVQpPMFdjU45JQ__IOGqZri__LATEST

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

    谢谢、

    我曾n´t 过,但它仍然不起作用。

    当我读取寄存器时、我得到一个介于149-152之间的值、而现在、当我尝试更改时、我得到一个介于0-2之间的值。 它似乎不测量温度。

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

    您从示例 ADC12_10中获得了什么结果?

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

    嗨、Issac、

    MSP430FR5858有一个软件示例、其中使用 ADC 读取内部温度传感器、然后将其转换为度数。   我将查看此示例、首先运行它以使其正常工作、然后从它进行修改以适合您的应用。  

    http://dev.ti.com/tirex/explore/node?node=ANikQG6hlw3HAetYzy.pEw__IOGqZri__LATEST

    谢谢、

    JD   

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

    我按照示例中的步骤解决了这个问题。

    谢谢你。