📄 rf2500.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 + -