KW36 GFSK monitor

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

KW36 GFSK monitor

2,330 Views
Shane1
Contributor II

Hi,

About how the GFSK monitor obtains the RSSI, We refer to the AN12872 documentation and the AN12872SW demo code; the two devices (Master, Slave) have established a BLE connection; and the related parameters (HI, CI, CRC, AA) after the connection are passed through LIN bus send to the monitor and jump to initialize the interface successfully, and then call the XcvrFskGetInstantRssi interface to obtain the RSSI, but the returned value is incorrect. How can we get the correct return value?How can we get the RSSI value like step 3 of the figure below?

GFSK.jpg

Tags (2)
0 Kudos
Reply
5 Replies

1,285 Views
Kyle_Yin
Contributor I

Based on the AN12872SW package w/o any modification, we observe only a few time that the RSSI monitoring is successful. most of time is timeout as below:

Timeout: 0 New device bitmap: 0
Device:0, next chn->21

Occasionally the right log is as below:

Master:1 bytes:49- RSSI = -21 dBm
Slave: 5 bytes: D- 0-76-93-49- RSSI = -21 dBm
GFSK TO: 100

we have tried to read the KW38 reference manual and to understand the code and made some debugging, we found the network address interrupt is not triggered when timeout. 

Any more suggestions?

 

Best Regards

 

 

0 Kudos
Reply

2,230 Views
Shane1
Contributor II

Hi,

Any update on this?

0 Kudos
Reply

2,280 Views
Shane1
Contributor II

Thanks for your reply.

1.We port AN12872SW code to our own project;
2.Our project is modified based on SDK 2.2.8。
3.The ported content and process are as follows:
1)Master:
void main task(uint32_t param)
{
…….
if (Ble_Initialize(App_GenericCallback) != gBleSuccess_c)
{
panic(0,0,0,0);
return;
}
}

void BleApp_ConnectionCallback(deviceId_t peerDeviceId , gapConnectionEvent_t* pConnectionEvent)
{
……..
case gConnEvtConnected_c:
……..
// get HopIncrement,crcSeed ,syncAddress and ConnectionInterval then transfer to monitor by lin bus
LM_GetConnInfo(peerDeviceId, BTLE_CONNECT);
……..
break;
……..
}

2)Monitor:
void main task(uint32_t param)
{
…….
GENFSK_Init();
GENFSK_AllocInstance(&mAppGenfskId, NULL, NULL, NULL);
……..
}

// when Monitor get connection info from Master by lin bus
void GfskApp_StartLM(void)
{
hoppingInit(gLMParaArry, gLMPara);

// Set mAppStartApp = false in App_Thread and move App_InitApp content to here
GENFSK_RegisterCallbacks(mAppGenfskId, NULL, NULL);
CT_GenFskInit(NULL, NULL);
}

// get RSSI periodically
XcvrFskGetInstantRssi();

4. Current problems:
1) The RSSI value obtained periodically is abnormal.

2) Please help to confirm whether the above steps and procedures are correct? It is possible that the default parameters of config in the CT_GenFskInit function are not adapted.

3) It seems that there is no related function to get gLMPara.numUsedchannel in LM_GetConnInfo,and the monitoring channel caculated by hoppingInit is always 37.How to get correct channel information?

0 Kudos
Reply

2,139 Views
Ricardo_Zamora
NXP TechSupport
NXP TechSupport

Hi,

 

I apologize for a late reply. Just to confirm, does the example on your side work fine without any modifications?

How are you testing your porting project? With custom boards? Or are you using FRDM boards?

Based on your first screenshot, your porting looks like working well. The RSSI value can change a lot due to interference from some object, but in your case it looks quite stable.

What is the environment that you are testing your setup? Is there some WiFi, Zigbee or BLE communications near your setup?

What is the frequency of the "get RSSI periodically" call?

 

Regards,

Ricardo

0 Kudos
Reply

2,293 Views
Ricardo_Zamora
NXP TechSupport
NXP TechSupport

Hi,

 

Hope you are doing well. How did you test this application example? Did you use the ported SDK directly? Or did you port the code to a newer SDK version?

If you ported the code, which SDK version are you using? And can you share a screenshot of your results?

Did you modify anything in the files provided in AN12872SW?

 

Best Regards,

Ricardo