请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FG437 尊敬的香榭丽舍
MSP430FG437是否具有内部温度传感器校准数据或用于 ADC 校准数据的 TLV 表?
如果您有任何疑虑、请随时告诉我。
非常感谢。
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.
尊敬的香榭丽舍
MSP430FG437是否具有内部温度传感器校准数据或用于 ADC 校准数据的 TLV 表?
如果您有任何疑虑、请随时告诉我。
非常感谢。
Janet、您好!
感谢您将问题发布到 E2E。 MSP430FG437具有集成温度传感器、作为 ADC12模块的一部分。 这是从用户指南复制的图、说明了通道1010b 如何连接到温度传感器。 用户指南中的28.2.8节讨论了如何使用它。
与我们的某些较新器件不同、我在 MSP430FG437数据表中找不到可用的 TLV 数据。 我确实找到了演示如何使用内部温度传感器的代码示例、但它没有显示如何校准传感器。 因此、我怀疑您需要手动校准(消除的偏移)每个器件的温度传感器。
/*-版权所有-、BSD_EX *版权所有(c) 2012、德州仪器(TI)公司 *保留所有权利。 * * 只要 符合以下条件*、允许以源代码和二进制形式重新分发和使用: * *源代码的重新分发必须保留上述版权 声明*、此条件列表和以下免责声明。 * ***二进制形式的再发行必须在 *随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。 * ***未经 事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。 * *本软件由版权所有者和贡献者"按原样"提供 *、 不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或 *贡献者都不对任何直接、间接、偶然、特殊、 *模范、 或相应的损害(包括但不限于 *采购替代产品或服务;丧失使用、数据或利润; *或业务中断)、但出于任何责任理论 、*无论是在合同中、严格责任还是由于 使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他) 、*即使已获悉可能会发生此类损坏。 * *** * * MSP430代码示例免责声明 * * MSP430代码示例是自包含的低级程序 ,通常*以 高度*简明的方式演示单个外设功能或器件功能。 为此、代码可能依赖于器件的加电默认 值*寄存器值和时钟配置等设置、 并且在组合多个示例中的代码时必须*小心以避免潜在的副作用 *。 另请参阅 www.ti.com/grace 了解 GUI、并参阅 www.ti.com/msp430ware *了解外设配置的 API 函数库方法。 * *--/版权--* //********* // MSP-FET430P430演示- ADC12、使用温度传感器 // 此示例显示了如何使用集成温度传感器来测量 //温度。 当选择温度二极管通道(A10)进行 //转换时、内部基准将自动作为 传感器的源//。 但是、请注意 、它不会自动选择用于//转换。 任何可用的基准都可用于转换。 在 //此示例中,对温度二极管执行单次转换。 //然后根据 A/D //转换值以摄氏度和 F 为单位计算温度。 通过在"_NOP()"处设置并运行到断点来进行测试。 //要查看温度、请使用调试器打开观察窗口并查看 degC //和 degF。 // ACLK = n/a、MCLK = SMCLK =默认 DCO、ADC12CLK = ADC12OSC // 注意:这个示例不对温度传感器执行校准 //在一个应用中可能需要一个温度传感器校准。 //有关温度传感器规格,请参阅器件数据表。 // // MSP430FG439 // -------- // | | // |A10 (温度) | // | | // M.Mitchell // Texas Instruments Inc. // 2005年2月 //使用 CCE 生成版本:3.2.0和 IAR 嵌入式工作平台版本:3.21A //********* #include static unsigned int ADCresult; static volatile unsigned long int degC、degF; int main (void) { volatile unsigned int I; WDTCTL = WDTPW+WDTHOLD; //停止看门狗计时器 ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_6;//设置 ADC12、参考、采样时间 ADC12CTL1 = SHP; //使用采样计时器 ADC12MCTL0 = INCH_10+SREF_1; //选择通道 A10、Vref+ ADC12IE = 0x01; //为 (i=0;i<0x3600;i++)启用 ADC12IFG.0 //基准启动延迟 { } ADC12CTL0 |= ENC; //启用转换 __ENABLE_INTERRUPT (); //启用中断 while (1) { ADC12CTL0 |= ADC12SC; //开始转换 _bis_SR_register (LPM0_bits); //输入 LPM0 // degC =(Vsensor - 986mV)/3.55mV // Vsensor =(Vref)(ADCresult)/4095) // degC ->((ADCresult - 1615)*704)/4095 degC =((((long) ADCresult-1615)*704)/4095); degF =((degC * 9/5)+32); //计算 degF __no_operation(); //在此处设置断点 } #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_ICC__) #pragma vector=ADC12_vector __interrupt void ADC12ISR (void) #elif defined (__GNU__) void __attribute__((interrupt (ADC12_vector)#if Compiler (void)(void))#defineer! #endif { ADCresult = ADC12MEM0; //移动结果、IFG 被清除 __BIC_SR_REGISTER_ON_EXIT (LPM0_Bits); //清除 LPM0 }
此致、
James