whj19860123 发表于 2011-4-14 16:53:21

求助 CPLD控制DAC转换器 max7537

library ieee;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity dac is
   port(
          rst : in std_logic;--单片机输出复位信号,用来控制CPLD
          clk: in std_logic;--单片机IO输出时钟信号
--------------------------------------------------         
          updata: out std_logic;--max7537 数据更新信号,低有效
          cs : out std_logic;   --max7537 片选信号,低有效
          wr : out std_logic;   --max7537 写信号,低有效
          A0 : out std_logic;                --max7537 地址信号
          A1 : out std_logic;                --max7537 地址信号
          ack: out std_logic;                --指示信号,CPLD上电成功,指示给单片机,高电平有效
          dat_out: out std_logic_vector(7 downto 0)--max7537 数据更新信号,低有效
         );
end entity;
architecture one of dac is
signal addres : std_logic_vector(2 downto 0);
begin
ack<='1';
cnt: process(clk,rst)--地址及控制信号生成器
   begin
   if(rising_edge(clk)) then
       if(rst='1') then
                                        addres<= addres + 1 ;
       else addres<= "000" ;
       end if;
   end if;
   end process cnt;
DAC: process (rst,addres)
   begin
   if(rst='0') then--复位,max7537初始化在不工作状态
                updata<='1';
                cs<='1';
                wr<='1';
             A0 <='1';
               A1 <='1';
         dat_out<=X"00";
   else --max7537开始工作
         cs <=addres(2);
         updata<= not addres(2);--当addres大于3时候,开始更新数据,片选无效
         wr<='0';
         A0 <=addres(0);
         A1 <=addres(1);
         dat_out<="11111111";
   end if;
   end process DAC;
end one ;


http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_630699HTCLB6.GIF
(原文件名:1.GIF)

http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_630700C3PBKI.GIF
(原文件名:2.GIF)
点击此处下载 ourdev_630701FBBIIT.pdf(文件大小:5.58M) (原文件名:MX7537-MX7547.pdf)

whj19860123 发表于 2011-4-14 16:57:50

仿真输出觉得没有问题,我测了max7537的控制信号脚上都是有波形的,max7537是按手册上典型电路来。另外我CPLD 是3.3V输出,max7537是个双路DAC,是5V电压,我是用3.3V直接驱动控制信号,但是努力了2天,还是没有反应,请求高手指点下

whj19860123 发表于 2011-4-14 17:02:48

void set_dacValue(void )       
{
        rst=0;
        clk=0;
        delay10us();
        clk=1;
        delay10us();
        clk=0;
        delay10us();
}

void main (void)
{
       ini_io();
   while(!ack);
       set_dacValue();
       rst=1;
       while(1)
          {       
                        delay10us();
                        clk=1;
                        delay10us();
                        clk=0;
          }
}

这是单片机写的程序

40130064 发表于 2011-4-14 23:58:41

我看资料上写着最小电源10。8V 哈

输入高电平最小2。4V低电平最大0。8V。

估计你电源低了

whj19860123 发表于 2011-4-15 08:54:50

电源给了15V,只是接口控制信号我CPLD输出是3.3V为高电平

whj19860123 发表于 2011-4-15 09:03:11

还有,感觉这份手册(max7537)有问题啊http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_630813L2RDSE.GIF
(原文件名:3.GIF)

和真值表不符啊(DAC A input LS register)

whj19860123 发表于 2011-4-15 09:05:11

谁用过这款DAC,指导一下

whj19860123 发表于 2011-4-15 09:35:28

http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_630821JC3YVM.GIF
(原文件名:4.GIF)
原理图
页: [1]
查看完整版本: 求助 CPLD控制DAC转换器 max7537