ads7843编程程序中有AD_READ, AD_LOOP分别是什么意思啊?还有A是什么寄存器?AAC是什么寄存器?C是什么寄

ads7843编程程序中有AD_READ, AD_LOOP分别是什么意思啊?还有A是什么寄存器?AAC是什么寄存器?C是什么寄,第1张

AD_READ, AD_LOOP是编程人员自己定的子程序起始地枯缺址或程序跳跃地址,从字面意思理解就是AD_READ:读AD转换值; AD_LOOP:循环启动AD转换;

A是累加器,常用作数据处旁庆理交换的暂存地址AAC应该打错了,是ACC吧,就是累加器A;C即CY是标志位,溢出位.,位处理时的交换没启辩位。

你先用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/12404344.html

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

发表评论

登录后才能评论

评论列表(0条)

保存