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.

[参考译文] DAC53401EVM:DAC53401 EVM

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1231409/dac53401evm-dac53401-evm

器件型号:DAC53401EVM

写一个代码 Arduino 但我没有得到正确的 DAC 结果在 Vout 引脚,不断我读错误的值,只是检查我的代码,让我知道  

#include

#define DevID 0x50 // DAC 器件 ID
#define regDAC 0x40 // DAC 寄存器地址
#define VREF 3 // DAC 基准电压
#define DAC_resolution 1024 // DAC 分辨率(8位)

//重置 DAC 的函数
void DAC_RESET(){
Wire.beginTransmission(devId);
Wire.write (regDAC);
Wire.write (0x06);
Wire.endTransmission ();
}

//函数为 DAC 上电
void dac_power_on (){
Wire.beginTransmission(devId);
Wire.write (regDAC);
Wire.write (0x0F);
Wire.endTransmission ();
}

//此函数关闭 DAC
void dac_power_off (){
Wire.beginTransmission(devId);
Wire.write (regDAC);
Wire.write (0x00);
Wire.endTransmission ();
}

//函数锁定 DAC
void DAC_LOCK (){
Wire.beginTransmission(devId);
Wire.write (0xD3);
Wire.write (0x50);
Wire.endTransmission ();
}

//设置 DAC 的输出电压函数
void SET_DAC_OUTPUT_VOLTAGE (双电压){
//根据所需的电压计算 DAC 代码
int dacCode =(int)(volt/VREF * DAC_resolution);

//将 DAC 代码写入寄存器
Wire.beginTransmission(devId);
Wire.write (0x21);
Wire.write (dacCode);
Wire.endTransmission ();
}

void setup(){
Wire.begin();
Serial.begin(9600);

//重置 DAC
// dac_reset ();

//给 DAC 上电
dac_power_on ();
dac_lock();
//执行其它初始化任务...
}

void loop(){
//连续测量 DAC 值

//将 DAC 输出电压设置为2.5V
SET_DAC_OUTPUT_VOLTAGE (3.0);

//读取 DAC 值
wire.requestFrom (DevID、1);//从 DAC 请求1个字节
如果(Wire.available()){
int dacCode = Wire.Read ();
双精度电压=(double) dacCode / DAC_resolution * VREF;

//打印测得的电压
serial.print ("DAC 值:");
serial.print (dacCode);
serial.print ("测量电压:");
serial.print (电压、2);
serial.println (" V");
}

//如果需要添加延迟
延迟(1000);
}

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

    尊敬的 Rahul:  

    Arduino 通常如何接受设备地址? 当 A0拉至接地时的7位器件地址 为0x48。 假设 W/W 位为0、则8位地址将为0x90。 我认为任何 A0设置都不会导致地址为0x50。  

    根据 A0连接到的内容、遵循该表:

    您能否用显示的 SCL 和 SDA 分享您的其中一条写入命令的放大屏幕截图? 理想情况下是放大的完整命令、因此我可以清楚地看到每个 SCL 脉冲的上升沿和下降沿。  

    此致!

    Katlynne Jones