你好,我这里有个问题想请教你,用verilog编写AD9777的驱动程序,不知道该如何下手,谢谢了!

你好,我这里有个问题想请教你,用verilog编写AD9777的驱动程序,不知道该如何下手,谢谢了!,第1张

你先用C实现,或找到C的驱动程序。然后把C改成verilog 。前提是你懂verilog语法。要再加点东西,比如采个电压用数码管显示出来。这完全是个本科毕设的水平了。

这个芯片用SPI驱动,FPGA作为SPI主设备。显然用单片机驱动更方便。

#include <AT89X51.H>   

#include<math.h>   

#include<INTRINS.h>   

#define uchar unsigned char   

#define uint unsigned int   

   

sbit AD7707_DRDY=P3^3   

sbit AD7707_DIN=P1^5   

sbit AD7707_DOUT=P1^6   

sbit AD7707_SCLK=P1^7   

   

bdata uchar WtrByte   

sbit WtrBit=WtrByte^7   

   

   

void Init_AD7707(void) /*初始化AD7707*/   

{   

    uchar i   

    AD7707_SCLK=1   

    AD7707_DIN=1   

    for(i=0i<100i++) /*防止接口迷失*/   

    {   

        AD7707_SCLK=0   

        AD7707_SCLK=1   

    }   

}   

   

void WriteToReg_AD7707(uchar RegByte) /*写AD7707寄存器*/   

{   

    uchar i   

    WtrByte=RegByte   

   

    for(i=0i<8i++)   

    {   

        AD7707_SCLK=0   

        AD7707_DIN=WtrBit   

                AD7707_SCLK=1   

        WtrByte=WtrByte<<1   

   

    }   

}   

void AD_AINT1(void)  //通道1初始化   

{   

   

    WriteToReg_AD7707(0x20) /*激活通道 AIN1/LOCOM, 下一步 *** 作为写 Clock Register*/   

    WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/   

    WriteToReg_AD7707(0x10) /*激活通道 AIN1/LOCOM, 下一步 *** 作为写 Setup Register*/   

    WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/   

   

}   

   

   

void AD_AINT2(void)     //通道2初始化   

{   

    WriteToReg_AD7707(0x21) //*激活通道 AIN2/LOCOM, 下一步 *** 作为写 Clock Register*/   

    WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/   

    WriteToReg_AD7707(0x11) /*激活通道 AIN2/LOCOM, 下一步 *** 作为写 Setup Register*/   

    WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/   

}   

void AD_AINT3(void)   //通道3初始化   

{       WriteToReg_AD7707(0x23) /*激活通道 AIN3/HICOM, 下一步 *** 作为写 Clock Register*/   

    WriteToReg_AD7707(0x18) /*启用 Master Clock, 2.4576MHz Clock, 设置 Output Rate 为 50Hz*/   

    WriteToReg_AD7707(0x13) /*激活通道 AIN3/HICOM, 下一步 *** 作为写 Setup Register*/   

    WriteToReg_AD7707(0x44) /*Gain = 1, Unipolar 模式, Buffer 关闭, 清 FSYNC 并执行 Self Calibration*/   

   

 }   

uint Read_AD7707(void) /*读取AD7707数据*/   

{   

    uchar i   

    uint Data=0   

   

       while(AD7707_DRDY==1)   

   

    for(i=0i<16i++)   

    {   

        Data=Data<<1   

        AD7707_SCLK=0   

        Data=Data|AD7707_DOUT   

        AD7707_SCLK=1   

   

         }   

    return Data   

}

供供参考:http://www.zhixinrui.com/forum.php?gid=1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8110748.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存