打印
[数据转换器-信号链]

咨询一下关于ADS8345的问题;

[复制链接]
2431|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
问题1:
switch(temp)
        {
                case 0: tempk = 0x87; break;
                case 1: tempk = 0x97; break;
                case 2: tempk = 0xA7; break;
                case 3: tempk = 0xB7; break;
                case 4: tempk = 0xC7; break;
                case 5: tempk = 0xD7; break;
                case 6: tempk = 0xE7; break;
                case 7: tempk = 0xF7; break;
                default: break;
        }

正常的通道选择如上面的代码,但是在做八路循环检测的时候,却成了。硬件通道1输入,显示数据出现在4通道,硬件通道2输入,显示数据出现在1通道。。。等等,只有0通道和7号通道是显示与通道正确对应的。

问题2:
输入0.560V,循环测试显示集中在0.553V,并且循环数据不稳定,上下波动能到达10mV左右。



附上ADS8345读写函数和电路图:

unsigned int Read_ADS8345(unsigned char byte)  
{
        unsigned char temp,tempk;
        unsigned int tempdata = 0;


        DDRF   = 0XFD;
        PORTF  = 0XF0;


        temp = byte;
        switch(temp)
        {
                case 0: tempk = 0x87; break;
                case 1: tempk = 0x97; break;
                case 2: tempk = 0xA7; break;
                case 3: tempk = 0xB7; break;
                case 4: tempk = 0xC7; break;
                case 5: tempk = 0xD7; break;
                case 6: tempk = 0xE7; break;
                case 7: tempk = 0xF7; break;
                default: break;
        }


        AD8345_clock_clr;
        AD8345_datain_clr;


        AD8345_cs_set;
        delay_nus(1);


        AD8345_cs_clr;
        delay_nus(1);


        for(temp = 0;temp < 8;temp++)                  //发控制字,收转换数据
        {
                if(tempk & 0x80) AD8345_datain_set;           //输出控制字
                else AD8345_datain_clr;
                tempk <<= 1;               
                AD8345_clock_set;              //产生一个时钟,上升沿
                delay_nus(1);                 //上升沿写入数据               
                AD8345_clock_clr;
                delay_nus(1);        
        }        


        AD8345_datain_clr;
        AD8345_clock_clr;
        delay_nus(50);               


        for(temp = 0;temp < 24;temp++)   //发控制字,收转换数据
        {
                AD8345_clock_set;
                delay_nus(5);


                AD8345_clock_clr;
                delay_nus(5);


                if(AD8345_read_data)                 
                        tempdata |= 0x01;      //读数据端口,获取转换值
                else
                        tempdata &= 0xfffe;//CLR_BIT(tempdata,0);


                if(temp<16)tempdata <<= 1;


                delay_nus(1);
        }               


        delay_nus(1);
        AD8345_cs_set;

        return tempdata;
}

ADS8345.JPG (34.93 KB )

ADS8345.JPG

相关帖子

沙发
navy_yang|  楼主 | 2012-4-19 13:15 | 只看该作者
自己补充一下:

下面是我在4号口接0.560V电压的采样值:

A0-A7是8个通道

ADS8345数据.JPG (65.73 KB )

ADS8345数据.JPG

使用特权

评论回复
板凳
__wmf| | 2013-8-13 19:39 | 只看该作者
楼主搞定ads8345了吗   我正在写这个芯片的驱动 但是ad的输出数据一直不对

使用特权

评论回复
地板
hjf2001| | 2013-8-14 06:56 | 只看该作者
一般来说多通道的ADC,先单个通道都调通了,再调试多通道切换,通道切换的延时先调大一些,检查数据是否正确?

使用特权

评论回复
5
cjhk| | 2013-8-14 18:43 | 只看该作者
不是很懂这个芯片   楼主  帮你顶一个   看看别人的意见吧

使用特权

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

本版积分规则

13

主题

225

帖子

1

粉丝