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

📄 rf2500.c

📁 通过CC2500无线射频芯片接收无线数据
💻 C
字号:
#include "DSP281x_Device.h"
#include "DSP281x_Globalprototypes.h"
#include "include.h"

extern char paTable[];
extern char paTableLen;
char rxBuffer[3];
unsigned int i;
void init_mcbsp_spi();
//void init_GpioA();
char len=3;

   char a[20];
   char b[20];
   char addr[20];
   char status=4;

char l,m,n;

void main(void)
{

	/*初始化系统*/
	InitSysCtrl();

	/*关中断*/
	DINT;
	IER = 0x0000;
	IFR = 0x0000;

	/*初始化PIE*/
	InitPieCtrl();

	/*初始化PIE矢量表*/
	InitPieVectTable();	

	 EALLOW;
		GpioMuxRegs.GPFMUX.all=0x3300;
	    GpioMuxRegs.GPFDIR.bit.GPIOF8=1;//输出时钟
		GpioMuxRegs.GPFDIR.bit.GPIOF10=1;//片选
	    GpioMuxRegs.GPFDIR.bit.GPIOF12=1;//发送数据DX
	    GpioMuxRegs.GPFDIR.bit.GPIOF13=0;//接收数据DR
		
	   	GpioMuxRegs.GPAMUX.all=0x0000;
		GpioMuxRegs.GPADIR.all=0xFFFF;
		GpioDataRegs.GPADAT.all=0xFFFF;
		 GpioMuxRegs.GPDMUX.all=0x0000;
	     GpioMuxRegs.GPDDIR.all=0xFFFF;
		 GpioDataRegs.GPDDAT.all=0xFFFF;
	 EDIS;


	/*初始化McBSP为SPI模式*/
 	init_mcbsp_spi();
	//init_GpioA();

	/*CC2500上电复位*/
 	//TI_CC_PowerupResetCCxxxx();

	/*配置CC2500芯片*/
 	writeRFSettings(); 

 	TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE,paTable,paTableLen);

	TI_CC_SPIStrobe(TI_CCxxx0_SRX); 
	status=TI_CC_SPIReadStatus(TI_CCxxx0_MARCSTATE);

	l=TI_CC_SPIReadReg(TI_CCxxx0_ADDR);
	m=TI_CC_SPIReadReg(TI_CCxxx0_MCSM1);
	n=TI_CC_SPIReadReg(TI_CCxxx0_SYNC1);

	while(1)
	{
 
		if(TI_CC_SPIReadStatus(TI_CCxxx0_PKTSTATUS)&0x08)
		{
			RFReceivePacket(rxBuffer,&len);
			a[i]=rxBuffer[2];
            b[i]=rxBuffer[1];
            addr[i]=rxBuffer[0];
		

         TI_CC_SPIStrobe(TI_CCxxx0_SRX); 
		}
	}


}


	void init_mcbsp_spi()
	{
	
		 McbspaRegs.SPCR2.bit.XRST=0;//复位发生器
		 McbspaRegs.SPCR1.bit.RRST=0;//复位接收器
		 McbspaRegs.SPCR2.bit.GRST=0;//复位采样速率生成器

	

		 McbspaRegs.SPCR1.bit.CLKSTP=10;//时钟停止模式,不带延时的低无效状态
		 McbspaRegs.PCR.bit.CLKXP=0;//MxBSP在CLKX的上升沿发送数据,在CLKR的下降沿接收数据
		 McbspaRegs.PCR.bit.CLKRP=0;//

		 McbspaRegs.PCR.bit.CLKXM=1;//CLKX由内部采样速率生成器驱动

		 McbspaRegs.PCR.bit.SCLKME=0;//内部时钟LSPCLK
		 McbspaRegs.SRGR2.bit.CLKSM=1;
		 McbspaRegs.SRGR1.bit.CLKGDV=1;//定义CLKG的分频系数
		 //McbspaRegs.PCR.bit.FSXM=1;//内部采样速率生成器产生帧同步信号
		 McbspaRegs.SPCR2.bit.FRST=0;//采样速率生成器没有产生帧同步信号
		// McbspaRegs.SRGR2.bit.FSGM=0;//DXR到XSR的复制产生FSX
		 McbspaRegs.PCR.bit.FSXP=1;//FSX引脚低电平有效
		// McbspaRegs.XCR2.bit.XDATDLY=01;//保证FSX信号正确的建立时间
		 //McbspaRegs.RCR2.bit.RDATDLY=01;
		 //McbspaRegs.XCR2.bit.XFIG=1;//发送帧同步忽略
		// McbspaRegs.RCR2.bit.RFIG=1;//接收帧同步忽略
		 McbspaRegs.XCR2.bit.XPHASE=0;//单相位
		 McbspaRegs.RCR2.bit.RPHASE=0;//单相位
		 McbspaRegs.XCR1.bit.XFRLEN1=0;//发送帧长度必须是1个串行字
		 McbspaRegs.RCR1.bit.RFRLEN1=0;//接收帧长度必须是1个串行字
		 McbspaRegs.XCR1.bit.XWDLEN1=0;//XWDLEN1=RWDLEN1
		 McbspaRegs.RCR1.bit.RWDLEN1=0;//XWDLEN1=RWDLEN1

         McbspaRegs.SPCR1.bit.ABIS=0;
		 McbspaRegs.SPCR1.bit.DLB=0;
		 McbspaRegs.SPCR1.bit.RJUST=00;//右对齐数据,MSB添0
		 McbspaRegs.MCR1.bit.RMCM=1;
		 McbspaRegs.MCR2.bit.XMCM=01;


		 McbspaRegs.SPCR2.bit.GRST=1;//采样速率生成器推出复位状态

		 /*CPU实现McBSP的发送和接收缓冲器*/
		 McbspaRegs.SPCR2.bit.XRST=1;//使能发生器
		 McbspaRegs.SPCR1.bit.RRST=1;//使能接收器
		//__NOP();
		//__NOP();
	
	}


//	void init_GpioA()
//	{
//		GpioMuxRegs.GPAMUX.all=0x0000;
//	}

⌨️ 快捷键说明

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