原创 AD7793驱动程序,但愿有用

2008-11-14 17:52 6882 7 11 分类: 模拟

#include "Ad7793.h"


 


void Dly(unsigned int di)
 {
   unsigned int di1;
   for(di1=0;di1<di;di1++);
 
 
 }



void Ad7793Reset(void)   //Ad7793复位
   {
    
    
      unsigned char i;
      SPIM_Start(SPIM_SPIM_MODE_0|SPIM_SPIM_MSB_FIRST);


      PRT1DR&=~0x80;  //cs=0
      for(i=0;i<5;i++)
       {
        while( ! (SPIM_bReadStatus() & SPIM_SPIM_TX_BUFFER_EMPTY ) );
        SPIM_SendTxData(0xff);
       }
      PRT1DR|=0x80;  //cs=1
      Dly(10);
   
    }
void Ad7793Write(unsigned char iReg,unsigned char *iTxbuff,unsigned char iLen)//将iTxbuff数据写入iAddress地址开始iLen字节
   {
      unsigned char i;
      SPIM_Start(SPIM_SPIM_MODE_0|SPIM_SPIM_MSB_FIRST);
      PRT1DR&=~0x80;  //cs=0
      Dly(500);
      while( ! (SPIM_bReadStatus() & SPIM_SPIM_TX_BUFFER_EMPTY ) );
      SPIM_SendTxData(iReg);
      Dly(100);
      for(i=0;i<iLen;i++)
       {
        while( ! (SPIM_bReadStatus() & SPIM_SPIM_TX_BUFFER_EMPTY ) );
        SPIM_SendTxData(iTxbuff);
      
        }
      Dly(500); 
      PRT1DR|=0x80;  //cs=1
  
   
    }


 


void Ad7793Read(unsigned char iReg1,unsigned char *iRxbuff,unsigned char iLen1)
   {
      unsigned char i;
      unsigned char i1;
      //PRT1GS=0x4c;
      i1=iReg1|0x40;
      Dly(500);
      SPIM_Start(SPIM_SPIM_MODE_0|SPIM_SPIM_MSB_FIRST);
      PRT1DR&=~0x80;  //cs=0
      while( ! (SPIM_bReadStatus() & SPIM_SPIM_TX_BUFFER_EMPTY ) );
      SPIM_SendTxData(i1);
      Dly(100);
      SPIM_Start(SPIM_SPIM_MODE_3 | SPIM_SPIM_MSB_FIRST);
      for(i=0;i<iLen1;i++)
       {
         while( ! (SPIM_bReadStatus() & SPIM_SPIM_TX_BUFFER_EMPTY ) );
      SPIM_SendTxData(0);
         while( ! (SPIM_bReadStatus() & SPIM_SPIM_RX_BUFFER_FULL ) );  
       iRxbuff=SPIM_bReadRxData();
      
        }
      Dly(100);
      PRT1DR|=0x80;  //cs=1
      //PRT1GS=0x0c;  //hz dout
   
    }


  
 
   
void InisAd7793(void)
   {
    
     unsigned char iTx[3];
   
    
     iTx[0]=0x03;
     Ad7793Write(IoReg,iTx,1);  //配置1Ma电流输出
   
     iTx[0]=0x00;
     iTx[1]=0x0A;
     Ad7793Write(ModReg,iTx,2);    //设置连续转换模式,16.7HZ
   
     iTx[0]=0x30;
     iTx[1]=0x07;
     Ad7793Write(ConfigReg,iTx,2);
     PRT1GS=0x0c;    //hz out
    
    
   
    
  
  
    }    
   

文章评论4条评论)

登录后参与讨论

用户377235 2013-7-30 13:07

头文件里的定义都有些什么...

用户1168699 2012-9-29 18:34

谢谢楼主的程序,学习中

用户1360014 2009-11-11 09:39

正在学习使用AD7793,谢谢楼主的贡献精神!

bjshion_407728712 2008-11-14 18:11

供出代码,大家试用。仅供参考,不好使别骂俺
相关推荐阅读
bjshion_407728712 2012-06-11 08:59
忽然明白逝去的师傅们传递的一种真实
一个大家所应该秉持的风范是交出去更多,留给自己的是接下来的努力,十多年前俺和今天一样穷甚至更穷技术的时候,没人理俺只能靠打杂工东一榔头西一棒槌的学,期间做过传感器,模拟电路设计,干过现场施工……夸...
bjshion_407728712 2012-05-11 21:52
再认识模拟应用设计中正确的跟随
半夜睡不着,想起白天和一个做AE老朋友的朋友聊起他最近的工作,他比我年轻得多,现在无非是各种单片机程序工作,谈论包括其中有些客户需要仿造某电动车的电机驱动板子,某些人怎么仿照兰吉尔的超声波仪表之类...
bjshion_407728712 2012-05-10 14:14
一种包容的心情理解今天的模拟微弱信号检测行业前景
最近放下啤酒罐坐下来自己亲自动手设计一些仪器的前置放大器电路,发现自己已经生疏了很久的东西想捡起来还真费点劲,这与数年懒惰的性格有关。想找个明白些的人聊聊是否有何更好的思路发现也很难,个人感觉干这...
bjshion_407728712 2012-05-10 08:57
新年里的乐事
      新年伊始,由美国两家模拟类半导体巨头TI公司和ADI公司共同友情援助,于中国德州成立了旨在以在中国推广模拟半导体器件应用和高端涉及模拟类仪器应用设计为主的的德州模拟器件仪器公司(简称T...
bjshion_407728712 2012-05-09 18:36
寻找技术圈里未来十年的阿甘
做技术的日子里有时真要耐住寂寞,好多时候一眨眼机会就过去了,这和看流星一个样,你想看到那一缕光就需要长时间关注那片天空。庆幸自己没有从俗去为了多不哪里去的钱去改变自己的航向,继续坚持自己的方向,包...
bjshion_407728712 2012-04-18 08:35
韩非子很温柔,唐鸿宾老爷子也要发愁
近日处理小信号,被搞得焦头烂额,期间试验了N多种方法,可以说是我做技术以来最健艰苦的一段,24位AD采集完数据进DSP做“软相关”也没搞定整个噪音,最后还是安下心来决定用模拟的锁相放大思想解决这种...
我要评论
4
7
关闭 站长推荐上一条 /2 下一条