搜索
bottom↓
回复: 7

求助 CPLD控制DAC转换器 max7537

[复制链接]

出0入0汤圆

发表于 2011-4-14 16:53:21 | 显示全部楼层 |阅读模式
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 ;



(原文件名:1.GIF)


(原文件名:2.GIF)
点击此处下载 ourdev_630701FBBIIT.pdf(文件大小:5.58M) (原文件名:MX7537-MX7547.pdf)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-4-14 16:57:50 | 显示全部楼层
仿真输出觉得没有问题,我测了max7537的控制信号脚上都是有波形的,max7537是按手册上典型电路来。另外我CPLD 是3.3V输出,max7537是个双路DAC,是5V电压,我是用3.3V直接驱动控制信号,但是努力了2天,还是没有反应,请求高手指点下

出0入0汤圆

 楼主| 发表于 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;
          }
}

这是单片机写的程序

出0入0汤圆

发表于 2011-4-14 23:58:41 | 显示全部楼层
我看资料上写着最小电源10。8V 哈

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

估计你电源低了

出0入0汤圆

 楼主| 发表于 2011-4-15 08:54:50 | 显示全部楼层
电源给了15V,只是接口控制信号我CPLD输出是3.3V为高电平

出0入0汤圆

 楼主| 发表于 2011-4-15 09:03:11 | 显示全部楼层
还有,感觉这份手册(max7537)有问题啊
(原文件名:3.GIF)

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

出0入0汤圆

 楼主| 发表于 2011-4-15 09:05:11 | 显示全部楼层
谁用过这款DAC,指导一下

出0入0汤圆

 楼主| 发表于 2011-4-15 09:35:28 | 显示全部楼层

(原文件名:4.GIF)
原理图
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 15:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表