找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1330|回复: 11
收起左侧

关于九齐单片机内部1/4电压采样

[复制链接]
ID:1125252 发表于 2024-8-1 11:21 | 显示全部楼层 |阅读模式
九齐IC的示例程序中,通过内部1/4VDD采样到的ADC值是正常值的1/4吗?比如VDD是5V,对应4096。这里采样到的ADC最多就是1024?
//--------------- 1/4*VDD ADC CONVERSION -----------------------------------
void QuaVDD_Convert(char count)
{
    char i;
    ADMD = C_ADC_En | C_ADC_CH_En | C_Quarter_VDD;    // Enable ADC power, Enable global ADC input channel, Select internal 1/4*VDD as ADC input
    for (i = 1; i <= count; i++)
    {
        ADMDbits.START = 1;                       
        Wait();
        R_QuaVDD_DATA_LB += (0x0F & ADR);
        R_QuaVDD_DATA += ADD;
    }
}
unsigned int QuaVDD_Count(void)
{
    unsigned int temp;
    R_QuaVDD_DATA = R_QuaVDD_DATA_LB = 0x00;
    QuaVDD_Convert(8);                        // Execute 8-times of 1/4*VDD ADC conversion
    R_QuaVDD_DATA <<= 4;
    R_QuaVDD_DATA_LB &= 0xF0;
    R_QuaVDD_DATA += R_QuaVDD_DATA_LB;
    R_QuaVDD_DATA >>= 3;
   
    temp=R_QuaVDD_DATA;
   
    return temp;
}
回复

使用道具 举报

ID:401564 发表于 2024-8-1 22:10 | 显示全部楼层
要选择参考电压的呀
选择好参考电压之后,计算出来的数字量,只有实际电压的1/4
比如,VDD为4V,选择2V参考电压,1/4VDD通道,那么,ADC出来的数字量就是: 1024
回复

使用道具 举报

ID:1061331 发表于 2024-8-2 10:36 | 显示全部楼层
ADC转换和累加:QuaVDD_Convert函数启动ADC转换并累加结果。这里,每次转换的结果都被加到R_QuaVDD_DATA_LB的低4位和R_QuaVDD_DATA中。这是为了通过多次测量来提高精度或稳定性。 数据处理:在QuaVDD_Count函数中,首先清零累加器,执行8次转换,然后通过位操作处理结果。这里,R_QuaVDD_DATA <<= 4;将结果左移4位,可能是为了与R_QuaVDD_DATA_LB的低4位对齐。然后,R_QuaVDD_DATA_LB &= 0xF0;保留R_QuaVDD_DATA_LB的高4位(即前面累加的低4位的结果),并通过R_QuaVDD_DATA += R_QuaVDD_DATA_LB;将它们加到主累加器中。最后,R_QuaVDD_DATA >>= 3;可能是为了平均(或按比例缩小)多次测量的结果。 返回值:最终,函数返回处理后的ADC值。然而,这个值并不是直接对应于1/4VDD的电压值,而是经过多次测量和处理的数字表示。 重要:要理解这个值如何与实际的1/4VDD电压相关联,您需要知道ADC的分辨率和参考电压。如果ADC是12位的,那么最大值是4095,但这并不直接对应于电压值。您需要使用ADC的分辨率和参考电压(在这个例子中是内部生成的1/4VDD)来计算实际的电压值。
回复

使用道具 举报

ID:1059013 发表于 2024-8-2 11:16 | 显示全部楼层
Y_G_G 发表于 2024-8-1 22:10
要选择参考电压的呀
选择好参考电压之后,计算出来的数字量,只有实际电压的1/4
比如,VDD为4V,选择2V参考电 ...

因该是1023吧?!!!
回复

使用道具 举报

ID:401564 发表于 2024-8-2 12:46 | 显示全部楼层
fishafish 发表于 2024-8-2 11:16
因该是1023吧?!!!

不重要
知道这么一回事就可以了
九齐是12位ADC,ADC的最大数字量是4095
实际上的数字量会在1020到1030之间跳动
回复

使用道具 举报

ID:1129414 发表于 2024-8-12 10:48 | 显示全部楼层
要选择好参考电压
回复

使用道具 举报

ID:1125252 发表于 2024-8-12 15:49 | 显示全部楼层
Y_G_G 发表于 2024-8-1 22:10
要选择参考电压的呀
选择好参考电压之后,计算出来的数字量,只有实际电压的1/4
比如,VDD为4V,选择2V参考电 ...

这个怎么换算的,我看到他的1/4VDD通道,参考的电压C_Vrefh_VDD,这样怎么换算成读取到的实际电压?
回复

使用道具 举报

ID:1125252 发表于 2024-8-12 16:06 | 显示全部楼层

参考电压选择INTVDD呢,有没有计算公式?直接采样值*基准电压/4096不对
回复

使用道具 举报

ID:401564 发表于 2024-8-12 17:07 | 显示全部楼层
1481509156 发表于 2024-8-12 15:49
这个怎么换算的,我看到他的1/4VDD通道,参考的电压C_Vrefh_VDD,这样怎么换算成读取到的实际电压?

参考电压一般不选VDD,一般选内部2V,因为VDD不稳定,但如果VDD是已经经过稳压的话,也可以选VDD作为参考
回复

使用道具 举报

ID:1125252 发表于 2024-8-13 11:48 | 显示全部楼层
Y_G_G 发表于 2024-8-12 17:07
参考电压一般不选VDD,一般选内部2V,因为VDD不稳定,但如果VDD是已经经过稳压的话,也可以选VDD作为参考

开发的IC没有多余的IO脚了,可以直接拿内部VDD做参考读取电池的电压吗?这个换算又是怎么换算的,正常的不是利用AD脚引脚读取ADC值,再和参考电压的作比较吗?
回复

使用道具 举报

ID:401564 发表于 2024-8-13 14:11 | 显示全部楼层
1481509156 发表于 2024-8-13 11:48
开发的IC没有多余的IO脚了,可以直接拿内部VDD做参考读取电池的电压吗?这个换算又是怎么换算的,正常的 ...

锂电池供电本身就不需要更多的IO,前提是电池必须直接接在单片机的VDD上的,不能有LDO
这个时候,
参考电压选择: 内部2V电压
ADC通道选择: 1/4VDD
然后进行ADC就读取到VDD的数字量了,再计算一下,就知道供电电池的电压了
具体代码,你最好是自己写,这样,你才能真正的理解这里头的原理
回复

使用道具 举报

ID:948326 发表于 2025-4-12 17:01 | 显示全部楼层
1481509156 发表于 2024-8-12 16:06
参考电压选择INTVDD呢,有没有计算公式?直接采样值*基准电压/4096不对

哥,你最后找到正确的换算公式了嘛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表