微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > AD转换读取的数值不正确

AD转换读取的数值不正确

时间:10-02 整理:3721RD 点击:
用TLC548进行AD转换,但是读取到转换后的数值,和我用万用表测量的输入端电压经计算后的值不一样怎么回事啊。
u8 lc548c_init(void)
{
        CS = 1;
        CLK = 0;
        return 1;               
}
u8 lc548c_read(void)
{
        u8 k = 0;
        u8 dat = 0;
        CS = 0;
        delay4us(1);
        for(k=0;k<8;k++)
        {
                if(DATA == 1)   // DATA=P14
                {
                        dat |=0x01; // 第一位赋值1
                }
                else
                {
                        dat |=0x00; // 第零位赋值1                       
                }
                dat=dat<<1;     // 0001->0010
                _nop_();
                _nop_();
                _nop_();
                CLK = 1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                CLK = 0;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();       
        }
        CS = 1;
        return dat;       
}

试试这个,应该没问题了!
lc548c_init(void)
{
        CS = 1;
        CLK = 0;
        return 1;               
}
u8 lc548c_read(void)
{
        u8 k = 0;
        u8 dat = 0;
        CS = 0;
        delay4us(1);
        for(k=0;k<8;k++)
        {
                CLK = 1;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                CLK = 0;
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();                                                     if(DATA == 1)   // DATA=P14
                {
                        dat |=0x01; // 第一位赋值1
                }
                else
                {
                        dat |=0x00; // 第零位赋值1                        
                }
                dat=dat<<1;     // 0001->0010
                _nop_();
                _nop_();
                _nop_();
        }
        CS = 1;
        CLK = 0;
        return dat;        
}

还是不对啊,读出来的AD值和测出来的电压不匹配啊

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top