8通道DA芯片tlv5610,输出第一个通道同时,第二个通道会得到一样的输出。
请问该芯片是否可以控制单通道输出?
Robin Feng:
你好,可以的,控制不同寄存器即可,参见手册12页
The 16-bit data word consists of two parts:· Address bits (D150D12)· Data bits (D110D0)D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0A3 A2 A1 A0 DATARegister MapA3 A2 A1 A0 FUNCTION0 0 0 0 DAC A0 0 0 1 DAC B0 0 1 0 DAC C0 0 1 1 DAC D0 1 0 0 DAC E0 1 0 1 DAC F0 1 1 0 DAC G0 1 1 1 DAC H1 0 0 0 CTRL01 0 0 1 CTRL11 0 1 0 Preset1 0 1 1 Reserved1 1 0 0 DAC A and B1 1 0 1 DAC C and D1 1 1 0 DAC E and F1 1 1 1 DAC G and H12
user1479057:
回复 Robin Feng:
Robin您好,
试验了好多次,结果依旧,A,B通道会同时输出。
1.初始化程序(dac_5610_init())如下.
2.写入程序(dac_5610(u_int data_in))如下.
帮忙给予指导,非常感谢哦.
void dac_5610_init(){ DAFS = 0; _nop_(); DACLK = 1; _nop_();
DAFS = 1; _nop_(); DACLK = 0; _nop_();}
void dac_5610(u_int data_in){ u_char i;
DAFS = 0; DALDAC=1;
for (i=0;i<16;i++) { DACLK = 1; _nop_(); _nop_();
DADIN = (bit)(data_in&0x8000); _nop_(); _nop_();
DACLK = 0; _nop_(); _nop_();
data_in <<= 1;
_nop_(); _nop_(); }
DAFS=1; _nop_(); _nop_(); DACLK=1; _nop_(); _nop_(); DALDAC=0; _nop_(); _nop_();}
Robin Feng:
回复 user1479057:
那你的CDEF呢?
从你得代码上没有看到你对某个具体的地址进行操作, 请把你的每个地址寄存器值读出来给我看,谢谢
user1479057:
回复 Robin Feng:
主程序对于地址的具体操作,以及操作结果如下,tlv5610 VCC=5V,tlv5610参考电源4096mV。
u_int DA_setting=0x03FF;
dac_5610_init();
dac_5610(0x8000); //CTRL0 config,此步序执行完毕,tlv5610的8个通道输出为0.
dac_5610(DA_setting);//此步序执行完毕,tlv5610的A,B通道输出约为1024mV,其他CDEFGH通道输出为0.
user1479057:
回复 user1479057:
DA_setting=0x03FF,对比datasheet register map on page12,输出结果理论上是A通道输出3FF,其余7个通道未进行操作。
实际结果是A,B通道输出3FF.
Robin Feng:
回复 user1479057:
请单独操作B通道寄存器写其他值,看是否生效.请注意用示波器观察或回读是否有值被写到B通道去了.谢谢
user1479057:
回复 Robin Feng:
Hi,Robin您好,
tlv5610确定可以单独控制每一路的输出吗?
Robin Feng:
回复 user1479057:
是的确定,5608超多人用.
另请确认正规渠道购买
user1479057:
回复 Robin Feng:
Robin您好,
是上两个月从贵司申请的样片.
重新努力看了datasheet,程式,现象依旧,百思不得其解,用仿真器,MCU来试验都一样,单独操作A通道或者B通道,另一个通道均会出现相同的值.
选择的是uc mode。
另外,datasheet里面有句话的意思不太理解,LDAC is an asynchronous input。It can be held low if a simultaneous update of all eight channels is not needed。翻译过来就是说,LDAC是异步输入,如果不需要所有8个通道的同步更新的话,LDAC可以保持为低。不理解的地方就是,如果LDAC保持为低,那么如何输出DA数据呢?从datasheet来看,LDAC需要拉低持续twl(LDAC)时间,经过ts时间后,OUTx才会输出,LDAC怎么可以一直保持为低呢??
user1479057:
回复 user1479057:
Robin您好,
5608的驱动程序可以给参考下吗?我想对比下是否我的驱动哪里不对。