This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DAC081C081:DAC081C081

Guru**** 1133870 points
Other Parts Discussed in Thread: ADS1015, DAC081C081, ADS1115
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/607066/dac081c081-dac081c081

器件型号:DAC081C081
主题中讨论的其他部件:ADS1015ADS1115

大家好,  我有 I2C 总线,DAC081C081和 ADS1015  DAC081C081的地址为 D (十六进制),ADS1015的地址为49 (十六进制),主器件为 micro-PC Linux,不含 OpenWrt。

问题:

如果我 对 DAC081C081寄存器执行写操作、我没有问题(如果写入值为 FF (十六进制)、则进行采样 、我的 VOUT 为3.3V)、但在读取 ADS1015 (我 从 ADS1015读取正确的值)后 、DAC081C081的 VOUT 降至 0、109V?????  如果    读取  DAC081C081寄存器的值、 则该值会发生变化???

Fabrizio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Fabrizio、

    欢迎使用 E2E、感谢您的提问。 请重新检查 ADS1015的从器件地址吗? 因为它可能会与 DAC 的广播地址相冲突。 我只是想确保这不是原因。

    您是否还可以发送波形的示波器捕获?

    此致、
    Uttam Sahu
    精密 DAC 应用工程师
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、已重新标记的 Slade ID od ADC (0x49)、不是 DAC 的 bloardcast 地址(它是0x48)。

    现在我无法发送波形、如果您需要、可以发送用于在 ADC 和 DAC 上进行读写的源代码。

    Fabrizio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要源代码吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请发送。

    此致、
    Uttam
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    void dac0815(){

    int ADS_address = 0xD;// I2C 总线上我们器件的地址
    Int I2CFile;
    unsigned char writeBuf[2];//缓冲区、用于存储我们写入 I2C 器件的3个字节
    unsigned char readBuf[2];// 2字节缓冲区、用于存储从 I2C 器件读取的数据

    int16_t val;//存储 ADC 转换的16位值

    I2CFile = open ("/dev/i2c-0、O_RDWR);//打开 I2C 器件

    ioctl (I2CFile、I2C_SLAVE、ADS_ADDRESS);//指定要与之通信的 I2C 从设备的地址

    writeBuf[0]= 0x30;//这会将配置寄存器的8个 MSB (位15-8)设置为11000011
    writeBuf[1]= 0x00;//这会将配置寄存器的8个 LSB (位7-0)设置为10000011

    写入(I2CFile、writeBuf、2);

    readBuf[0]= 0;
    readBuf[1]=0;

    usleep(20000);
    读取(I2CFile、readBuf、2);//将转换寄存器的内容读取到 readBuf 中
    printf ("DAC 0:%d %d \n"、readBuf[0]、readBuf[1]);

    关闭(I2CFile);



    void dac08256(){


    int ADS_address = 0xD;// I2C 总线上我们器件的地址
    Int I2CFile;
    unsigned char writeBuf[2];//缓冲区、用于存储我们写入 I2C 器件的3个字节
    unsigned char readBuf[2];// 2字节缓冲区、用于存储从 I2C 器件读取的数据

    int16_t val;//存储 ADC 转换的16位值

    I2CFile = open ("/dev/i2c-0、O_RDWR);//打开 I2C 器件

    ioctl (I2CFile、I2C_SLAVE、ADS_ADDRESS);//指定要与之通信的 I2C 从设备的地址

    writeBuf[0]= 0x3F;//这会将 CONFIG 寄存器的8个 MSB (位15-8)设置为00011111
    writeBuf[1]= 0xFF;//这会将配置寄存器的8个 LSB (位7-0)设置为11111111


    //将 writeBuf 写入 ADS1115、3指定我们要写入的字节数、
    //这将开始单次转换
    写入(I2CFile、writeBuf、2);

    //初始化用于从 ADS1115读取数据到0的缓冲区
    readBuf[0]= 0;
    readBuf[1]=0;

    usleep(20000);
    读取(I2CFile、readBuf、2);//将转换寄存器的内容读取到 readBuf 中
    printf ("DAC FF:%d %d \n "、readBuf[0]、readBuf[1]);

    关闭(I2CFile);


    void analogin (){


    int ADS_address = 0xD;// I2C 总线上我们器件的地址
    Int I2CFile;
    unsigned char writeBuf[3];//缓冲区、用于存储我们写入 I2C 器件的3个字节
    unsigned char readBuf[2];// 2字节缓冲区、用于存储从 I2C 器件读取的数据

    int16_t val;//存储 ADC 转换的16位值

    I2CFile = open ("/dev/i2c-0、O_RDWR);//打开 I2C 器件

    ioctl (I2CFile、I2C_SLAVE、ADS_ADDRESS);//指定要与之通信的 I2C 从设备的地址

    //这三个字节被写入 ADS1115以设置配置寄存器并启动转换
    writeBuf[0]= 1;//这会设置指针寄存器、以便以下两个字节写入配置寄存器

    writeBuf[1]= 0x44;//这会将配置寄存器的8个 MSB (位15-8)设置为11000011
    writeBuf[2]= 0x83;//这会将配置寄存器的8个 LSB (位7-0)设置为10000011


    //将 writeBuf 写入 ADS1115、3指定我们要写入的字节数、
    //这将开始单次转换
    写入(I2CFile、writeBuf、3);

    //初始化用于从 ADS1115读取数据到0的缓冲区
    readBuf[0]= 0;
    readBuf[1]=0;

    writeBuf[0]= 0;//将指针寄存器设置为0以从转换寄存器中读取
    写入(I2CFile、writeBuf、1);
    usleep(20000);
    读取(I2CFile、readBuf、2);//将转换寄存器的内容读取到 readBuf 中
    // printf ("web 模拟值:%d %d \n"、readBuf[0]、readBuf[1]);
    Val = readBuf[0]<< 8 | readBuf[1];//将 readBuf 的两个字节合并为单个16位结果
    printf ("ADC 值:%d "、val);
    printf ("电压读数%f (V)\n",(((float) val* 0.0625)/1000);//将结果打印到终端,首先将二进制值转换为 mV

    关闭(I2CFile);


    void main(){
    for (;;){
    //nalog_in ();
    analoging();
    睡眠(2);
    dac08256();
    睡眠(3);
    dac0815();
    睡眠(3);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发送了源代码
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Fabriazo、

    我很期待这件事。 很快就会回来。

    此致、
    Uttam