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.

[参考译文] DAC8568:复位所有内容、启用内部基准并为其提供启动?

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1255847/dac8568-reset-everything-enable-internal-reference-and-give-it-a-go

器件型号:DAC8568
主题中讨论的其他器件: OPA2134

@大家好!

让 DAC8568 (D 级)完全正常工作时出现了令人难以置信的问题。 我觉得,我的鸡巴在她的屁眼里已经完全勃起了,我真的很喜欢她的乳头。

我的配置:

Teensy 4.1 MCU。 时钟、数据和芯片选择线路已正确连接、LDAC 接地、CLR 为 VDD (5伏)。 我不想使用 LDAC 和 CLR 功能、我想立即写入和更新电压。

CHANNEL_A 输出进入 OPA2134一半、配置为电压跟随器。 V+也为5伏(现在、稍后将为+/- 12伏)、V-为 GND。

使用一个相当好的 DMM 测量的相位噪声。

这是我的测试代码:

#包含
#包含

//------------------------------------------------------- DAC 和移位寄存器变量
#define DAC_SYNC_PIN 8 // CS 引脚用于间距 DAC8568 (SYNC 引脚)
#define DAC_MOSI_PIN 11 // MOSI 引脚
#define DAC_SCLK_PIN 13 // SCLK 引脚

//------------------------------------------------------- 模板
uint8_t null = 0b0000;//无关
uint8_t CHANNEL_A = 0b0000;// A
uint8_t CHANNEL_B = 0b0001;// B
uint8_t CHANNEL_C = 0b0010;// C  
uint8_t CHANNEL_D = 0b0011;// D
uint8_t CHANNEL_E = 0b0100;// E
uint8_t CHANNEL_F = 0b0101;// F
uint8_t CHANNEL_G = 0b0110;// G
uint8_t CHANNEL_H = 0b0111;// H
uint8_t CHANNEL_ALL = 0b1111;//全部

SPISettings spiSettings (1000000、MSBFIRST、SPI_MODE1);  // SPI 设置

//------------------------------------------------------- 写入 DAC8568
void writeDAC (int sync_PIN、uint8_t prefix、uint8_t control、uint8_t address、uint16_t data、 uint8_t 特性){   
 SPI.beginTransaction(spiSettings);   //开始 SPI 事务
 digitalWrite (SYNC_PIN、低电   平);//同步低电平
 spi.transfer32 ((前缀<< 28)|(control << 24)|(地址<< 20)|(数据<< 4)|功能); //构建32位字并发送
 delayMicroseconds (10);  //延迟
 digitalWrite (SYNC_PIN、高电  平);//同步高电平
 spi.endTransaction ();  //结束 SPI 事务


//------------------------------------------------------- 设置
void setup(){
 延迟(1000); //等待1秒
 Serial.begin(115200);  //以115200波特启动串行监视器
 pinMode (DAC_SYNC_PIN、输出); //将间距 DAC CS 引脚设置为输出
 digitalWrite (DAC_SYNC_PIN、高电平);  //同步高电平
 pinMode (DAC_MOSI_PIN、输出); //将 DAC MOSI 引脚设置为输出
 pinMode (DAC_SCLK_PIN、输出); //将 DAC SCLK 引脚设置为输出
 SPI.begin();
 延迟(1000); //等待1秒
 writeDAC (DAC_SYNC_PIN、空、0b1001、空、0b101000000000、 null);//始终为内部基准加电


//------------------------------------------------------- 环路
void loop(){
 for (uint32_t I = 0;I < 65535;I += 2048){
   writeDAC (DAC_SYNC_PIN、空、0b0011、CHANNEL_A、I、 null);//将电压写入 DAC 通道 A 寄存器并更新寄存器
   serial.println (i);
   延迟(5000);
 }

没有什么特别的、只是尝试逐步降低一些电压。

结果:通道_A 输出缓慢地在大约500ish mV 摆动、根本没有变化。

它以前工作、当电压计数器的值为32768时、电压仅上升到大约2.5伏、然后再次从0伏开始。

我尝试了不同的代码、具有相同的效果。 然后我切换到发布的代码、不起作用。

反复阅读数据表、我尝试了很多配置、但我承认、我现在迷路了。

是否必须重置整个芯片? 在软件复位后是否可以使其正常工作?

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

    很抱歉有此麻烦-我将所有内容尽可能短且紧密地重新接线、并将10k 串联在运算放大器缓冲器输出端。 现在、一切几乎都按预期运行。