|
/*-------------------------------------------------
* 函数名: main
* 功能: 主函数
* 输入: 无
* 输出: 无
--------------------------------------------------*/
void main(void)
{
POWER_INITIAL(); //系统初始化
//MnbnSPIInit();
while(!RF_Init()); //在此函数中,应该确保和接收端的通信模式,RF 地址,Channel,发送速率和Payload长度一致。
//MnbnTXInit();
RF_SetWhitening(RF_WHITENING_ON);
RF_RxMode();
RF_SetChannel(2);
//RF_Carrier(20);
while(1)
{
//ble_craft_packet_noconn(37);
TransResult=RF_DumpRxData(rx_buf,8);
if(TransResult&TX_DS_FLAG)
{
LEDCorrect=1;
NTCNegative=0;
}
else
{
LEDCorrect=0;
NTCNegative=0;
}
RF_ClearStatus();
/**
ble_craft_packet_noconn(38);
RF_SetChannel(26);
RF_TxData(rx_buf,37);
TransResult=RF_ReadReg(STATUS);
if(TransResult&TX_DS_FLAG)
{
LEDCorrect=1;
NTCNegative=0;
}
else
{
LEDCorrect=0;
NTCNegative=0;
}
RF_ClearStatus();
ble_craft_packet_noconn(39);
RF_SetChannel(80);
RF_TxData(rx_buf,37);
TransResult=RF_ReadReg(STATUS);
if(TransResult&TX_DS_FLAG)
{
LEDCorrect=1;
NTCNegative=0;
}
else
{
LEDCorrect=0;
NTCNegative=0;
}
RF_ClearStatus();
LEDCorrect=0;
NTCNegative=0;
DelayMs(250);
LEDCorrect=0;
NTCNegative=0;
DelayMs(250);
**/
}
/******************************************************************************/
// @brief RF初始化
// @param None
// @retval 1:初始化成功
// 0: 初始化失败
/******************************************************************************/
unsigned char RF_Init(void)
{
unsigned char BB_cal_data[] = {0x12,0xED,0x67,0x9C,0x46};
unsigned char RF_cal_data[] = {0xF6,0x3F,0x5D};
unsigned char RF_cal2_data[] = {0x45,0x21,0xEF,0x2C,0x5A,0x40};
unsigned char Dem_cal_data[] = {0x01};
unsigned char Dem_cal2_data[] = {0x0B,0xDF,0x02};
unsigned char feature = 0x00; //使用软件CE
MnbnSPIInit();
RF_WriteReg(RST_FSPI, 0x5A); //Software Reset
RF_WriteReg(RST_FSPI, 0XA5);
RF_WriteReg(FLUSH_TX, 0); // CLEAR TXFIFO
RF_WriteReg(FLUSH_RX, 0); // CLEAR RXFIFO
RF_WriteReg(W_REGISTER + STATUS, 0x70); // CLEAR STATUS
RF_WriteReg(W_REGISTER + EN_RXADDR, 0x01); // Enable Pipe0
RF_WriteReg(W_REGISTER + SETUP_AW, 0x03); // address witdth is 5 unsigned chars
RF_WriteReg(W_REGISTER + RF_CH, DEFAULT_CHANNEL); // 2402M HZ
RF_WriteReg(W_REGISTER + RX_PW_P0, PAYLOAD_WIDTH ); // 8 unsigned chars
RF_WriteBuf(W_REGISTER + TX_ADDR, TX_ADDRESS_DEF, sizeof(TX_ADDRESS_DEF)); // Writes TX_Address to XN297L
RF_WriteBuf(W_REGISTER + RX_ADDR_P0,TX_ADDRESS_DEF, sizeof(TX_ADDRESS_DEF)); // RX_Addr0 same as TX_Adr for Auto.Ack
RF_WriteBuf(W_REGISTER + RX_ADDR_P1,TX_ADDRESS_DEF, sizeof(TX_ADDRESS_DEF));
RF_WriteBuf(W_REGISTER + BB_CAL, BB_cal_data, sizeof(BB_cal_data));
RF_WriteBuf(W_REGISTER + RF_CAL2, RF_cal2_data, sizeof(RF_cal2_data));
RF_WriteBuf(W_REGISTER + DEM_CAL, Dem_cal_data, sizeof(Dem_cal_data));
RF_WriteBuf(W_REGISTER + RF_CAL, RF_cal_data, sizeof(RF_cal_data));
RF_WriteBuf(W_REGISTER + DEM_CAL2, Dem_cal2_data,sizeof(Dem_cal2_data));
RF_WriteReg(W_REGISTER + DYNPD, 0x00);
RF_WriteReg(W_REGISTER + RF_SETUP, RF_POWER); // 9dbm 1Mbps
RF_WriteReg(ACTIVATE, 0x73);
RF_WriteReg(W_REGISTER + SETUP_RETR,0x00); // Disable retrans...
RF_WriteReg(W_REGISTER + EN_AA, 0x00); // Disable AutoAck
// if(PAYLOAD_WIDTH >32)
feature = 0x18; //设置最大paylaod长度为64unsigned chars
RF_WriteReg(W_REGISTER + FEATURE, feature);
if(RF_ReadReg(RF_CH)!=DEFAULT_CHANNEL)
return 0;
return 1;
}
/******************************************************************************/
// @brief RF设置为载波模式
// @param ucChannel_Set:载波的频点
// @retval None
/******************************************************************************/
void RF_Carrier( unsigned char ucChannel_Set)
{
unsigned char BB_cal_data[] = {0x12,0xED,0x67,0x9C,0x46};
unsigned char RF_cal_data[] = {0xF6,0x3F,0x5D};
unsigned char RF_cal2_data[] = {0x45,0x21,0xEF,0x2C,0x5A,0x40};
unsigned char Dem_cal_data[] = {0xE1};
unsigned char Dem_cal2_data[] = {0x0B,0xDF,0x02};
RF_WriteReg(RST_FSPI, 0x5A); //Software Reset
RF_WriteReg(RST_FSPI, 0XA5);
unsigned char feature = 0x00; //使用软件CE
RF_WriteReg(W_REGISTER + FEATURE, feature);
CE_LOW;
delay_100us(5); //delay 500us
RF_WriteReg(W_REGISTER + CONFIG, 0X8E); //tx mode
RF_WriteReg(W_REGISTER + RF_CH, ucChannel_Set); //单载波频点
RF_WriteReg(W_REGISTER + RF_SETUP, RF_POWER); //9dbm
RF_WriteBuf(W_REGISTER + BB_CAL, BB_cal_data, sizeof(BB_cal_data));
RF_WriteBuf(W_REGISTER + RF_CAL2, RF_cal2_data, sizeof(RF_cal2_data));
RF_WriteBuf(W_REGISTER + DEM_CAL, Dem_cal_data, sizeof(Dem_cal_data));
RF_WriteBuf(W_REGISTER + RF_CAL, RF_cal_data, sizeof(RF_cal_data));
RF_WriteBuf(W_REGISTER + DEM_CAL2, Dem_cal2_data,sizeof(Dem_cal2_data));
delay_100us(5);
}
求救各位大佬!
|
|