藍(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ù),謝謝!