打印

ADS8341调试问题

[复制链接]
2239|4
手机看帖
扫描二维码
随时随地手机跟帖
沙发
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;
}

使用特权

评论回复
5
jarvee|  楼主 | 2009-3-26 10:29 | 只看该作者

ADS8341的开发环境

AT89C51,12MHz晶振。Keil C语言开发,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝