搜索
bottom↓
回复: 6

MSP430驱动ADS1110如何实现ADS1110的读写操作

[复制链接]

出0入0汤圆

发表于 2006-6-30 14:12:11 | 显示全部楼层 |阅读模式
小弟刚接触ADS1110芯片,在MSP430环境下,对ADS1110的读操作,只有第一个字节有数据,其他的都是FF,也不能读出配置寄存器的内容,那位大侠给指点一下,在此表示感谢了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2006-6-30 15:26:29 | 显示全部楼层
好好看PDF,答案就在上面。这个芯片配置不光光是寄存器,外围电路也很重要

出0入0汤圆

 楼主| 发表于 2006-7-3 15:07:58 | 显示全部楼层
我看了PDF文档,目前存在的问题是,采用ADS1110的默认设置,即配置寄存器为0X8C的时候,读出来的数据寄存器的数据是8191,读出来配置寄存器的数据是198,输入电压不断变化,但读出的数据不变,重新配置配置寄存器,写入:0X80,即DR1,DR2 都为0;此时读出配置寄存器的内容是64,理论上应该是128;读出数据寄存器的内容随着输入电压的变化而不断变化,最大值2047,最小值0,我感觉数据寄存器的值好像是正确的,但不能理解的是配置寄存器的值不对,各位能不能给点确切的建议!谢谢

出0入0汤圆

 楼主| 发表于 2006-7-3 15:10:46 | 显示全部楼层
我的外围电路采用的单端输入的典型电路,SDA,SCL都是100K上拉到VCC,

出0入0汤圆

 楼主| 发表于 2006-7-6 10:31:53 | 显示全部楼层
经过多次实验,终于搞定了ADS1110的读写操作,到这里跟大家分享,

希望与各位朋友常沟通与交流,我的MSN: prmtwujingbin@hotmail.com

//ADS1110 相关操作函数

//P5.0-- AD_SDA

//P5.1-- AD_SCL



void ADS_start(void);

void ADS_delay(void);

void ADS_stop(void);

void ADS_clock(void);                               //Generate a ACK

void ADS_ack(void);                                 //The master send a ACK to device

void ADS_RcvAck(void);                              //receive device sending a ack

void ADS_nack(void);                                //Generate a NACK

void ADS_waitack(void);                             //Wating for a ACK from device

void ADS_outbyte(unsigned char);                    //Send one uusigned char data to Bus

unsigned char ADS_inbyte(void);                     //Read a byte Data from bus

void ADS_WriteCfgReg(unsigned char CfgData);        //Write ADS1110 Congiguration Register

unsigned int ReadDataCfgReg(unsigned int ReadType); //Read data from ADS1110 Data register





void ADS_delay(void)

{

  unsigned char i;

  

  for(i=0;i<5;i++);

}



void ADS_clock(void)  //Generate a ACK

{

  //P5.0-- AD_SDA

  //P5.1-- AD_SCL

  

  P5OUT |=  BIT1;

  ADS_delay();

  P5OUT &= ~BIT1;

  ADS_delay();  

}

void ADS_ack(void)    //The master send a ACK to device

{

  ADS_delay();

  P5DIR |= BIT0;

  P5OUT &= ~BIT0;

  ADS_delay();

  P5OUT |= BIT1;

  ADS_delay();

  P5OUT &= ~BIT1;

  P5DIR &= ~BIT0;  

}

void ADS_RcvAck(void)  //receive device sending a ack

{

  P5DIR &= ~BIT0;

  ADS_delay();

  P5OUT |= BIT1;

  ADS_delay();

  P5OUT &= ~BIT1;

  P5DIR &= ~BIT0;

  

}

void ADS_nack(void) //Generate a NACK

{

  P5DIR |= BIT0;

  P5OUT |= BIT0;

  ADS_delay();

  P5OUT |= BIT1;

  ADS_delay();

  P5OUT &= ~BIT1;

  P5DIR &= ~BIT0;  

}

void ADS_waitack(void)   //Wating for a ACK from device

{

  //P5.0-- AD_SDA

  //P5.1-- AD_SCL

  unsigned int i;

  P5DIR &= ~BIT0;

  ADS_delay();

  P5OUT |= BIT1;

  ADS_delay();

  i=0X0FF;

  do

  {

  }

  while(--i!=0);

  P5OUT &= ~BIT1;

  P5DIR |= BIT0;

}

void ADS_outbyte(unsigned char adsdata)   //Send one uusigned char data to Bus

{

  unsigned char i;

  P5DIR |= BIT0;

  for(i=0;i<8;i++)

  {

    if(adsdata & 0x80)

      P5OUT |= BIT0;

    else

      P5OUT &= ~BIT0;

    ADS_clock();

    adsdata <<=1;   

  }  

}



unsigned char ADS_inbyte(void)   //Read a byte Data from bus

{

  unsigned char i,adsdata;//,tempin;

  P5DIR &= ~BIT0;

  adsdata=0;

for(i=0;i<8;i++)

{

  adsdata <<=1;

  if(P5IN & BIT0)

   adsdata |= 0X01;

  ADS_clock();

}

  P5OUT &= ~BIT0;

  return(adsdata);

}

void ADS_WriteCfgReg(unsigned char CfgData)   //Write ADS1110 Congiguration Register

{

  ADS_start();

  ADS_outbyte(0x92);

  ADS_waitack();

  ADS_outbyte(CfgData);

  ADS_waitack();

  ADS_stop();

}

unsigned int ReadDataCfgReg(unsigned int ReadType)  //Read data from ADS1110 Data register

{

  unsigned int temp,temp1;

  ADS_start();

  ADS_outbyte(0x93);

  ADS_waitack();

  temp=ADS_inbyte()*0x100;

  ADS_ack();

  temp+=(ADS_inbyte());

  ADS_ack();

  temp1 = ADS_inbyte();

  ADS_ack();

  ADS_stop();

  if(ReadType == 0x01)

    {

      if(temp > 0x7fff)

        {

          temp = 0x0000;

          return(temp);         

        }

      else

        return(temp);

    }

  else

    return(temp1);  

  

}

出0入0汤圆

发表于 2010-9-8 16:11:27 | 显示全部楼层
xie谢谢分享呀

出0入53汤圆

发表于 2013-4-20 11:16:23 | 显示全部楼层
wujingbin 发表于 2006-7-6 10:31
**** 作者被禁止或删除 内容自动屏蔽 ****

谢谢分享,正好想写个程序试试呢,这个芯片稳定到多少位的数据?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 10:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表