打印
[技术求助]

DAC問題(DAC161P997)

[复制链接]
2920|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ashue66|  楼主 | 2013-5-20 10:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DAC, AC, TI
Hi,各位TI大大們,打擾了。

小弟有個DAC(DAC161P997)問題,想請教各位大大。

請問大大們,使用DAC161P997這個顆DAC,

是否有使用過以下接法,且可正常work呢?
小弟使用以下接法,送時序無法改變其電流輸出,電流一直皆維持在4mA。
請問是否有其它需注意的地方呢?
謝謝各位大大。

相关帖子

沙发
cjhk| | 2013-5-20 18:41 | 只看该作者
看一看技术手册   技术手册上的推荐电路   按照那个电路搭出来   基本上没什么问题   相信自己

使用特权

评论回复
板凳
airwill| | 2013-5-20 20:35 | 只看该作者
本帖最后由 airwill 于 2013-5-20 20:36 编辑

这里有个特别要注意的地方. 就是那个电阻一定要上拉接法.
手册上说: Note that the pulse generated by ACKB is active LOW.
(SNAS515D –JULY 2011–REVISED MARCH 2013    Page25)

使用特权

评论回复
地板
ashue66|  楼主 | 2013-5-21 08:27 | 只看该作者
cjhk 发表于 2013-5-20 18:41
看一看技术手册   技术手册上的推荐电路   按照那个电路搭出来   基本上没什么问题   相信自己  ...

Hi cjhk,

是啊!技术手册上的推荐电路,基本上應沒問題才對。

我會再試著找看看,為什麼無法改變其電流輸出。

謝謝您!^_^

Thank you & Best Regards,

使用特权

评论回复
5
ashue66|  楼主 | 2013-5-21 08:33 | 只看该作者
airwill 发表于 2013-5-20 20:35
这里有个特别要注意的地方. 就是那个电阻一定要上拉接法.
手册上说: Note that the pulse generated by ACK ...

Hi airwill,

ACKB腳接電阻上拉至VDD的部份已有接上。

目前我在recheck控制時序部份,查看看是哪出了問題。

謝謝您的回複。^_^

Thank you & Best Regards,

使用特权

评论回复
6
hawksabre| | 2013-5-21 18:53 | 只看该作者
呵呵   问题解决了 就好   还是版主给力   顶一个   

使用特权

评论回复
7
ashue66|  楼主 | 2013-5-22 10:06 | 只看该作者
Hi,

目前還是無法控制DAC的電流輸出
我是以Microchip 18F26K22 MCU 對 DAC161P997作控制
SWIF TIMING (0、1、D....) 有使用示波器量測,Duty cycle皆符合Datasheet 規範
Symbol rate:大約 760Hz (規範300Hz ~ 19.2KHz)

測試結果:
ACKB腳一直為高電位,沒回ack。 (Datasheet : Note that the pulse generated by ACKB is active LOW.)

煩請各位大大幫幫忙,謝謝您們了。

以下是我的程式:

void DAC161P997_delay()
{
        delay_ms(1);
}

void DAC161P997_pin_init()
{
    output_low(PIN_A3);               
    DAC161P997_delay();
}

void DAC161P997_D()
{
    output_high(PIN_A3);               
    delay_us(500);         
    output_low(PIN_A3);              
    delay_us(500);         
}

void DAC161P997_0()
{
    output_high(PIN_A3);              
    delay_us(250);        
    output_low(PIN_A3);              
    delay_us(750);         
}

void DAC161P997_1()
{
    output_high(PIN_A3);               
    delay_us(750);         
    output_low(PIN_A3);              
    delay_us(250);         
}

void DAC161P997_A()
{
    output_low(PIN_A3);              
    delay_us(2000);         
}

void DAC161P997_write_data1() //  12mA current out
{
    int iout_data1[19]={0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0};    //0X8000_10
    int8 w;

    DAC161P997_D();
    for(w=0;w<19;w++)
    {
                if(iout_data1[w]==0)
                {
                    DAC161P997_0();
                }
                else
                {
                    DAC161P997_1();
                }
        }
        DAC161P997_D();
        DAC161P997_A();
}

void DAC161P997_write_config_data1() //寫控制暫存器 0x0095_10  unlock
{
    int config_data1[19]={1,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,1,1,0}; //暫存器0,資料0X0095_10  unlock
        int8 w;
       
        DAC161P997_D();
        for(w=0;w<19;w++)
        {
                if(config_data1[w]==0)
                {
                    DAC161P997_0();
                }
                else
                {
                    DAC161P997_1();
                }
        }
        DAC161P997_D();
        DAC161P997_A();
}

void DAC161P997_write_config_data2() //控制暫存器 0X021D
{                                   
    int config_data2[19]={1,0,0,0,0,0,0,1,0,0,0,0,1,1,1,0,1,0,0}; //暫存器2,資料0X021D_00   ACK_1 FRAME_1 PARITY_1 CHANNEL_0 LOOP_1
    int8 w;
    DAC161P997_D();
    for(w=0;w<19;w++)
    {
                if(config_data2[w]==0)
                {
                    DAC161P997_0();
                }
                else
                {
                    DAC161P997_1();
                }
        }
        DAC161P997_D();
        DAC161P997_A();
}

void DAC161P997_write_config_data3() //控制暫存器 0x00AA_lock
{
    int config_data3[19]={1,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,0}; //暫存器0,資料0X00AA_10
        int8 w;

        DAC161P997_D();
        for(w=0;w<19;w++)
        {
                if(config_data3[w]==0)
                {
                    DAC161P997_0();
                }
                else
                {
                    DAC161P997_1();
                }
        }
        DAC161P997_D();
        DAC161P997_A();
}

main()
{
       DAC161P997_write_config_data1(); //控制暫存器unlock 資料0X0095_10  unlock   
       DAC161P997_write_config_data2(); // ACK_1 FRAME_1 PARITY_1 CHANNEL_0 LOOP_1
       DAC161P997_write_config_data3(); //控制暫存器 0x00AA_lock
       for(;;)
       {
              DAC161P997_write_data1();   //12mA current out
       }
}

使用特权

评论回复
8
airwill| | 2013-5-27 08:58 | 只看该作者
ACKB腳一直為高電位,沒回ack。
我猜是控制时序问题 (包括复位), 我建议可以用示波器抓一下波形, 对照数据手册验证一下

使用特权

评论回复
9
ashue66|  楼主 | 2013-5-28 13:12 | 只看该作者
airwill 发表于 2013-5-27 08:58
ACKB腳一直為高電位,沒回ack。
我猜是控制时序问题 (包括复位), 我建议可以用示波器抓一下波形, 对照数据 ...

Hi airwill,

控制時序的部份,已有使用示波器抓取下來,並對照datasheet 的時序規範,

皆符合,我會再仔細的看看datasheet的各種相關規範與注意事項,

謝謝您撥空回覆我的問題。

謝謝您!^^

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝