某大神调AD9854的感触。。。。
1。美国佬的东西真TMD贵,虽然功能很强大。而且样片难买。第一片在淘宝买的,连税点带邮费花了224,后来以为烧了,又买了两片加邮费带税点一共才306。奸商啊!(后来发现两次买的并不相同,第一次买的是AD9854ASVZ,第二次是AD9854ASTZ封装大小一样,ASTZ底部没有散热焊盘!)
2。发热量真的很大,凭手感就能知道芯片有没有正常工作,正常工作后开一会温度就上来了。幸好哥提前买好了散热片和导热胶,不过看这阵势我觉得去电脑城买个带风扇的南北桥散热器比较好。关掉inv sinc及其他不用功能发热的问题会好很多,尤其是 inv sinc ,自己取舍吧。恩,电源也得用容量够大的,还有LDO必须用大电流的。
3。能不用串行控制尽量不用串行线,因为涉及到一个数据更新时钟( updata clock )的问题, 这个数据更新时钟就是把端口寄存器中的数据加载到芯片寄存器中的信号,见datasheet中Page 34最后一段的描述。我就是因为没有注意这点调了几天没有反应。还是得好好看手册啊。
串行I/O模式时,最好使用外部I/O更新时钟模式,以免在串行通信时发生更新,导致由于只有部分数据传输而不能正确编程。要退出默认的内部更新模式,需要在设备上电主复位后编程控制寄存器,然后再启动REFCLK信号使此信息传输到寄存器组,迫使切换到外部设备更新模式。
时钟的控制可以用控制器控制晶振的0管脚,低电平时晶振是三态输出,高电平正常输出。不过要是你画板时没有连线,只有和我一样飞了。
4。开始我使用的程序是网上下载的,因为自己写的没信心,所以没怎么改,没想到似乎是因为MSB/LSB的问题,寄存器配置之类的都是乱的。后来借用之前写过的CC1100的SPI通信子程序,重新写了程序,才正常能用,关闭了不用的功能,发热量也小了许多,不会再开上几秒钟就烫的手指生疼了(用手指实时检测芯片温度)。看来有时候人应该自信一些,相信自己能做的很好,然后尽力去做到最好。
5。最后,仍然是数据更新时钟的问题,我用的MSP430的微控器,开始配置的是输入,因为AD9854的数据更新时钟默认是内部生成的。写控制寄存器的时候关闭晶振,写完控制寄存器后再开启晶振。配置的控制寄存器中数据更新时钟配置为外部模式,稍微延时后微控器相应管脚配置成输出并且置低(无效),开始写频率控制寄存器,写完后数据更新时钟管脚给个高脉冲更新芯片设置。之前我说担心AD9854芯片烧坏了,就是说的这个脚,因为我一直把它当输入的,单片机配置的是输出。可是后来写程序,却发现电路板每次重新上电后都要经过比较长的时间才能有正确的波形输出,我以为是SPI接口太慢,改了配置还不行,而且时间似乎是随机的。拿示波器看SPI总线的SCLK信号,数据几秒就发完了。再看单片机输出的updata clock信号,开始还有几个脉冲信号,后来就全是噪声,根本不是低电平。再开电试,只要手摸着 updata clock信号的焊盘或者管脚,马上有波形输出。想起来前几天调试ADF4350时候,必须手摸PD管脚才能有输出的问题,果断判断肯定是微控器管脚方向没有配置。检查程序果然把配置方向的宏定义写成了设置输出。所以管脚一直是高阻的输入状态,因此芯片并没有烧吧,啥叫傻人有傻福呢,嘿嘿。
或许,在硬件调试中,所谓高手,就是各种白痴弱智稀奇古怪的错误见得多一点而已吧。 |