WCH57x BLE協(xié)議棧初始化,注冊HAL_GetInterTempValue函數(shù),此函數(shù)是否需要修改?


藍(lán)牙模塊:WCH579

文件版本:WCH57x_BLE_LIB_V1.7

簡要說明:在初始化協(xié)議棧函數(shù)中,需要注冊一個(gè)獲取當(dāng)前溫度的函數(shù)HAL_GetInterTempValue,追蹤分析發(fā)現(xiàn),HAL_GetInterTempValue函數(shù)只是獲取內(nèi)部溫度傳感器的轉(zhuǎn)換結(jié)果,并沒有計(jì)算當(dāng)前溫度。

問題:現(xiàn)在需要正確校準(zhǔn)內(nèi)部RC,是否要增加計(jì)算溫度的代碼?溫度的類型和精度如何處理?

還是tsCB的注釋有誤?


代碼如下:

?pfnTempSampleCB tsCB; // Register a program that read the current temperature,determine whether calibration is need



#if (defined TEM_SAMPLE)? && (TEM_SAMPLE == TRUE)
? cfg.tsCB = HAL_GetInterTempValue;? // 根據(jù)溫度變化校準(zhǔn)RF和內(nèi)部RC( 大于7攝氏度 )
#if( CLK_OSC32K )
? cfg.rcCB = Lib_Calibration_LSI; // 內(nèi)部32K時(shí)鐘校準(zhǔn)?
#endif


uint16 HAL_GetInterTempValue(void)
{
?uint8? sensor, channel, config;
?uint16 adc_data;
?
?/* 保存ADC寄存器設(shè)置 */
?sensor? = R8_TEM_SENSOR;
?channel = R8_ADC_CHANNEL;
?config? = R8_ADC_CFG;
?
?/* ADC內(nèi)部溫度采樣 */
?R8_TEM_SENSOR |= RB_TEM_SEN_PWR_ON;???/* 開啟溫度傳感器 */
?R8_ADC_CHANNEL = CH_INTE_VTEMP;????/* 選擇內(nèi)部溫度傳感器通道 */
?R8_ADC_CFG = RB_ADC_POWER_ON | (2 << 4);?/* 開啟ADC,0dB無增益 */
?R8_ADC_CONVERT |= RB_ADC_START;????/* 啟動(dòng)ADC單次轉(zhuǎn)換 */
?while (R8_ADC_CONVERT & RB_ADC_START);??/* 查詢等待ADC轉(zhuǎn)換結(jié)束 */
?adc_data = R16_ADC_DATA;
?
?/* 恢復(fù)ADC寄存器設(shè)置 */
?R8_TEM_SENSOR? = sensor;
?R8_ADC_CHANNEL = channel;
?R8_ADC_CFG = config;


/* 此處是否需要增加計(jì)算溫度的代碼 */
?
?return(adc_data);
}


期待您的答復(fù),謝謝!


你好,可以參考ch579evt中的adc例程,里面有將獲取到的內(nèi)部溫度傳感器的adc值轉(zhuǎn)換成溫度值的函數(shù)。


謝謝 wangyy

已經(jīng)增加計(jì)算溫度的代碼,測試內(nèi)部溫度為31℃左右



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

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