• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签: AD7940  驱动程序  

资源简介

AD7940 14位AD转换芯片 可准确读取模拟量数据 周期约为4us

资源截图

代码片段和文件信息

 /*
 ********************************************************************************************************
 *                                          All Rights Reserved
 * Version   : V1.00
 * Data      : AD7940.C
 * By        : skeletonwei
 * For       : MSP430F5438
 * Toolchain : IAR     EverEdit
 *********************************************************************************************************
 */
#include “..\config.h“

//参考电压选择内部5V  
uint  channel_x_data[6][100];  //二维数组存储6哥通道读取的AD值,每个通道每次采集100次,在求平均值
                            //其中最后一组数据位每个通道256次采样的数据之和
UINT32  skeltonwei;
void  ad7940_init()  /*AD7940和*CD4051B端口初始化*/
{
 /*CD4051B端口配置*/
  P6DIR |= BIT5;    /*AD_EN*/
  P6OUT |= BIT5;   /*输出为高*/
  
  P6DIR |= BIT6;   /*AD_A0*/
  P6OUT |= BIT6; 
 
  P6DIR |= BIT7;  /*AD_A1*/
  P6OUT |= BIT7; 
  
  P7DIR |= BIT4; /*AD_A2*/
  P7OUT |= BIT4; 
  /*AD7940端口配置*/  
  P7DIR |= BIT5; /*AD_CS*/
  P7OUT |= BIT5; /*输出为高*/
  
  P7DIR |= BIT6;  /*AD_CLK*/  
  P7OUT |= BIT6; 
 
  P7DIR &= ~BIT7; /*AD_SDATA作为数据输入*/

  /*以下管脚配置为普通I/O*/  
  P6SEL &= ~BIT5; P6SEL &= ~BIT6; P6SEL &= ~BIT7; 

  P7SEL &= ~BIT4; P7SEL &= ~BIT5; P7SEL &= ~BIT6;
 
  P7SEL &= ~BIT7;
 
}  
  
/********************各通道使能(0-6)***************************/
void  CH0_Enable(void)  /*CBA=000   使能*/
{
        AD_EN_ENABLE;  /*CD4051使能*/
AD_A2_L;
AD_A1_L;
AD_A0_L;
        delay_ms(5);
}
void  CH1_Enable(void)
{
        AD_EN_ENABLE;  /*CD4051使能*/
AD_A2_L;
AD_A1_L;
AD_A0_H;
        delay_ms(5);
}
void  CH2_Enable(void)
{
        AD_EN_ENABLE;  /*CD4051使能*/
AD_A2_L;
AD_A1_H;
AD_A0_L;
        delay_ms(5);

}
void  CH3_Enable(void)
{
        AD_EN_ENABLE;  /*CD4051使能*/
AD_A2_L;
AD_A1_H;
AD_A0_H ;
        delay_ms(5);
}
void  CH4_Enable(void)
{
        AD_EN_ENABLE;  /*CD4051使能*/
AD_A2_H;
AD_A1_L;
AD_A0_L;
        delay_ms(5);
}
void  CH5_Enable(void)
{
        AD_EN_ENABLE;  /*CD4051使能*/
AD_A2_H;
AD_A1_L;
AD_A0_H;
delay_ms(5);
}


/**************AD7040驱动程序*******************/

uint  AD7940_Read(void)
{
uint dat;
AD_CS_H;//初始CS线置为1
AD_CLK_H;//初始时钟线置为0
delay_ms(2);
AD_CS_L;//初始CS置为0,AD转换和数据传输同时开始
dat=AD7940_ReadByte();//读取要得到数据
AD_CLK_H;//时钟线拉高
delay_ms(2);
AD_CS_H;//读取结束,CS置为1,结束数据的传输
delay_ms(2);
return dat;//返回得到数据
}

/*************读取AD7940的数据,高位在前、低位在后*********************/
uint  AD7940_ReadByte(void)
{
uint idat_bit=0;
delay_ms(500);
      for(i=0;i<16;i++)/*包括前置零点一共16位数据*/
{     
         dat_bit<<=1;//要返回的数据左移一位   
if(data_7940!=0)//当数据线为高时,证明该位数据为1
 { 
          dat_bit|=0x0001;          
         }//要传输数据的当前值置为1若不是则为0
 delay_us(1);
         AD_CLK_L;//拉低时钟线
         delay_us(2);
         AD_CLK_H;//制造上升沿      
 delay_us(1); 
    }
return dat_bit;//返回读取出的数据

}


/******************************************************************************************
获得通道X的AD转换值
********************************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       10780  2013-09-12 09:52  AD7940.c
     文件        1647  2013-09-06 13:26  AD7940.h

评论

共有 条评论