现在的位置: 首页 > 综合 > 正文

AD9512单片机控制编程

2018年02月01日 ⁄ 综合 ⁄ 共 1124字 ⁄ 字号 评论关闭

AD9512是一个时钟分配IC,概述如下:     

  • 两路1.6 GHz差分时钟输入
  • 5个可编程分频器,1至32整数分频比
  • 用于输出到输出延迟粗调的相位选择
  • 3路独立的1.2 GHz LVPECL输出
    加性输出抖动:225 fs均方根值
  • 2路独立的800 MHz/250 MHz LVDS/CMOS输出
    加性输出抖动:275 fs均方根值
    1路输出提供延迟精调,5位延迟字
  • 4线式或3线式串行控制端口
  • 节省空间的48引脚LFCSP封装

         主要控制选择输入时钟(Clk1或Clk2,分频器分频比(1-32,其中1为bypass旁路),OUT3和OUT4输出(LVDS或CMOS),OUT4 Adjust delay是否使用等等),可以参看功能框图。 

        文档说明下载地址很多,如:http://www.analog.com/en/clock-and-timing/clock-generation-and-distribution/AD9512/products/product.html#product-documentation-nav

       串口控制引脚:SCLK:串口时钟,SDIO:串口 双向IO口,SDO:串口输出,CSB:片选信号。

       程序使用SPI通讯,关键只有三个:

       1,单片机时钟和IO口的初始化(包括禁用看门狗),这个比较简单,时钟内部时钟即可,IO口数字输入,推挽输出。

       2,SPI的时序问题,这个也比较简单,CSB=0;CLK=0; data = val;  CLK=1;CSB=1;

      CSB must be brought low to initiate a communication cycle. CSB must be brought high at the completion of a communication cycle。还有使用的是默认的MSB,高位先发。

      3,保证发送数据的正确性。这个就要看文档了,其实也不难,本人采用的一次发送三个字节(数据8位,地址13位,最高三位分别为读写控制位和数据长度控制位)。

R/W = 0;//read
W1 W0 = 00;//Only one byte of data

至于发送的地址和数据就要看文档了。

如配置Devider0为bypass,则地址为0x4B,数据为0x10(最高位为1).

unsigned long div0 = 0x4B<<8  |  0x10;

Send_Data(div0);//记住由于unsigned long只发三个字节而且MSB发送,则必须先把数据左移8位,具体看自己写的程序,也可以一个一个字节发。

   很多寄存器地址采用默认设置即可,最后地址0x5A需要发送一个1 更新设置。

   贻笑大方了。

抱歉!评论已关闭.