📄 ltc2600.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 + -