电流偏置代码ADC的高八位为什么要乘以256?为什么ADC的数值设置成30,来达到稳定?

2019-03-23 17:29发布

//AD初始化
void AD_int(void)
{
        u8 value,i;
        u16 ADC_TDR_tmp;
       
        ADC2->CSR = 10; //AIN10通道选择       
        //select 4MHz clock based on 16MHz fMaster (div4), single mode
        ADC2->CR1 = 0x20;

        ADC2->CR2 = 0x08;//数据右对齐
        ADC2->TDRH=0x24;//AIN13 AIN10禁止施密特触发       
        ADC2->CR1 |= 0X01;//使能ADC
       
        value=30;
        while(value--); //等待ADC稳定                  

        ADC2->CSR &= 0x7f;//清EOC标志
        ADC2->CR1 |= 0x01;//启动AD
       
        i=0;
        do{
                if(ADC2->CSR&0x80)//转换结束
                        {               
                                DIin=ADC2->DRH*256+ADC2->DRL;//电流偏置代码获取
                                ADC2->CR1 |= 0x01;//启动AD
                                i++;
                        }               
         }while(i<20);//第20次采集作为电流真实偏置代码处理
               
        ADC2->CSR |= 13; //AIN13通道选择       
        ADChan=0;
        ADC2->CSR &= 0x7f;//清EOC标志
        ADC2->CR1 |= 0x01;//启动AD
}

电流偏置代码ADC的高八位为什么要乘以256?为什么ADC的数值设置成30,来达到稳定?


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
littleshrimp
1楼-- · 2019-03-23 20:54
/ 30不是ADC设置,是系统延时,等待adc使能完成
littleshrimp
2楼-- · 2019-03-23 23:42
12位ADC为8位+4位=4096 ,8位=256,4位=16,256*16=4096
KCP
3楼-- · 2019-03-24 03:32
 精彩回答 2  元偷偷看……
littleshrimp
4楼-- · 2019-03-24 07:00
本帖最后由 littleshrimp 于 2017-10-14 19:56 编辑

ADC2->DRH保存了高2位
ADC2->DRL保存了低8位

ADC2->DRH*256相当于把高2位左移8位也可以写成ADC2->DRH<<8
QQ图片20171014195333.png

吴下阿蒙
5楼-- · 2019-03-24 10:33
高位乘以256确实有点烧脑,高低位拼接用位移也许更直观。
levifly2008
6楼-- · 2019-03-24 13:56
 精彩回答 2  元偷偷看……

一周热门 更多>