mmuuss586 发表于 2014-7-20 10:18 
那你把程序,原理图贴上来看看,让大家帮你分析下;
#include<msp430.h>
#include<DAC8760.h>
void DAC8760_delay(unsigned int j)
{
while(j--)
{
asm("NOP");
}
}
/***************************
**
开始工作信号
**
****************************/
void DAC8760_start()
{
// DAC8760_SCLK_0_();
DAC8760_LATCH_0_();
// DAC8760_delay(1);
// DAC8760_SCLK_1_();
// DAC8760_SCLK_0_();
DAC8760_LATCH_1_();
// DAC8760_delay(1);
DAC8760_LATCH_0_();
// DAC8760_delay(3);
}
/***********************************
函数功能:
写数据
**
**
参数:
com
:前
8
位命令;
dat
:数据
**
***********************************/
void DAC8760_write_byte(unsigned char com, unsigned int dat)
{
unsigned char i=0;
DAC8760_LATCH_0_();
DAC8760_SCLK_0_();
for(i=0;i<8;i++)
{
DAC8760_SCLK_0_();
if(com&0x80)
{
DAC8760_DIN_1_();
}
else
{
DAC8760_DIN_0_();
}
delay_us(4);
DAC8760_SCLK_1_();
delay_us(4);
com<<=1;
}
for(i=0;i<16;i++)
{
DAC8760_SCLK_0_();
if(dat&0x8000)
{
DAC8760_DIN_1_();
}
else
{
DAC8760_DIN_0_();
}
delay_us(4);
DAC8760_SCLK_1_();
delay_us(4);
dat<<=1;
}
DAC8760_SCLK_1_();
//delay_us(3);
DAC8760_LATCH_1_();
DAC8760_DIN_1_();
//delay_us(3);
}
/***************************
* 读字节
**************************/
uint DAC8760_read_byte(unsigned char com, unsigned int dat)
{
uint data=0;
uchar i;
DAC8760_write_byte(com,dat);
DAC8760_LATCH_0_();
for(i=0;i<8;i++)
{
DAC8760_SCLK_1_();
//DAC8760_delay(2);
DAC8760_SCLK_0_();
// DAC8760_delay(2);
}
for(i=0;i<16;i++)
{
DAC8760_SCLK_1_();
//DAC8760_delay(2);
if(DAC8760_SDO_())
{
data|=0x01;
}
DAC8760_SCLK_0_();
//DAC8760_delay(2);
data<<=1;
}
return data;
}
/***************************
**
连续写入
**
***************************/
void DAC8760_con_write()
{
unsigned char i=0;
DAC8760_SCLK_0_();
DAC8760_LATCH_0_();
//DAC8760_delay(5);
for(i=0;i<24;i++)
{
DAC8760_DIN_0_();
DAC8760_SCLK_0_();
// DAC8760_delay(1);
DAC8760_SCLK_1_();
//DAC8760_delay(1);
}
DAC8760_SCLK_0_();
DAC8760_LATCH_1_();
// DAC8760_delay(5);
}
void DA_init()
{
CLk_clear;
DAC8760_con_write();
DAC8760_write_byte(DACResetReg,0x0001);
// DAC8760_con_write();
DAC8760_write_byte(DACConfigurationReg,0x0088);
// DAC8760_con_write();
// while(DAC8760_read_byte(DACReadReg,ReadConfigurationReg)==0x0088);
// DAC8760_con_write();
DAC8760_write_byte(DACControlReg,0x1006);
// DAC8760_con_write();
DAC8760_write_byte(DACDataReg,0xffff);
// DAC8760_delay(10);
}
|