HOW LONG IT TAKE TO SWITCH FROM TX TO RX IN SI4463.
04/96/2021 | 11:31 AM
HELLO.
I have one remote and One controller.
It takes about 40 ms to send out data from Remote to controller. and the controller send out feedback data delayed for 5 ms after received the data from remote.
the remote start RX after sending out data. so there is 5 ms gap time for remote and controller to read feedback data.
But it fail.
remote can not get the data. and the controller really send out the feedback data.
//CODE of REMTOTE. . IF DONE TX . 。Int flag . and enable feedback then startRX.
//read an package from device.
if(Sflag&(SI4463_ST_RXDNE))
{
SIReadDataFromDevice((uint8_t*)&rxMsg,&revLth);
if(FrmCRCCheck(&rxMsg) == 0x00)
{
//do something herer
//feedback.
if(feature&FEATURE_EN_FDBAK)
{
vTaskDelay(5);//Delay about 5 ms then send data
//SendBack the data to Devcie.
LogMSG(BUSRT_LOG_LVL_STATE,"Send FB Data to Remote");
if(SISendOutData(pDTEntry->pRFPara->RFChannel,(uint8_t*)&txMsg,sizeof(TTransFrame)) == BFALSE)
{
if(SISendOutData(pDTEntry->pRFPara->RFChannel,(uint8_t*)&txMsg,sizeof(TTransFrame)) == BFALSE)
{
pDTEntry->pRamRetain->SWResetType = SFRESET_LINK_STUCK;
}
}
}
else
{
//start rx again
}
}
Discussion Forums
Proprietary
Answered
Answered
Hi George,
The best method I can suggest is to use the GPIOs to monitor the active state on the radios.
- use TX_STATE and RX_STATE to see, whether the radio is operating in the expected state (to confirm that the remote is in RX when the controller transmits the "feedback data"),
- use RX_DATA and TX_DATA signals to compare the transmitted and the received packet (to confirm that the controller sends out the "feedback data", and the controller got the entire packet transmitted by the remote).
Also, you may check how much time does the logging take as well as that the configured auto state transition options passed along with the START_RX/START_TX commands (see the last 3, RXTIMEOUT/RXVALID/RXINVALID_STATE arguments) meet your application's requirement.
HOW LONG IT TAKE TO SWITCH FROM TX TO RX IN SI4463.
HELLO.
I have one remote and One controller.
It takes about 40 ms to send out data from Remote to controller. and the controller send out feedback data delayed for 5 ms after received the data from remote.
the remote start RX after sending out data. so there is 5 ms gap time for remote and controller to read feedback data.
But it fail.
remote can not get the data. and the controller really send out the feedback data.
//CODE of REMTOTE. . IF DONE TX . 。Int flag . and enable feedback then startRX.
if(Sflag&SI4463_ST_TXDNE)
{
BeginLog(BUSRT_LOG_LVL_STATE);
LogMsg("TxDone");
EndLog();
SI446X_RX_FIFO_RESET( );
if(FEATURE_EN_FDBAK&(pDTEntry->pRFPara->feature))
{
SIStartRx(pDTEntry->pRFPara->RFChannel,sizeof(TTXFrame));
}
else
{
*ulNotificationValue |= FAST_RX_DNE_EVENT;
}
}
//Controller.
//read an package from device.
if(Sflag&(SI4463_ST_RXDNE))
{
SIReadDataFromDevice((uint8_t*)&rxMsg,&revLth);
if(FrmCRCCheck(&rxMsg) == 0x00)
{
//do something herer
//feedback.
if(feature&FEATURE_EN_FDBAK)
{
vTaskDelay(5);//Delay about 5 ms then send data
//SendBack the data to Devcie.
LogMSG(BUSRT_LOG_LVL_STATE,"Send FB Data to Remote");
if(SISendOutData(pDTEntry->pRFPara->RFChannel,(uint8_t*)&txMsg,sizeof(TTransFrame)) == BFALSE)
{
if(SISendOutData(pDTEntry->pRFPara->RFChannel,(uint8_t*)&txMsg,sizeof(TTransFrame)) == BFALSE)
{
pDTEntry->pRamRetain->SWResetType = SFRESET_LINK_STUCK;
}
}
}
else
{
//start rx again
}
}
The best method I can suggest is to use the GPIOs to monitor the active state on the radios.
- use TX_STATE and RX_STATE to see, whether the radio is operating in the expected state (to confirm that the remote is in RX when the controller transmits the "feedback data"),
- use RX_DATA and TX_DATA signals to compare the transmitted and the received packet (to confirm that the controller sends out the "feedback data", and the controller got the entire packet transmitted by the remote).
Also, you may check how much time does the logging take as well as that the configured auto state transition options passed along with the START_RX/START_TX commands (see the last 3, RXTIMEOUT/RXVALID/RXINVALID_STATE arguments) meet your application's requirement.
Best Regards,
Bence