直接上代码,我就不做太多解释了。。
#include "msp430x26x.h"
#include "DAC8552.H"
//===============DELAY=========================
void delay_DA(uint xms)
{
uint i,j;
for(i = xms; i > 0; i--)
for(j = 220; j > 0; j--);
}
/*******************************************
函数名称:write_DAC8552
功 能:写8552DA芯片
参 数:data 24位数据
返回值 :无
********************************************/
void write_DAC8552(long int data)
{
uint i;
DAC8552_DIR;
DAC8552_OUT;
CS_H;
CS_L;
delay_DA(1);
for(i = 0; i < 24; i++)
{
SCLK_H;
if(data & 0x800000) DATA_H;
else DATA_L;
SCLK_L;
delay_DA(1);
data <<= 1;
}
SCLK_L;
CS_H;
}
/*******************************************
函数名称:write_DAC8552_channelAB
功 能:写8552DA芯片
参 数:data 24位数据
返回值 :无
********************************************/
void write_DAC8552_channelAB(long int data1,long int data2)
{
data1 = data1 | 0x000000;
write_DAC8552(data1);
delay_DA(5);
data2 = 0x340000 | data2;
write_DAC8552(data2);
delay_DA(5);
}
/*******************************************
函数名称:updata_DAC8552_channelAB
功 能:更新数据
参 数:data 24位数据
返回值 :无
********************************************/
void updata_DAC8552_channelAB(long int data1,long int data2)
{
data1 = data1 | 0x100000;
write_DAC8552(data1);
delay_DA(5);
data2 = data2 | 0x240000;
write_DAC8552(data2);
delay_DA(5);
}