资源简介
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
相关资源
- ds2431驱动程序
- zynq使用的OLED芯片SSD1306驱动程序
- TM1629驱动程序
- INA226测量uA级电流驱动程序
- SJE金牌磁条读写器驱动程序
- VK2C23 驱动程序
- 数码管驱动TM1640驱动程序
- fdc2214驱动程序——基于MSP430F5529
- 基于L298N的步进电机驱动程序
- DAC8552驱动程序
- Win7 64位 旗舰版 安装CodeWarrior5.1使用的
- ADS1256 基于 RT-Thread 4.0.2 版本驱动程序
- GT911、GT928、GT9147的驱动程序
- linux 添加字符设备驱动程序及测试程
- LINUX下的MODBUS-RTU驱动程序
- AT91RM9200的SPI设备驱动程序开发.pdf
- CH452键盘数码管驱动程序配有电路图
- CH452驱动程序及说明书
- ADE7753电能表芯片的驱动程序
- R61509V彩屏驱动程序
- usb键盘驱动程序,代码
- linux平台 DHT11驱动程序
- 4412 GPIO驱动程序、蜂鸣器实现音乐播
- AD7927驱动程序
- 步进电机驱动程序
- POS58驱动-小票机驱动程序
- si4432驱动程序包括 发送 接收 切换
- I2C驱动AT24C16
- DS18B20 STC1T系列单片机驱动程序
- ADS1148驱动程序
评论
共有 条评论