⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi_cc1100.c

📁 msp430与cc1100实现超低功耗无线通信的程序
💻 C
字号:
#include<msp430x14x.h>
#include "cc1100.h"
#define uint unsigned int
#define uchar unsigned char
//------------------------------------------------------------
void delay(uint i)
{
  uint j;
  for(j=0;j<i;j++)
       ;
  return;
}
//------------------------------------------------------------
void Init_clk()
{
  uint i;
  BCSCTL1&=~(XT2OFF);
  do
  {
    IFG1&=~(OFIFG);
    for(i=0;i<0x0ff;i++);
  }
  while((IFG1&OFIFG));
  //BCSCTL2=SELM1+SELS;
  BCSCTL2=SELM1+SELS+DIVM1+DIVM0;//8 DIV
}
//----------------------------------------------------------------
void Init_UART1()
{
  U1CTL=CHAR+SWRST;
  U1TCTL=SSEL1;
  U1BR0=0X41;
  U1BR1=0X03;
  U1MCTL=0X00;
  U1CTL&=~(SWRST);
  ME2|=UTXE1+URXE1;
  //IE2|=UTXIE1;
  P3SEL|=0XC0;
  P3DIR|=0X40;
  return;
}
//---------------------------------------------------------------
void Init_spi0()
{
  P3SEL|=0X0E;
  P3DIR|=0X0A;
  U0CTL=CHAR+SYNC+MM+SWRST;
  U0TCTL=CKPH+SSEL0+STC;
  U0BR0=0X02;
  U0BR1=0X00;
  U0MCTL=0X00;
  ME1|=USPIE0;
  U0CTL&=~(SWRST);
  return;
}
//-----------------------------------------------------------------
void Init_P1_ISR()
{
  P1DIR=0;
  P1SEL=0X01;
  P1IES|=0X01;
  P1IE|=0x01;//open interruput
  return;
}

//-----------------------------------------------------------------
void UART1_TX(uchar value)
{
  TXBUF1=value;
  while((IFG2&UTXIFG1)==0);
  IFG2&=~(UTXIFG1);
  return;
}

//-----------------------------------------------------------------
uchar spi_WriteRead(uchar data)
{
  uchar status;
  IFG1&=~URXIFG0;//?
  TXBUF0=data;
  while((IFG1&URXIFG0)==0);
  status=RXBUF0;
  IFG1&=~URXIFG0;
  return status;
}

//-----------------------------------------------------------------
void spi_Write_reg(uchar addr,uchar value)
{
  P2OUT&=~(BIT0);
  while(P3IN&0X04);
  spi_WriteRead(addr);
  spi_WriteRead(value);
  P2OUT|=(BIT0);
  return;
}

//-----------------------------------------------------------------
void spi_WriteBurst_reg(uchar addr,uchar *buf,uchar num)
{
  uchar i,temp;
  temp=addr|write_burst;
  P2OUT&=~(BIT0);
  while(P3IN&0X04);
  spi_WriteRead(temp);
  for(i=0;i<num;i++)
  {
    spi_WriteRead(buf[i]);
  }
  P2OUT|=BIT0;
  return;
}

//-----------------------------------------------------------------
void spi_strobe(uchar strobe)
{
  P2OUT&=~(BIT0);
  while(P3IN&0X04);
  spi_WriteRead(strobe);
  P2OUT|=BIT0;
  return;
}

//-----------------------------------------------------------------
uchar spi_Read_Reg(uchar addr)
{
  uchar temp,value;
  temp=addr|read_single;
  P2OUT&=~(BIT0);
  while(P3IN&0X04);
  spi_WriteRead(temp);
  value=spi_WriteRead(0);
  P2OUT|=BIT0;
  return value;
}

//-----------------------------------------------------------------
void spi_ReadBurst_Reg(uchar addr,uchar *buf,uchar num)
{
  uchar i,temp;
  temp=addr|read_burst;
  P2OUT&=~(BIT0);
  while(P3IN&0X04);
  spi_WriteRead(temp);
  for(i=0;i<num;i++)
  {
    buf[i]=spi_WriteRead(0);
  }
  P2OUT|=BIT0;
  return;
}

//-----------------------------------------------------------------
uchar spi_Read_status(uchar addr)
{
  uchar value,temp;
  temp=addr|read_burst;
  P2OUT&=~(BIT0);
  while(P3IN&0X04);
  spi_WriteRead(temp);
  value=spi_WriteRead(0);
  P2OUT|=BIT0;
  return value;
}

//-----------------------------------------------------------------
uchar spi_Receive_packet(uchar *rxbuf,uchar length,uchar packetlength)
{
  uchar status[2];

  if(spi_Read_status(TI_CCxxx0_RXBYTES)&BYTE_IN_RXFIFO)
  {
    packetlength=spi_Read_Reg(TI_CCxxx0_RXFIFO);
    if(packetlength<=length)
    {
      spi_ReadBurst_Reg(TI_CCxxx0_RXFIFO,rxbuf, packetlength);
      spi_ReadBurst_Reg(TI_CCxxx0_RXFIFO,status, 2);
      if(status[1]&CRC_OK)
      {
       spi_strobe(TI_CCxxx0_SFRX);
        return 1;
      }

      else
      {
        spi_strobe(TI_CCxxx0_SFRX);
        return 0;
      }
    }
   else
    {
      spi_strobe(TI_CCxxx0_SFRX);
      return 0;
    }
  }
 else
  {
    spi_strobe(TI_CCxxx0_SFRX);
    return 0;
  }
}

//-----------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -