按照官方提供例程配置ADC以及计算公式,但是计算出来的温度不正确。
ADC例程如下,有什么修改建议?

另外发现,在原来的板子上换了一个批次的6972样品后,发现总是在不停地复位,换回老芯片能正常运行。
是哪里配置有问题吗?
灰小子:
你好,通过adc测量计算出来的温度和实际查多少?
你使用的参考电压和例程中是否相同?
Susan Yang:
“计算出来的温度不正确” 能否请您详细说明下?
关于复位问题,您的板子和之前对比,除了MSP430芯片不同,其余的软硬件都是相同的?能否具体描述一下?谢谢!
LIN JU:
回复 Susan Yang:
参考电压和例程是一致的。温度采样问题目前已经通过校准,问题解决了。
复位问题,硬件和软件都是一样的,只是重新换上6972后,发现有此现象;换回原来新片后,不存在复位问题。另外,6972的AD能不能同时2种转换方式?一种是序列连续采样,一种是单次转换。比如电压电流用序列连续采样,温度用单次转换。
灰小子:
回复 LIN JU:
1、使用内部温度传感器测得的温度,实际是mcu的内部温度,有时比外界温度多个一两度也是有的。
2、能否提供下复位电路?
3、不能同时两种转换方式的。建议采用序列采样就可以,用不到的数据可以不处理,需要的时候再做处理。
LIN JU:
回复 灰小子:
复位电路是一个阻容复位电路:
灰小子:
回复 LIN JU:
C48有点小了,你换100nF的电容试试,看情况有没有好转
LIN JU:
回复 灰小子:
换成0.1uF也不行…之所以用1nF的电容是因为电容大了下载不了程序。
Wei.Jetim Zhao:
回复 LIN JU:
复位是什么原因导致的?能否将复位标志位存到FRAM然后复位后读取一下复位标志位,看看具体哪种复位?
另外,你做的是什么应用?能否提供以下你的程序?
LIN JU:
回复 Wei.Jetim Zhao:
初步找到原因是外部高速晶振问题,用内部晶振就不复位,但是用内部晶振速度不够的。以下是时钟配置相关程序:
void SysClkConfig(void)
{//外部晶振,LFXT HFXTPJSEL0 |= BIT4 | BIT5| BIT6 | BIT7; PJSEL1 &=~(BIT4 | BIT5| BIT6 | BIT7); PM5CTL0 &= ~LOCKLPM5;//该位必须清零
CSCTL0_H = CSKEY >> 8;// Unlock CS registersCSCTL1 = DCOFSEL_0;//DCOFSEL_6;// Set DCO to 8MHzCSCTL2 = SELA__LFXTCLK | SELS__HFXTCLK | SELM__HFXTCLK;CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;// Set all dividers to 1CSCTL4 |= LFXTDRIVE_3 + HFXTDRIVE_3;CSCTL4 &= ~(LFXTOFF | HFXTOFF);do{CSCTL5 &= ~(LFXTOFFG | HFXTOFFG);// Clear XT1 and XT2 fault flagSFRIFG1 &= ~OFIFG;}while (SFRIFG1&OFIFG);// Test oscillator fault flag CSCTL4 &= ~(LFXTDRIVE_0|HFXTDRIVE_0);CSCTL0_H = 0;// Lock CS registers__no_operation();__no_operation();__no_operation();
}帮忙看看什么原因,谢谢!
LIN JU:
回复 LIN JU:
6972 REVA 版本没有出现复位问题;REVB版本样品发现,容易复位。
使用外部晶振用8M还可以工作,到12M就不行;内部也是最大8M可以,在往上就不行。
是因为REV B 版本芯片只支持最大8M吗?按理不会啊,是不是哪里配置还有错?
TI中文支持网




