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

📄 cc1100_tx.c

📁 CC1100射频电路的线路板和已经调通的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
//-----------------------------------------------------------------------------
// CC1100.c
//-----------------------------------------------------------------------------
// Copyright (C) 2005 Silicon Laboratories, Inc.
//
// AUTH: JS
// DATE: 03 JUL 02
//
// This program flashes the green LED on the C8051F31x target board about 
// five times a second using the interrupt handler for Timer2.
//
// Target: C8051F31x
//
// Tool chain: KEIL Eval 'c'
//

//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include <c8051f310.h>                    // SFR declarations
#include <intrins.h>
#include <string.h>
#include "CC1100.h"


#define		INT8U				unsigned char
#define		INT16U				unsigned int




#define 	WRITE_BURST     	0x40						//连续写入
#define 	READ_SINGLE     	0x80						//读
#define 	READ_BURST      	0xC0						//连续读
#define 	BYTES_IN_RXFIFO     0x7F  						//接收缓冲区的有效字节数
#define 	CRC_OK              0x80 						//CRC校验通过位标志



//-----------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F30x
//-----------------------------------------------------------------------------

sfr16 TMR2RL   = 0xca;                    // Timer2 reload value
sfr16 TMR2     = 0xcc;                    // Timer2 counter

//-----------------------------------------------------------------------------
// Global CONSTANTS
//-----------------------------------------------------------------------------

#define   SYSCLK       24500000             // SYSCLK frequency in Hz
	
#define	  BAUDRATE		   9600





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

//定义CC1100模块接口
sbit	SCK	      = P0^0;
sbit	MISO      = P0^1;

sbit	MOSI      = P0^6;
sbit	GDO0      = P0^7;
sbit	CS_CC1100 = P2^0;
sbit	GDO2      = P2^1;


//定义接口
sbit	TX	      = P0^4;
sbit	RX	      = P0^5;

sbit    LED       = P3^3;                          // LED='0' means ON



/****************************************************************************************
//全局变量定义
/****************************************************************************************/
INT8U PaTabel[8] = {0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0};



//-----------------------------------------------------------------------------
// Function PROTOTYPES
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);


void UART0_Init(void);
void SendCh(INT8U c);


void  delay(unsigned int s);
INT8U SpiReadWrite(INT8U dat);
void  halSpiWriteReg(INT8U addr, INT8U value);
void  halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count);
void  halSpiStrobe(INT8U strobe);
INT8U halSpiReadReg(INT8U addr); 
void  halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count);
INT8U halSpiReadStatus(INT8U addr);



void halWait(INT16U timeout);
void RESET_CC1100(void);
void POWER_UP_RESET_CC1100(void);
void halRfWriteRfSettings(void);
void Init_CC1100(void);




void  halRfSendPacket(INT8U *txBuffer,INT8U size);
INT8U halRfReceivePacket(INT8U *rxBuffer,INT8U length); 

//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main (void) {

   // INT8U TT,TT1;
	INT8U arrTx[4];
	INT8U arrRx[4]={0x55,0x22,0x65,0xAA};
   

    PCA0MD &= ~0x40;                       //disable watchdog timer
    PORT_Init();
    SYSCLK_Init();
	UART0_Init(); 

 // 
 //  TT1=SpiReadWrite(TT);
    Init_CC1100();

 
   //	LED = 0;
   //	
   //  SendCh(0x55);
  // halSpiWriteReg(CCxxx0_FSCTRL0,rfSettings.FSCTRL2);    

	arrTx[0] = 0x55;
	arrTx[1] = 0x0A;
	arrTx[2] = 0xCC;

	arrTx[3] = 0x33;

   

	while(1)
	{     	
	     halRfSendPacket(arrTx, 4);

	     LED =~LED;
	
         delay(60000);
      	 
		
//	 if(halRfReceivePacket(arrRx,4))
//		{
		
			
		
//		    SendCh(arrRx[0]);
 //           SendCh(arrRx[1]);
//			SendCh(arrRx[2]);
 //           SendCh(arrRx[3]);
		  
//		}
		
	
	
	   }


}




/*****************************************************************************************
//函数名:void PORT_Init (void)
//输入:无
//输出:无
//功能描述:
/*****************************************************************************************/
void PORT_Init (void)
{
   P0MDOUT = 0x51;
   P2MDOUT = 0x01;
   P3MDOUT = 0x08;
   XBR0 = 0x01;
   XBR1 = 0xC0;
   
   CS_CC1100 = 1;
   SCK       = 0;
   MISO      = 1;
   MOSI      = 0;
   GDO0      = 1;  
   GDO2      = 1;
   LED       = 1;  
   CS_CC1100 = 1;

}


void SYSCLK_Init(void)
{
   OSCICN = 0x83;
   CLKSEL = 0x00;

}


/*****************************************************************************************
//函数名:void UART0_Init(void)
//功能描述:初始化串口0,9600,8,N
/*****************************************************************************************/
void UART0_Init(void)
{
	SCON0 = 0x10;		//串口方式1,8,允许接收
	TMOD |= 0x20;		//定时器1工作方式1,8 autoload
	TH1 = 0x96;	
	TL1 = 0x96;	
    
	TR1 = 1;		    //启动定时器1
	ES0 = 0;
}

/*****************************************************************************************
//函数名:void SendCh(INT8U c)
//输入:无
//输出:无
//功能描述:串口发送一个字符
/*****************************************************************************************/
void SendCh(INT8U c)
{
    EA  = 0;

    TI0 = 0;
	SBUF0 = c;
	while(!TI0);
	TI0 = 0;
	EA = 1;
}




//*****************************************************************************************
//函数名:void delay(unsigned int s)
//输入:时间
//输出:无
//功能描述:普通廷时
//*****************************************************************************************		
void delay(unsigned int s)
{
	unsigned int i;
	for(i=0; i<s; i++);
	for(i=0; i<s; i++);
    for(i=0; i<s; i++);
}


//*****************************************************************************************
//函数名:INT8U SpiReadWrite(INT8U dat)
//输入:发送的数据
//输出:无
//功能描述:SPI发送一个字节
//*****************************************************************************************
INT8U SpiReadWrite(INT8U dat)
{
	INT8U i,temp;

	temp = 0;	
	SCK = 0;	
	_nop_();
	for(i=0; i<8; i++)
	{
		if(dat & 0x80)
		  {
			MOSI = 1;

⌨️ 快捷键说明

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