|
发表于 2010-2-15 17:47:33
|
显示全部楼层
主要测试程序如下:
void rf_init(void)
{
SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // Writes TX_Address to nRF24L01
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // RX_Addr0 same as TX_Adr for Auto.Ack
SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // Enable Auto.Ack:Pipe0
SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // Enable Pipe0
SPI_RW_Reg(WRITE_REG + SETUP_AW, 0x00); // address length=3
SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x0a); // 500us + 86us, 10 retrans...
SPI_RW_Reg(WRITE_REG + RF_CH, 40); // Select RF channel 40
SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x0f); // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); // Select same RX payload width as TX Payload width
rx_count=0;
}
void SendTest()
{ uint8_t kk=0;
uint8_t k=0;
uint16_t m=0;
uint16_t m2=0;
m2=50000;
LED1=0;
for (k=0;k<TX_PLOAD_WIDTH;k++)
tx_buf[k] =k;
for (m=0;m<m2;m++)
{ LED1=0;
tx_buf[0]=m & 3;
TX_Mode(); // set TX Mode and transmitting
while (!(TX_DS|MAX_RT)); // wait send ok
//for (k=0;k<50;k++)
// uart_putchar(tx_buf[0]);
if (TX_DS)
{
LED1=LED2=LED3=1; // turn off LED
}
sta = 0;
//delay(20);
}
} |
|