关于CH571F最新EVT里ADC测量温度的问题

最新的EVT (1.9)里ADC采样结果转换为温度的方法改成了 adc_to_temperature_celsius

使用该方法转换温度时, 需要先从MCU内部读取出4字节的C25校准值: *((PUINT32)ROM_CFG_TMP_25C)

实际测试时, 发现有两种类型的C25校准值, 其中一种转换出来的温度值完全不正确:

一种类似于:0x0000050D , 另一种类似于:0xF5F9BDA9

高16位为全0的这种, 转换出来的温度值大多在-80度以下, 误差极大.

请问这是什么问题, 为何C25校准值会有两种几乎完全不同的形态?


之前的芯片是少一组基准值,所以想要测量绝温度需要自己调节下,相对温度是没问题的,之后批次的都是添加这组基准值,有这方面需求的可以在购买时和销售讲下。


好的, 请问外观丝印有办法判断是哪个批次吗?


上述ADC基准值最新批次芯片已有,如不是最新的批次,可以手动计算基准值,相对温度值是准的。芯片的丝印可以贴出来看一下,我们也可帮忙判断一下。



    // 调试初始化
    GPIOA_SetBits(GPIO_Pin_9);
    GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);
    GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);
    UART1_DefInit();
    PRINT("Start @ChipID=%02X\n", R8_CHIP_ID);
    /* 温度采样并输出 */
    PRINT("\n1.Temperature sampling...\n");
    ADC_InterTSSampInit();
    for(i = 0; i < 20; i++)
    {
        adcBuff[i] = ADC_ExcutSingleConver(); // 连续采样20次
    }
    for(i = 0; i < 20; i++)
    {
        PRINT("%d \n", adc_to_temperature_celsius(adcBuff[i]));
    }

CH582M自带TS温感,通过ADC测量的温度如下,为啥都是整数,不带小数?

21 

21 

21 

20 

22 

22 

21 

21 

23 

22 

22 

21 

21 

22 

23 

21 

22 

21 


PRINT("%d \n", adc_to_temperature_celsius(adcBuff[i]));

这个打印出来的温度值都是整数,不带小数,为何?

自带TS温感精度是多少?


CH582M-R0-1v0

评估板的丝印是这个字样


CH582 MCU上的丝印用华为手机10倍拍不清,等白天再看看

芯片的丝印看不清,大家是如何拍的?


例程是通过整型运算,没有浮点运算,如果浮点运算,可以如下配置

image.png

温度采集误差

image.png


如上。


只有登录才能回复,可以选择微信账号登录