如题,不能写进去寄存器,只能读到有些寄存器是默认值0x8000,有些是0x0000。向配置寄存器写0x8180 只能读到0x8000;如图,用dsp28335的memory功能查看,其中地址0x4020是配置寄存器的地址,红色框框内的是dac寄存器(一部分)的地址和数据:
LDAC锁存信号永久接地,检查cs片选信号 WRorREAD信号硬件连接没问题,请问大概是什么问题呢?会不会是时序的问题?
如果是时序问题,该怎么配置?我不会配置啊。我用的是f28335,150MHZ.
EALLOW;
XintfRegs.XINTCNF2.bit.XTIMCLK = 1;
// No write buffering
XintfRegs.XINTCNF2.bit.WRBUFF = 0;
// XCLKOUT is enabled
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
// XCLKOUT = XTIMCLK/2
XintfRegs.XINTCNF2.bit.CLKMODE = 0;
// Zone 0————————————
XintfRegs.XTIMING0.bit.XWRLEAD = 3;
XintfRegs.XTIMING0.bit.XWRACTIVE = 5;
XintfRegs.XTIMING0.bit.XWRTRAIL = 3;
XintfRegs.XTIMING0.bit.XRDLEAD = 3;
XintfRegs.XTIMING0.bit.XRDACTIVE = 5;
XintfRegs.XTIMING0.bit.XRDTRAIL = 3;
XintfRegs.XTIMING0.bit.X2TIMING = 0;
XintfRegs.XTIMING0.bit.USEREADY = 0;
XintfRegs.XTIMING0.bit.READYMODE = 1; // sample asynchronous
XintfRegs.XTIMING0.bit.XSIZE = 3;
Wanda WANG:
dac8728是并行接口控制模式,时序比较简单。可能是你某些控制引脚给的电平不对。
你能详细描述下你向配置寄存器写0x8180 的过程吗?ADC的那个控制引脚你是如何配的。
miao young:
回复 Wanda WANG:
你好,我是用ccs3.3 dsp28335 通过cpld译码向地址0x4020写入寄存器值0x8180,即:*(Uint32 *)0x4020=0x8180;也可以通过ccs的memory功能向0x4020写,都写不进去。但是读寄存器又没问题。用万用表测得实际输出电压是14.7V。我的参考电压是+5v。
好像dsp的时序是先拉低cs片选信号,然后再拉低写信号wr,而dac8728写时序,是先拉低写信号wr,然后再拉低cs,两者前后顺序不一样,这个有影响么?
关于配置。您说的adc的配置我不知道您是不是具体指哪个引脚,我把所有控制引脚都列出来好了,还请你看一下:
USB/BTC ,LDAC(直接接地,与上图不一样), gpio这 三个信号接地。CLR RSTSEL RST 上拉接高。另外就是cs和wr信号。有没有漏掉什么控制信号?
Decapton Wang:
回复 miao young:
LDAC不能直接接地吧,正常的操作应该是串行数据依次写到DAC内部的移位寄存器,然后用~LDAC拉低把移位寄存器里的值写到DAC里。现在~LDAC一直为低,有可能会出问题。