|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2008-6-24 13:48:14
|
显示全部楼层
我发送了8个字节的数据,2500能接收中断能够进去,但是就是RXBYTES会溢出,每次都一样,请大家帮我分析一下原因!!!
程序我再贴一下:
T:
#include "include.h"
extern char paTable[];
extern char paTableLen;
/*发送数据************************************************/
char txBuffer[] =
{0x01 ,0xFE, 0xD6, 0x29, 0x0E, 0x0E, 0x77, 0x88};
/*接收数据************************************************/
char rxBuffer[];
unsigned int i;
void delay_ms(void) //毫秒延时
{
unsigned int i;
for (i=0; i<1500; i++)
{
_NOP();
}
}
void delay_nms(unsigned int n) //延时周期
{
unsigned int i;
for (i=0; i<n; i++)
{
delay_ms();
}
}
void main (void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭开门狗;
TI_CC_SPISetup(); // 初始化SPI;
TI_CC_PowerupResetCCxxxx(); // 复位 CCxxxx;
writeRFSettings(); // 配置寄存器;
TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, paTable, paTableLen);//配置功率;
TI_CC_LED_PxDIR = TI_CC_LED1; //点亮LED1;
TI_CC_GDO0_PxDIR &= ~TI_CC_GDO0_PIN; //设置GDO0为输入;
TI_CC_GDO0_PxSEL &= ~TI_CC_GDO0_PIN; //设置P2.6脚为I/O端口;
TI_CC_GDO0_PxIES &= ~TI_CC_GDO0_PIN; //下降沿触发中断;
TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN; // 清除中断标志;
TI_CC_GDO0_PxIE |= TI_CC_GDO0_PIN; // 使能中断总允许;
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE); //设置芯片为空闲状态;
while(1)
{
delay_nms(500);
TI_CC_LED_PxDIR |= TI_CC_LED2;
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE);
RFSendPacket(txBuffer,8);
delay_nms(50);
TI_CC_LED_PxDIR &= ~TI_CC_LED2;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
R:
#include "include.h"
extern char paTable[];
extern char paTableLen;
char txBuffer[];
char rxBuffer[];
unsigned int i;
void delay_ms(void) //毫秒延时
{
unsigned int i;
for (i=0; i<1500; i++)
{
_NOP();
}
}
void delay_nms(unsigned int n) //延时周期
{
unsigned int i;
for (i=0; i<n; i++)
{
delay_ms();
}
}
void main (void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭开门狗;
TI_CC_SPISetup(); // 初始化SPI;
TI_CC_PowerupResetCCxxxx(); // 复位 CCxxxx;
writeRFSettings(); // 配置寄存器;
TI_CC_SPIWriteBurstReg(TI_CCxxx0_PATABLE, paTable, paTableLen);//配置功率;
TI_CC_GDO0_PxDIR &= ~TI_CC_GDO0_PIN; //设置GDO0为输入;
TI_CC_GDO0_PxSEL &= ~TI_CC_GDO0_PIN; //设置P2.6脚为I/O端口;
TI_CC_GDO0_PxIES &= ~TI_CC_GDO0_PIN; //下降沿触发中断;
TI_CC_GDO0_PxIFG &= ~TI_CC_GDO0_PIN; // 清除中断标志;
TI_CC_GDO0_PxIE |= TI_CC_GDO0_PIN; // 使能中断总允许;
TI_CC_SPIStrobe(TI_CCxxx0_SIDLE); //设置芯片为空闲状态;
//TI_CC_SPIStrobe(TI_CCxxx0_SFRX); //冲洗RX FIFO缓冲;
TI_CC_SPIStrobe(TI_CCxxx0_SRX); // 启用RX
//TI_CC_SPIReadStatus(TI_CCxxx0_RXBYTES);
_BIS_SR(LPM3_bits + GIE); // 启用省电模式,中断唤醒;
}
#pragma vector=PORT2_VECTOR
__interrupt void port2_ISR (void)
{
char len=10;
if (RFReceivePacket(rxBuffer,&len))
{P2IE=0X00;
TI_CC_LED_PxDIR |= TI_CC_LED1;
TI_CC_SPIStrobe(TI_CCxxx0_SFRX);
delay_nms(200);
}
else
{P2IE=0X00;
TI_CC_LED_PxDIR |= TI_CC_LED2;
TI_CC_SPIStrobe(TI_CCxxx0_SFRX);
delay_nms(200);
}
TI_CC_LED_PxDIR &= ~TI_CC_LED1;
TI_CC_LED_PxDIR &= ~TI_CC_LED2;
P2IFG &= ~TI_CC_GDO0_PIN;
P2IE=0XFF;
TI_CC_SPIStrobe(TI_CCxxx0_SRX);
}
////////////////////////////////////////////////////////////////////////////////
寄存器配置:
TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG2, 0x0B); // GDO2 output pin config.
TI_CC_SPIWriteReg(TI_CCxxx0_IOCFG0, 0x06); // GDO0 output pin config.
TI_CC_SPIWriteReg(TI_CCxxx0_FIFOTHR, 0x07);
TI_CC_SPIWriteReg(TI_CCxxx0_PKTLEN, 0xFF); // Packet length.
TI_CC_SPIWriteReg(TI_CCxxx0_PKTCTRL1, 0x45); // Packet automation control.
TI_CC_SPIWriteReg(TI_CCxxx0_PKTCTRL0, 0x05); // Packet automation control.
TI_CC_SPIWriteReg(TI_CCxxx0_ADDR, 0x01); // Device address.
TI_CC_SPIWriteReg(TI_CCxxx0_CHANNR, 0x00); // Channel number.
TI_CC_SPIWriteReg(TI_CCxxx0_FSCTRL1, 0x07); // Freq synthesizer control.
TI_CC_SPIWriteReg(TI_CCxxx0_FSCTRL0, 0x00); // Freq synthesizer control.
TI_CC_SPIWriteReg(TI_CCxxx0_FREQ2, 0x5D); // Freq control word, high byte
TI_CC_SPIWriteReg(TI_CCxxx0_FREQ1, 0x93); // Freq control word, mid byte.
TI_CC_SPIWriteReg(TI_CCxxx0_FREQ0, 0xB1); // Freq control word, low byte.
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG4, 0x2D); // Modem configuration.
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG3, 0x3B); // Modem configuration.
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG2, 0x73); // Modem configuration.
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG1, 0x22); // Modem configuration.
TI_CC_SPIWriteReg(TI_CCxxx0_MDMCFG0, 0xF8); // Modem configuration.
TI_CC_SPIWriteReg(TI_CCxxx0_DEVIATN, 0x00); // Modem dev (when FSK mod en)
TI_CC_SPIWriteReg(TI_CCxxx0_MCSM1 , 0x3F); //MainRadio Cntrl State Machine
TI_CC_SPIWriteReg(TI_CCxxx0_MCSM0 , 0x18); //MainRadio Cntrl State Machine
TI_CC_SPIWriteReg(TI_CCxxx0_FOCCFG, 0x1D); // Freq Offset Compens. Config
TI_CC_SPIWriteReg(TI_CCxxx0_BSCFG, 0x1C); // Bit synchronization config.
TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL2, 0xC7); // AGC control.
TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL1, 0x00); // AGC control.
TI_CC_SPIWriteReg(TI_CCxxx0_AGCCTRL0, 0xB2); // AGC control.
TI_CC_SPIWriteReg(TI_CCxxx0_FREND1, 0xB6); // Front end RX configuration.
TI_CC_SPIWriteReg(TI_CCxxx0_FREND0, 0x10); // Front end RX configuration.
TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL3, 0xEA); // Frequency synthesizer cal.
TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL2, 0x0A); // Frequency synthesizer cal.
TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL1, 0x00); // Frequency synthesizer cal.
TI_CC_SPIWriteReg(TI_CCxxx0_FSCAL0, 0x11); // Frequency synthesizer cal.
TI_CC_SPIWriteReg(TI_CCxxx0_FSTEST, 0x59); // Frequency synthesizer cal.
TI_CC_SPIWriteReg(TI_CCxxx0_TEST2, 0x88); // Various test settings.
TI_CC_SPIWriteReg(TI_CCxxx0_TEST1, 0x31); // Various test settings.
TI_CC_SPIWriteReg(TI_CCxxx0_TEST0, 0x0B); // Various test settings.
} |
|