微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > DAC8760

DAC8760

时间:10-02 整理:3721RD 点击:

DAC8760程序一直没调好,求应用程序,谢谢

网上搜搜嘛,老多的了

#include<msp430.h>
#include<DAC8760.h>
/***********************************
函数功能:
写数据
**
**
参数:
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(1);
  DAC8760_SCLK_1_();
  delay_us(1);
  com<<=1;
}
for(i=0;i<16;i++)
{
  DAC8760_SCLK_0_();
  if(dat&0x8000)
  {
   DAC8760_DIN_1_();
  }
  else
  {
   DAC8760_DIN_0_();
  }
  delay_us(1);
  DAC8760_SCLK_1_();
  delay_us(1);
  dat<<=1;
}
DAC8760_SCLK_0_();
//delay_us(3);
DAC8760_LATCH_1_();
DAC8760_DIN_1_();
//delay_us(3);
}

void DA_init()
{
CLk_clear;

   DAC8760_write_byte(DACResetReg,0x0001);

   DAC8760_write_byte(DACConfigurationReg,0x0088);


   DAC8760_write_byte(DACControlReg,0x1006);

   DAC8760_write_byte(DACDataReg,0xffff);
// DAC8760_delay(10);
}

以前写的,希望对您有帮助!

给你一点线路连接图

程序设计调试的时候,可以先用模拟SPI接口,先调出来;用硬件的SPI接口发的会快点,按照2M速率算的话,2uS左右吧
调完了,把程序改成硬件的SPI接口,要发24位数据,可以用硬件的SPI接口8位模式发送,发3次就可以了。

你程序自己先写吧,有问题了再讨论

给你一段仿SPI写数据的时序

void DACx876_Write(u32 dat)
{
        u8 i;
        
        for(i=23;i>0;i--)
        {
                SCK_0;
                LOCK_0;

                if(dat & (1<<i) != 0)
                {
                        DIN_1;
                }
                else
                {
                        DIN_0;
                }

                Delay(1);

                SCK_1;

                Delay(1);
        }
        
        SCK_1;
        LOCK_1;
        DIN_1;
}

测过是没有问题的

很多吗?能不能帮我搜搜,搜好后网址给我,我搜了很久都没搜出来

大哥,这代码怎么看起来那么眼熟啊,怎么跟我的代码一模一样?这个真的能用吗

输出为0,还是输出不正常呢?如果没有输出,首先检查一下硬件链接。如果输出不正常,可能是程序的问题。

输出一直为0

#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;
 unsigned long data;
 data=(((unsigned long)com)<<24)|(dat<<8);
 DAC8760_LATCH_1_();
 DAC8760_LATCH_0_();
 DAC8760_SCLK_0_();
 delay_us(5);
 //DAC8760_con_write();
 for(i=0;i<24;i++)
 {
  DAC8760_SCLK_0_();
  if(data&0x80000000)
  {
   DAC8760_DIN_1_();
  }
  else
  {
   DAC8760_DIN_0_();
  }
  //delay_us(2);
  DAC8760_SCLK_1_();

 // delay_us(2);
  data<<=1;
 }

 DAC8760_SCLK_0_();
 delay_us(1);
 DAC8760_LATCH_1_();
 delay_us(5);
 //DAC8760_DIN_1_();

}
/***************************
 * 读字节

 **************************/
uint DAC8760_read_byte(unsigned char com, unsigned int dat)
{
 uint data=0;
 uchar i;
 DAC8760_write_byte(com,dat);
 DAC8760_DIN_0_();
 DAC8760_LATCH_0_();
 DAC8760_SCLK_1_();
 for(i=0;i<8;i++)
 {
  DAC8760_SCLK_1_();

  DAC8760_SCLK_0_();


 }
 for(i=0;i<16;i++)
 {
  DAC8760_SCLK_1_();

  if(DAC8760_SDO_())
  {
   data|=0x01;
  }
  DAC8760_SCLK_0_();
  //DAC8760_delay(2);
  data<<=1;
 }
 DAC8760_LATCH_1_();
 return data;
}


void DA_init()
{

  CLk_clear;
   DAC8760_write_byte(DACResetReg,0x0001);
   DAC8760_write_byte(DACConfigurationReg,0x0088);
   DAC8760_write_byte(DACControlReg,0x1006);
   DAC8760_write_byte(DACDataReg,0xffff);

}

 

这是我的程序。电路连接都是按照技术手册连的,除了没接隔离器。用读函数读出一直为0.。能否帮我看下程序,谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top