本帖最后由 dingruiaa1 于 2013-12-20 14:12 编辑
用的MSP430F149的开发版 自带的NRF24L0的口 用F149本身AD采集数据 用NRF24L0作传输 AD采样接受端很快 NRF24L0设置没有找到连续发送模式 只能一次次设置
造成接受端采样数据失真 求各位大神 帮看看咱们改
发送端
void nRF24L01_TxPacket(char * tx_buf)
{
RF24L01_CE_0 ; //StandBy I模式
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址
SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送
RF24L01_CE_1; //置高CE,激发数据发送
Delay(10);
}
__interrupt void ADC12ISR (void)
{
P2OUT = 0x0f;
int * pInt=(int *)(TxBuf + nCount);
pInt[0]=ADC12MEM0;
nCount+=2;
if(nCount>31) //TxBuf是32的char
{
P2OUT = 0x00;
P2OUT = 0x0d;
nRF24L01_TxPacket(TxBuf);
SPI_RW_Reg(WRITE_REG+STATUS,0XFF); //清状态寄存器
P2OUT = 0x0e;
Delay(10);
}
ADC12CTL0 |= ADC12SC; // 开始转换
}
接受端
while(1)
{
SetRX_Mode();
if(nRF24L01_RxPacket(RxBuf)) //判断是否收到数据
{
for(char L=0;L<32;L++) //收到数据后,串口显示
{
P2OUT=0x00;
R_S_Byte(RxBuf[L]);
Delay(1);
}
}
}
void SetRX_Mode(void)
{
RF24L01_CE_0 ;
Delay(1);
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);
RF24L01_CE_1;
Delay(50);//注意不能太小
}
在线等丫!!!!!!!!:'( |