完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
蓝牙模块:WCH579
文件版本:WCH57x_BLE_LIB_V1.7 简要说明:在初始化协议栈函数中,需要注册一个获取当前温度的函数 HAL_GetinterTempValue , 追踪分析发现,HAL_GetInterTempValue 函数只是获取内部温度传感器的转换结果,并没有计算当前温度。问题:现在需要正确校准内部RC,是否要增加计算温度的代码?温度的类型和精度如何处理? 还是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; // 根据温度变化校准RF和内部RC( 大于7摄氏度 ) #if( CLK_OSC32K ) cfg.rcCB = Lib_Calibration_LSI; // 内部32K时钟校准 #endif uint16 HAL_GetInterTempValue(void) { uint8 sensor, channel, config; uint16 adc_data; /* 保存ADC寄存器设置 */ sensor = R8_TEM_SENSOR; channel = R8_ADC_CHANNEL; config = R8_ADC_CFG; /* ADC内部温度采样 */ R8_TEM_SENSOR |= RB_TEM_SEN_PWR_ON; /* 开启温度传感器 */ R8_ADC_CHANNEL = CH_INTE_VTEMP; /* 选择内部温度传感器通道 */ R8_ADC_CFG = RB_ADC_POWER_ON | (2 << 4); /* 开启ADC,0dB无增益 */ R8_ADC_CONVERT |= RB_ADC_START; /* 启动ADC单次转换 */ while (R8_ADC_CONVERT & RB_ADC_START); /* 查询等待ADC转换结束 */ adc_data = R16_ADC_DATA; /* 恢复ADC寄存器设置 */ R8_TEM_SENSOR = sensor; R8_ADC_CHANNEL = channel; R8_ADC_CFG = config; /* 此处是否需要增加计算温度的代码 */ return(adc_data); } 期待您的答复,谢谢! |
|
相关推荐
1个回答
|
|
|
你好,可以参考ch579evt中的adc例程,里面有将获取到的内部温度传感器的adc值转换成温度值的函数。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
383 浏览 0 评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
891 浏览 0 评论
1487 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
3436 浏览 2 评论
2845 浏览 1 评论
安卓手机支持外接otg扩展坞 然后使用ch340+ch9329控制电脑吗
1836浏览 1评论
1487浏览 1评论
383浏览 0评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
891浏览 0评论
488浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-17 13:29 , Processed in 0.796187 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3010