關于溫度轉(zhuǎn)換函數(shù)的疑問

int ADC_GetCurrentTS( UINT16 ts_v )

{

? UINT32 C25_Data[2];

? int? cal;


? FLASH_EEPROM_CMD( CMD_GET_ROM_INFO, ROM_CFG_TMP_25C, C25_Data, 0 );

? //C25_Data[0]=2820;

? cal = ( ( (ts_v * 1050) + 2048 ) >> 12 ) + ( 1050 >> 1 );

? cal = 25 + ((cal - (int)(C25_Data[0]&0xFFFF))*10/14);

? return (? cal );

}


  1. 從EEPROM種獲取的數(shù)據(jù)是一個什么值,是出廠標定的值?用戶需要處理嗎?

2.我直接按照函數(shù),在常溫下溫度是3度。? 和實際不符。?

3. 我強制將常溫下的ADC值賦值給C25_Data[0],發(fā)現(xiàn)最終溫度-1000多,? 和不正常。

?


首先,,

CH573/571 系列芯片內(nèi)部溫度傳感器的輸出形式,是電壓數(shù)據(jù), 不同的溫度值,其電壓輸出不同,

這一行代碼,就是得到電壓值, 單位是mV, 可以對下手冊的adc 獲取電壓值的代碼

? cal = ( ( (ts_v * 1050) + 2048 ) >> 12 ) + ( 1050 >> 1 );


芯片在生產(chǎn)時候并沒有進行嚴格的 像做專業(yè)sensor一樣去校準,而只是根據(jù)當時生產(chǎn)的環(huán)境,再按照斜率,換算成對應25度校準值寫了進去,

EEPROM 里面寫的是對應的25度時候, 內(nèi)部溫度傳感器測量出來的電壓值,單位是mV


其內(nèi)部傳感器的大致曲線是:


Δtemp (℃)= -Δvoltage(mV)*10/14


于是有了上面的函數(shù).


意思理解。

我一個新的芯片,通過函數(shù)獲取到的常溫溫度只有4度。

然后我增加一個21度的偏移量。在25度的時候。


然后,溫度下降到0度,芯片測量值13度


出廠的標定會差這么多嗎?


我發(fā)了規(guī)律,但是沒有找到為什么?

DEMO中測量溫度開啟了2倍的增益,并且用了?cal = ( ( (ts_v * 1050) + 2048 ) >> 12 ) + ( 1050 >> 1 );這個公式,發(fā)現(xiàn)實際溫度和溫升只有一半。

采用了公式,(ADC/2048)*Vref,去計算,溫度正確。

但是程序中初始化:

已經(jīng)開啟了2倍增益。

void ADC_InterTSSampInit( void )

{

R8_TKEY_CFG &= ~RB_TKEY_PWR_ON;

? ? R8_TEM_SENSOR = RB_TEM_SEN_PWR_ON;

? ? R8_ADC_CHANNEL = CH_INTE_VTEMP;

? ? R8_ADC_CFG = RB_ADC_POWER_ON\

? ? ? ? ? ? ? ? |RB_ADC_DIFF_EN? ? ? ? ? ? ?\

? ? ? ? ? ? ? ? |( 3<<4 );

}


在ADC_DataCalib_Rough函數(shù)中,有配置增益,但最后是恢復的。


這會是哪里的問題?


同問, 請問樓主目前有解決嗎?


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频