⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drv_ad7683.c

📁 ADI公司的200MPS高速16BIT AD的源码
💻 C
字号:
/******************************************************************************
  Copyright (C), 2007-2008, wanyi Tech. Co., Ltd.
  FileName		:drv_ad7683.c
  Author		:kevin 
  modify		:       
  Version 		:1.0          
  Date			:2007-6-28
  Description	:auto design for driver ad7683 function       
  Function List	:void test_ad7683_pin(void)
  				 void init_ad7683(void)	
  				 unsigned int drv_ad7683(void)
  				 void test_ad7683(void)	
******************************************************************************/
#include "\inc\system.h"






/******************************************************************************
  Function:       // void test_ad7683_pin(void)
  Description:    // for  test ad7683 pin
  Calls:          // none
  Called By:      // none
  Table Accessed: // none
  Table Updated:  // none
  Input:          // void
  Output:         // none
  Return:         // void
  Others:         // none
******************************************************************************/
void test_ad7683_pin(void)
{
	unsigned char tmp=0;
	
	AD7683_CS		=0;
	AD7683_CS		=1;
	AD7683_CS		=0;

	AD7683_CLK		=0;
	AD7683_CLK		=1;
	AD7683_CLK		=0;
	
	MAX336_EN		=0;
	MAX336_EN		=1;
	MAX336_EN		=0;
	
	MAX336_A0		=0;
	MAX336_A0		=1;
	MAX336_A0		=0;
	
	MAX336_A1		=0;
	MAX336_A1		=1;
	MAX336_A1		=0;
	
	MAX336_A2		=0;
	MAX336_A2		=1;
	MAX336_A2		=0;
	
	MAX336_A3		=0;
	MAX336_A3		=1;
	MAX336_A3		=0;
	
	PORTD			=0x00;
	PORTD			=0xff;
	PORTD			=0x00;	
	
	while(1)
	{
		if(AD7683_DATA)
		{
			tmp=1;
		}
		else
		{	
			tmp=0;
		}
	}
}
//=============================================================================



/******************************************************************************
  Function:       // void init_ad7683_pin(void)
  Description:    // for init ad7683
  Calls:          // none
  Called By:      // init()
  Table Accessed: // none
  Table Updated:  // none
  Input:          // void
  Output:         // none
  Return:         // void
  Others:         // none
******************************************************************************/
void init_ad7683(void)
{
	AD7683_CS		=1;
	AD7683_CLK		=1;
	AD7683_DATA		=1;
}
//=============================================================================



/******************************************************************************
  Function:       // unsigned int drv_ad7683(void)
  Description:    // for drv ad7683
  Calls:          // none
  Called By:      // init ()
  Table Accessed: // none
  Table Updated:  // none
  Input:          // void
  Output:         // none
  Return:         // void
  Others:         // none
******************************************************************************/
unsigned int drv_ad7683(void)
{
	unsigned int read_addata=0;
	unsigned char i; 
	
	AD7683_CS		=0;									//push down
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
/*
	for(i=0;i<21;i++)
	{
		AD7683_CLK		=1;
		AD7683_CLK		=0;
		if(i>=4)
		{
			if(AD7683_DATA)									//read ad data start at the 7th clock
			{
				read_addata=read_addata | 0x0001;
			}
		}
		if(i<20)
		{
			read_addata=read_addata<<1;
		}
	}
*/

	for(i=0;i<5;i++)
	{
		AD7683_CLK		=1;								//5 clock for ad convert
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		AD7683_CLK		=0;
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
	}
	for(i=0;i<16;i++)
	{
		AD7683_CLK		=1;
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		AD7683_CLK		=0;
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		if(AD7683_DATA)									//read ad data start at the 7th clock
		{
			read_addata=read_addata & 0xfffe;
		}
		else
		{
			read_addata=read_addata | 0x0001;
		}
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		read_addata=read_addata<<1;
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
		Nop();
	}
	read_addata=read_addata>>1;	
	AD7683_CLK		=1;								//read stop
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	AD7683_CLK		=0;								
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	AD7683_CS		=1;								//pull up
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	return(read_addata);
}
//=============================================================================



/******************************************************************************
  Function:       // void test_ad7683(void)
  Description:    // for test ad7683
  Calls:          // none
  Called By:      // init ()
  Table Accessed: // none
  Table Updated:  // none
  Input:          // void
  Output:         // none
  Return:         // void
  Others:         // none
******************************************************************************/
void test_ad7683(void)
{
	unsigned int tmp_ad=0x0000;
	
//	test_ad7683_pin();
	
	MAX336_EN	=1;
	MAX336_A3	=1;
	MAX336_A2	=0;
	MAX336_A1	=0;
	MAX336_A0	=0;
	
	
	init_ad7683();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	Nop();
	while(1)	
	{
		Nop();
		Nop();
		Nop();
		MAX336_EN	=1;
		MAX336_A3	=1;
		MAX336_A2	=0;
		MAX336_A1	=0;
		MAX336_A0	=1;
		tmp_ad=drv_ad7683();
	}
}
//=============================================================================


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -