ADS8341调试问题

[复制链接]
2940|4
 楼主| jarvee 发表于 2009-2-26 14:04 | 显示全部楼层 |阅读模式
ADS8341调试问题中,无法正确读取测量数值。知道原因的帮个忙,谢谢。
 楼主| jarvee 发表于 2009-2-26 14:08 | 显示全部楼层

自己顶一下

自己顶一下
救火车 发表于 2009-2-27 09:00 | 显示全部楼层

请把问题说详细点。

比如信号大小、电源电压、原理图。
"无法正确读取测量数值"读出数据是FF? 00? 无规律数?
 楼主| jarvee 发表于 2009-3-26 10:27 | 显示全部楼层

to 救火车

下面是我写的ADS8341的读取检测结果的程序,你帮忙看一下,问题出在哪里,谢谢。

void ADS8341_GetData(unsigned char ChanleNumber)
{
    
    unsigned    char    i;
    unsigned     char     iCount;
    unsigned    char    ControlBYTE;
    unsigned    char    Bit01        =        0x01;
    unsigned    char    BitFE        =        0xFE;
    
    ControlBYTE    =    0x00;
    ControlBYTE    =    ControlBYTE | ADS8341_S;        //开位
    ControlBYTE    =    ControlBYTE | ChanleNumber;        //通道
    ControlBYTE    =    ControlBYTE | ADS8341_SD;        //四通道独立
    ControlBYTE    =    ControlBYTE | ADS8341_PD0;        //全功耗模式    
    ControlBYTE    =    ControlBYTE | ADS8341_PD1;

    i=8;
    iCount            =    0;
    //初始化时钟

    ADS8341_SDI        =    0;
    ADS8341_CLK        =    0;
    ADS8341_CS        =    0;    


    //向ADS8341发送控制字
    while(i--){
        ADS8341_CLK    =    0;    
        ADS8341_SDI    =    (bit)(ControlBYTE & 0x80);    
        ADS8341_CLK    =    1;    
        ControlBYTE    <<=    1;
    }    

    NOP;
    ADS8341_CLK    =    0;    

    //读取数据    
    for(i=0;i<8;i++) {        //高8位
        ADS8341_CLK    =    1;    
//        NOP;

        ADS8341_CLK    =    0;                
        if(ADS8341_SDO==0)
            Buffer[2]        =        Buffer[2] & BitFE;
        else
            Buffer[2]        =        Buffer[2] | Bit01;
        Buffer[2]            =        _cror_(Buffer[2],1);            // Buffer[2]=Buffer[2]>>1
    }

    for(i=0;i<8;i++) {        //低8位
        ADS8341_CLK    =    1;
//        NOP;

        ADS8341_CLK    =    0;        
        if(ADS8341_SDO==0)
            Buffer[3]        =        Buffer[3] & BitFE;
        else
            Buffer[3]        =        Buffer[3] | Bit01;
        Buffer[3]            =        _cror_(Buffer[3],1);            // Buffer[3]=Buffer[3]>>1
    }
    
    for(i=0;i<8;i++) {        //Zero Filled...(LSB)
        ADS8341_CLK    =    1;
//        NOP;

        ADS8341_CLK    =    0;        
        if(ADS8341_SDO==0)
            Buffer[4]        =        Buffer[4] & BitFE;
        else
            Buffer[4]        =        Buffer[4] | Bit01;
        Buffer[4]            =        _cror_(Buffer[4],1);            // Buffer[4]=Buffer[4]>>1
    }
    
    ADS8341_CS    =    1;
    NOP;
}
 楼主| jarvee 发表于 2009-3-26 10:29 | 显示全部楼层

ADS8341的开发环境

AT89C51,12MHz晶振。Keil C语言开发,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部