Other Parts Discussed in Thread:DAC61416
DAC61416芯片供电正常,VIO 1.8V, VAA VDD 5.0V,VCC +12.2V,VSS -12.2V,SPI通信已通过读取DEVICEID验证正常,需输出方波电压(非差分),按照数据手册进行编程(简要代码如下),实际输出为0,请帮忙解答
//Power-on Device, Disable Soft-toggle, Set Streaming Mode,Power-on Internal Reference
SPI_Transmit 0x03(***),0x0A,0x8C
SPI_Transmit 0x04(GENCONFIG),0x3F,0x00
//Select Range for all the channels as ±10V
SPI_Transmit 0x0A(DACRANGE0),0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA
//Power-on DAC Channels
SPI_Transmit 0x09(DACPWDWN),0x00,0x00
//Set DAC channel in synchronous mode and disable toggle mode for that channel
SPI_Transmit 0x06(SYNCCONFIG),0xFF,0xFF
SPI_Transmit 0x07(TOGGCONFIG0),0x00,0x00,0x00,0x00
//Write Positive voltage code to Register A
SPI_Transmit 0x10(DAC0),0xXX,0xXX,0xXX,0xXX..
数据如0x91,0x60,0x91,0xA0,0x92,0x50…
//Issue a DAC trigger signal to load Register A
LDAC引脚拉低
//Write Negative voltage code to Register B
SPI_Transmit 0x10(DAC0),0xXX,0xXX,0xXX,0xXX..
//Enable toggle mode to load Register B
SPI_Transmit 0x07(TOGGCONFIG0),0x55,0x55,0x55,0x55
//Input PWM
MCU发送PWM信号给TOGGLE0引脚
Amy Luo:
您好,
因为您使用的是DAC0,寄存器08您配置了吗,在这里没有看到
,
user6517830:
配置了,SPI_Transmit 0x07(TOGGCONFIG0),0x55,0x55,0x55,0x55,使用的是Streaming Mode,16个通道均需使用
,
Amy Luo:
实测基准电压是否正常?
您配置完成寄存器后,试着读出来过吗?以确认所有的寄存器按期望值写入
TOGGLE0引脚上输入电平是否满足高低电平要求?
确认LDAC引脚是否拉低?
您使用数据手册10.2.2章节中的代码看是否有输出
,
user6517830:
已确认
,
user6517830:
另外,按照数据手册的TOGGLE Mode流程编写程序,将TOGGLE引脚接入PWM信号,发现实际并没有方波电压生成,而只输出Register B的电压值,请问这是什么原因?
,
user6517830:
另外,按照数据手册的TOGGLE Mode流程编写程序,将TOGGLE引脚接入PWM信号,发现实际并没有方波电压生成,而只输出Register B的电压值,请问这是什么原因?
,
Amy Luo:
您的TOGGLE frequency是多少?最大只能到100kHZ
您使用数据手册10.2.2章节中的代码,测试情况是怎样的呢
因为我发现10.2.2章节中的代码流程与9.4.1 Toggle Mode章节中描述的有一点不同,9.4.1 章节中第一步即是将DAC channel 设置synchronous mode,而10.2.2章节中是写入Register A值后设置的同步模式
,
user6517830:
60Hz,写入Register A与设置synchronous mode位置调换后还是未能产生方波电压,仍是直线
,
user6517830:
已自己解决
,
Amy Luo:
很高兴您的问题得到解决,您可以分享出您的解决方法吗
,
user6517830:
只输出Register B的电压,故猜测Register A的电压可能被覆盖了,就是说输入到DAC寄存器的值会立马变成输出,而9.4.1中LDAC引脚的Triggle信号是用来将Register A的值从Buffer下载到寄存器,所以可以尝试在写入Register A后,拉低LDAC后,加一个延迟(让下载有时间去完成),然后再将LDAC拉高,阻断之后写入的Register B从Buffer下载到寄存器
,
user6517830:
另外,SPI的Streaming Mode估计只针对完整写入16个DAC寄存器有效
,
Amy Luo:
非常感谢您的分享
关于Streaming Mode,您是指需要完整写入DAC寄存器有效吗?少于16个DAC寄存器应该是可行的
,
user6517830:
需要输出16路,使用Streaming Mode是没问题的;但如果少于16路,譬如12路,我不确定,我也没去试。因为我是使用4片来输出50路,每片相对独立。调试过程中,一开始将STR-EN位使能,发现SPI读取不了寄存器,具体写入其它寄存器的值是否有效暂未验证。所以输入单个寄存器之前,我就先把STR-EN位失能;输入48路DAC寄存器值时,再把STR-EN位使能;输入最后两路前,我就再把STR-EN位失能,实际结果是可以的…
,
Amy Luo:
好的,感谢您的反馈