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

📄 ltc2600.c

📁 AD9958arm控制源程序
💻 C
字号:
/*------------------------------------------------------
FILE NAME   : ltc2600.c
DESCRIPTION : ltc2600 driver.
VERSION     : 0.0.0 (C)aureole
AUTHOR      : Aureole
CREATE DATE : 3.30.2006
MODIFY DATE : ---
LOGS        :-\ 
1. First create for hardware test. 3.30.2006
2. Add...	4.10.2006

--------------------------------------------------------*/


//--------------------Include files-----------------------//

#include "..\include\ltc2600.h"
#include "..\include\common.h"
#include "..\include\config.h"


//--------------------Variable----------------------------//
CAL_STRUCT cal_a={
	59000,
	13500,
	60000,
	60000,
	40000
	};
CAL_STRUCT cal_b={
	59000,
	13500,
	60000,
	60000,
	40000
	}; 







//--------------------Function----------------------------//
/*---------------------------------------------------------------
NAME       : set_ac_zero
ENTRY  TYPE: unsigned short,unsigned short
RETURN TYPE: int
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.4.2006
LOGS       : 1.first create;

-----------------------------------------------------------------*/
int set_squa_ac_zero(unsigned short channel_a_zero,unsigned short channel_b_zero)
{
	return(
			write_data_to_ltc2600(DACD,channel_a_zero)&&
			write_data_to_ltc2600(DACH,channel_b_zero)
	      );
}
/*---------------------------------------------------------------
NAME       : set_ac_zero
ENTRY  TYPE: unsigned short,unsigned short
RETURN TYPE: int
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.4.2006
LOGS       : 1.first create;

-----------------------------------------------------------------*/
int set_sine_ac_zero(unsigned short channel_a_zero,unsigned short channel_b_zero)
{
	return(
			write_data_to_ltc2600(DACC,channel_a_zero)&&
			write_data_to_ltc2600(DACG,channel_b_zero)
	      );
}

/*---------------------------------------------------------------
NAME       : write_data_to_ltc2600
ENTRY  TYPE: unsigned int channel,unsigned int value
RETURN TYPE: int
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 3.30.2006
LOGS       : 1.first create;
2.fix bug; 4.2.2006
-----------------------------------------------------------------*/
int write_data_to_ltc2600(unsigned char chan,unsigned int value)
{
	unsigned char i;
	unsigned int dat;

	if(chan>DACH)return 0;
	if(value>65535)return 0;

	dat=0x20000000;
	dat|=(chan<<24);
	dat|=(value<<8);

		LTC2600_CS_OFF
		LTC2600_CLK_OFF

		for(i=0;i<24;i++){

			if(dat&0x80000000){
				LTC2600_SDI_ON
			} else{
				LTC2600_SDI_OFF
			}
			dat<<=1;
			LTC2600_CLK_ON
				LTC2600_CLK_OFF
		}
		LTC2600_CS_ON
		LTC2600_CLK_ON
		LTC2600_SDI_ON

		return 1;
}

/*---------------------------------------------------------------
NAME       : set_amplitude
ENTRY  TYPE: unsigned int channel,unsigned int wv,float value
RETURN TYPE: int
PURPOSE    : ---
VERSION    : 0.1
DESCRIPTION:
CREATE DATE: 4.10.2006
LOGS       : 1.first create;

-----------------------------------------------------------------*/
int set_amplitude(unsigned int chan,unsigned int wv,float value)
{


	if(value<0 || value>MAX_OUTPUT_AMPLITUDE)return 0;
	if(chan!=CHANNEL_A && chan!=CHANNEL_B)return 0;
	if(wv!=WAVEFORM_SINE && wv!=WAVEFORM_SQUA)return 0;


	value/=20.0;

	if(chan==CHANNEL_A){
		if(wv==WAVEFORM_SINE)value*=cal_a.sine_amp;
		else value*=cal_a.squa_amp;
		write_data_to_ltc2600(DACA,(unsigned int)value);
	}
	if(chan==CHANNEL_B){
		if(wv==WAVEFORM_SINE)value*=cal_b.sine_amp;
		else value*=cal_b.squa_amp;
		write_data_to_ltc2600(DACE,(unsigned int)value);
	}
	return 1;
}





⌨️ 快捷键说明

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