ads1230驱动程序

转换器

10人已加入

描述

  电子秤普遍出现于今天的工业应用上。电子秤制造商通常采用proprietary ASICs 去达到模拟前端的高精度和稳定度 ,不过有些设计也会选用标准产品高达23位有效精度类同定做的方案。电子秤设计最大的难题是如何混合多个负载元在使用上仍能保持极低噪声,而TI 推出的ADS1230, ADS1232和 ADS1234就可配合到。。

  驱动程序

  ADS1230的通过是一个精密的20位模数转换器(ADC)。内置低噪声可编程增益放大器(PGA),板载振荡器,精度20位∑-ΔADC,通过提供一个完整的桥式传感器的应用包括电子秤、应变计和压力传感器的前端解决方案。

  低噪声PGA具有增益为64或128,支持全面的±39mv或±19.5mv差动输入,分别。Δ∑ADC具有20位有效分辨率,由第三阶调制器和第四阶数字滤波器组成。两个数据速率的支持:10sps(有50Hz和60Hz的排斥)和80sps。ADS1230通过可以由内部振荡器或外部时钟源时钟。偏移量标定进行点播,并通过可以放在低功耗待机模式或完全关闭掉电模式。所有的功能都通过专用引脚控制;有没有数字寄存器的程序。数据通过一个容易隔离的串行接口输出,该接口直接连接到msp430和其他微控制器。“通过提供一个采用TSSOP - 16封装和指定–40°C + 85°C.

  以下是ADS1230-MS430源程序代码,可以参考!

  /********************************************************************************

  *program name:ADS1230.c

  *function: driver for ADS1230(AD)

  *Company: LSD Co,LTD

  *Date: 2007-09-12

  *修改: 15:07 2009-04-14,LJZ

  include:

  long ReadAD(void); //读AD,从数据线上读取AD输出的数据,可在查询或中断中调用

  void OffsetAD(void); //失调校准,一般用来在启动AD后,进行一次AD校准

  void InitADline(void);//初始化AD控制线,在启动AD前调用

  /**********************************************************************

  ADS1230

  * 接口定义:DOUT《---》P2.0; SCLK《---》P2.1; PDWN《---》P2.2 *

  ***********************************************************************/

  #define ADS_IE P2IE

  #define ADS_IFG P2IFG

  #define ADS_DIR P2DIR

  #define ADS_OUT P2OUT

  #define ADS_IN P2IN

  #define ADS_DATA_BIT BIT0 //ADS_DOUT

  #define ADS_CLK_BIT BIT1 //ADS_CLK

  #define ADS_PD_BIT BIT2 //ADS_PDWN

  #define ADS_DATA_DIR_IN() ADS_DIR &= ~ADS_DATA_BIT;

  #define ADS_CLK_DIR_OUT() ADS_DIR |= ADS_CLK_BIT;

  #define ADS_PD_DIR_OUT() ADS_DIR |= ADS_PD_BIT;

  #define AD_IS_ON (ADS_OUT & ADS_PD_BIT)

  #define AD_ON() ADS_OUT |= ADS_PD_BIT;

  #define AD_OFF() ADS_OUT &= ~ADS_PD_BIT;

  #define ADS_CLK_H() ADS_OUT |= ADS_CLK_BIT;

  #define ADS_CLK_L() ADS_OUT &= ~ADS_CLK_BIT;

  #define ADS_DATA_HI (ADS_IN & ADS_DATA_BIT)//AD_DATA输出位1

  #define ADS_DATA_NOT_READY (ADS_IN & ADS_DATA_BIT)//AD_CLK输出位1

  *********************************************************************************/

  /*****************************************************************************

  函数名称:ReadAD(void)

  功 能:读AD

  入口参数:无

  返回参数:AD的转换结果,为long型

  使用资源:无

  ******************************************************************************/

  long ReadAD(void)

  {

  long ADdatatemp=0; //设置AD转换的初始值为0

  for(uchar i = 0;i 《 20;i ++) //获取20位数据

  {

  ADS_CLK_H();

  ADS_CLK_L();

  ADdatatemp = ADdatatemp 《《 1;

  if(ADS_DATA_HI) //AD输出的数据位是1?

  {

  ADdatatemp ++;

  }

  }

  for(uchar i = 0;i 《 4;i ++) //为下一次转换准备

  {

  ADS_CLK_H(); //ADS_OUT |= ADS_CLK_BIT;

  ADS_CLK_L(); //ADS_OUT &= ~ADS_CLK_BIT;

  }

  return(ADdatatemp);

  }

  /*****************************************************************************

  函数名称:void OffsetAD()

  功 能:一个补偿函数,补偿AD1230的标尺误差

  入口参数:无

  返回参数:无

  使用资源:无

  ******************************************************************************/

  void OffsetAD()

  {

  while(ADS_DATA_NOT_READY); //AD数据转换好?(ADS_IN & ADS_DATA_BIT)//AD_CLK输出位1

  for(uchar i = 0;i 《 26;i ++) //发送26个CLK

  {

  ADS_CLK_H();

  ADS_CLK_L();

  }

  }

  /*****************************************************************************

  函数名称:void InitADline(void)

  功 能:初始化AD控制线

  入口参数:无

  返回参数:无

  使用资源:port2

  ******************************************************************************/

  void InitADline(void)

  {

  ADS_DATA_DIR_IN(); // ADS_DIR &= ~ADS_DATA_BIT;

  ADS_CLK_DIR_OUT(); // ADS_DIR |= ADS_CLK_BIT;

  ADS_PD_DIR_OUT(); // ADS_DIR |= ADS_PD_BIT;

  ADS_CLK_L(); // ADS_OUT &= ~ADS_CLK_BIT;

  AD_OFF(); // ADS_OUT &= ~ADS_PD_BIT;

  }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分