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

2015-05-20 11:20:42来源: ednchina 关键字:DMM  电阻测量  ADS1232  驱动程序
虽然一开始打算做的是四位半万用表,但是,我们的终极目标是用高档表—— 六位半,向经典表王——安捷伦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
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:DMM电阻测量分析笔记四~ 模拟开关和运放选型
下一篇:DMM电阻测量分析笔记二~ 电流源输出保护

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
DMM
电阻测量
ADS1232
驱动程序

小广播

独家专题更多

TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved