DMM电阻测量分析笔记三~ADS1232驱动程序

2015-05-20 11:20:42来源: ednchina
虽然一开始打算做的是四位半万用表,但是,我们的终极目标是用高档表—— 六位半,向经典表王——安捷伦34401A学习。所以,我思前想后,LT2440无疑是最好的选择,因为其是积分型ADC,温漂够小,但是其价格昂贵,所以我打算在后期六位半中使用,四位半试验阶段就用TI的ADS1232,同是24位ADC,但ADS1232的淘宝价格是12元,与LT2440的几十个大洋想比,还是很便宜的。 

    下面是ADS1232的STM32驱动程序

 

 
 #include"stm32f10x.h"
 #include"delay.h"
 #include"ads1232.h"
 
 extern unsigned char flag;
 
 
#define DOUT GPIO_Pin_0
#define SCLK GPIO_Pin_1
#define PDWN GPIO_Pin_2
#define SPEED  GPIO_Pin_3
#define GAIN0 GPIO_Pin_4
#define GAIN1 GPIO_Pin_5
#define A0    GPIO_Pin_6
#define ADPORT GPIOB
 
 
#define DOUT_H GPIO_SetBits(ADPORT,DOUT)
#define DOUT_L GPIO_ResetBits(ADPORT,DOUT)
#define SCLK_H GPIO_SetBits(ADPORT,SCLK)
#define SCLK_L GPIO_ResetBits(ADPORT,SCLK)
#define SPEED_H GPIO_SetBits(ADPORT,SPEED)
#define SPEED_L GPIO_ResetBits(ADPORT,SPEED)
#define PDWN_H GPIO_SetBits(ADPORT,PDWN)
#define PDWN_L GPIO_ResetBits(ADPORT,PDWN)
#define A0_H   GPIO_SetBits(ADPORT,A0)    //AIN 2
#define A0_L   GPIO_ResetBits(ADPORT,A0)  //AIN 1
#define GAIN_1 GPIO_ResetBits(ADPORT,GAIN0|GAIN1);
 
 
 /****************************************************
 *function name: void AD_InitIO(void)
 *description  : AD GPIO Initialization,PB0-DOUT,PB1-SCLK
 *input        : null
 *output       : null
 *return       £ºnull
 ******************************************************/
 void AD_InitIO(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
 
   GPIO_InitStructure.GPIO_Pin=SCLK;
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
   GPIO_Init(ADPORT,&GPIO_InitStructure);
}
 
 
 /****************************************************
 *function name: void DOUT_IN(void)
 *description  : ADS1232's DOUT PB0 config input
 *input        : null
 *output       : null
 *return       £ºnull
 ******************************************************/
 void DOUT_IN(void)
 {
   GPIO_InitTypeDef GPIO_InitStructure;
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
   GPIO_InitStructure.GPIO_Pin=DOUT;
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //ÉÏÀ­ÊäÈë
   GPIO_Init(ADPORT,&GPIO_InitStructure);
 }
 
  /****************************************************
 *function name: void DOUT_OUT(void)
 *description  : ADS1232's DOUT PB0 config input
 *input        : null
 *output       : null
 *return       £ºnull
 ******************************************************/
 void DOUT_OUT(void)
 {
   GPIO_InitTypeDef GPIO_InitStructure;
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
   GPIO_InitStructure.GPIO_Pin=DOUT;
   GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
   GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
   GPIO_Init(ADPORT,&GPIO_InitStructure);
 }
 
 /****************************************************
 *function name: unsigned long AD_read(void)
 *description  : read AD data
 *input        : null
 *output       : null
 *return       £ºnull
 ******************************************************/
unsigned long AD_read(unsigned char channel)
 {
    int i=0;
 unsigned long ad_value=0;
 AD_InitIO();
 
 
 
SCLK_L;
 PDWN_L;
delay_us(20);
 if(channel == 1)
{
A0_L; //AIN1
}
else 
{
A0_H;  //AIN2
}
GAIN_1;
 SPEED_H;     //80SPS 
 PDWN_H;  
 delay_us(20);
 
//    DOUT_OUT();
//    DOUT_H; 
//    delay_us(1);
 DOUT_IN();
 while(GPIO_ReadInputDataBit(ADPORT,DOUT)==1);
//delay_ms(200);
 flag=1;
 for(i=0;i<24;i++)
 {
    ad_value=ad_value<<1;
  SCLK_H;
  delay_us(2);
  if(GPIO_ReadInputDataBit(ADPORT,DOUT)==1)
   {
   ad_value|=0x00000001;  //or  ad_value+=1;     
}
else 
 SCLK_L;
 delay_us(2);
 }
 SCLK_H;
 delay_us(2);
 SCLK_L;
 delay_ms(1);
 return ad_value;
 }

关键字:DMM  电阻测量  ADS1232  驱动程序

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/0520/article_11834.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
DMM
电阻测量
ADS1232
驱动程序

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved