网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> TI DSP代码示例 >> C2000 >> 文章正文
  计量芯片7022与TMS320F206的SPI通讯程序         ★★★ 【字体:
计量芯片7022与TMS320F206的SPI通讯程序
作者:61IC    文章来源:本站原创    点击数:    更新时间:2007-1-17    

计量芯片7022与TMS320F205的SPI通讯程序

#include <C:\TDS-EMU2XX-1\gzy\tyclh.h>
#include <C:\TDS-EMU2XX-1\gzy\ADio.h>

extern unsigned i_574vol;

/*---------------------7022_a----------------------------*/

#define cs_a_h    i_574vol |= 0x0020;    CsIo574= i_574vol; Wait;                                  
#define cs_a_l    i_574vol &= 0x00df;    CsIo574= i_574vol; Wait;
#define sclk_a_h    i_574vol |= 0x0008;    CsIo574= i_574vol; Wait;
#define sclk_a_l    i_574vol &= 0x00f7;    CsIo574= i_574vol; Wait;
#define data_a_h    i_574vol |= 0x0010;    CsIo574= i_574vol; Wait;
#define data_a_l    i_574vol &= 0x00ef;    CsIo574= i_574vol; Wait; 

/*---------------------7022_b----------------------------*/

#define cs_b_h    i_574vol |= 0x0004;    CsIo574= i_574vol; Wait;                                  
#define cs_b_l    i_574vol &= 0x00fb;    CsIo574= i_574vol; Wait;
#define sclk_b_h    i_574vol |= 0x0001;    CsIo574= i_574vol; Wait;
#define sclk_b_l    i_574vol &= 0x00fe;    CsIo574= i_574vol; Wait;
#define data_b_h    i_574vol |= 0x0002;    CsIo574= i_574vol; Wait;
#define data_b_l    i_574vol &= 0x00fd;    CsIo574= i_574vol; Wait;
/*------------------------------------------------------*/
/*void read7022_a(int com);   
void write7022_a(int com,long data);
void read7022_b(int com);   
void write7022_b(int com,long data); */

/*-------------------------7022_a--------------------------*/

long read7022_a(int com)
{ long data=0;
 long jj=0;
 int i=0;
 int k=0x80;
 reg_aspcr&= 0xfff0; 
 cs_a_h;
 sclk_a_l;
 cs_a_l;
 for (i=0;i<=7;i++)     /*送地址*/
 {
  if (com&k)
  {
      sclk_a_h;
         data_a_h;
      sclk_a_l;
   
   }
   else
   {
       sclk_a_h;
         data_a_l;
      sclk_a_l;
   }
     k=k/2;
    
 }
 Wait;Wait;Wait;
      for (i=23;i>=0;i--) /*读数据*/
         {
          sclk_a_h;
             jj=reg_iosr&0x0001;   
  jj=jj<<i;
  data=jj+data;
  sclk_a_l;
     }
  cs_a_h;
  return(data); 
}  
/*-----------------------------------------------------------*/ 
 
void write7022_a(int com,long data)

 long jj=0x800000;
 int i=0;
 int k=0x80;
// reg_aspcr&= 0xfff0; 
 cs_a_h;
 sclk_a_l;
 cs_a_l;
 for (i=0;i<=7;i++)     /*送地址*/
 {
  if (com&k)
  {
      sclk_a_h;
         data_a_h;
      sclk_a_l;
   
   }
   else
   {
       sclk_a_h;
         data_a_l;
      sclk_a_l;
   }
     k=k/2;
    
 }

     for (i=0;i<=23;i++)     /*写数据*/
 {
  if (data&jj)
  {
      sclk_a_h;
         data_a_h;
      sclk_a_l;
   
   }
   else
   {
       sclk_a_h;
         data_a_l;
      sclk_a_l;
   }
     jj=jj/2;
    
 }
  cs_a_h;
  
}   

/*====================7022_b===========================*/
long read7022_b(int com)
{ long data=0;
 long jj=0;
 int i=0;
 int k=0x80; 
 reg_aspcr&= 0xfff0;
 cs_b_h;
 sclk_b_l;
 cs_b_l;
 for (i=0;i<=7;i++)     /*送地址*/
 {
  if (com&k)
  {
      sclk_b_h;
         data_b_h;
      sclk_b_l;
   
   }
   else
   {
       sclk_b_h;
         data_b_l;
      sclk_b_l;
   }
     k=k/2;
    
 }
 Wait;Wait;Wait;
      for (i=23;i>=0;i--) /*读数据*/
         {
          sclk_b_h;
             jj=reg_iosr&0x0004;
             jj=jj>>2;   
  jj=jj<<i;
  data=jj+data;
  sclk_b_l;
     }
  cs_b_h;
  return(data); 
}  
/*-----------------------------------------------------------*/ 
 
void write7022_b(int com,long data)

 long jj=0x800000;
 int i=0;
 int k=0x80;
// reg_aspcr&= 0xfff0; 
 cs_b_h;
 sclk_b_l;
 cs_b_l;
 for (i=0;i<=7;i++)     /*送地址*/
 {
  if (com&k)
  {
      sclk_b_h;
         data_b_h;
      sclk_b_l;
   
   }
   else
   {
       sclk_b_h;
         data_b_l;
      sclk_b_l;
   }
     k=k/2;
    
 }
/* Wait;Wait;Wait;  */
     for (i=0;i<=23;i++)     /*写数据*/
 {
  if (data&jj)
  {
      sclk_b_h;
         data_b_h;
      sclk_b_l;
   
   }
   else
   {
       sclk_b_h;
         data_b_l;
      sclk_b_l;
   }
     jj=jj/2;
    
 }
  cs_b_h;
  
}   

/*-------------------------------------*/
 delaytime(int cishu)
{                      
int ii,i;
 for (ii=0;ii<cishu;ii++)
 {
     for(i=0;i<0xf;i++)
  { 
   asm(" rpt #75");
   asm(" nop") ;
  }
 }
}
/*------------------------------------------------------*/
void reset7022_a()
{
 i_574vol &= 0x00bf;
 CsIo574= i_574vol;
 delaytime(10);
 i_574vol |= 0x0040; 
 CsIo574= i_574vol;
 
 
}
/*------------------------------------------------------*/
void reset7022_b()
{
 i_574vol &= 0x007f;
 CsIo574= i_574vol;
 delaytime(10);
 i_574vol |= 0x0080; 
 CsIo574= i_574vol;
 
 
}

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    基于TMS320F206的多协议数据…
    基于DSP和CPLD的移相全桥软开…
    基于TMS320F206和SPC3的PROF…
    TMS320F206外围电路典型设计
    流水线型模数转换器MAX1200及…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号