Use FRDM KW41Z SDK version: 2.2.0 (2019-04-24) latest version
(BLE): use frdmkw41z_wireless_examples_bluetooth_hci_black_box_bm
(Zigbee): use frdmkw41z_wireless_examples_zigbee_3_0_coordinator_freertos
If (BLE) is to be Coexistence feature, the gMWS_UseCoexistence_d of MWS.h should be enabled.
Ble_Initialize() is going to call Controller_TaskInit() and execute XCVR_CoexistenceInit() section.
when Zigbee is going to do Coexistence , the gMWS_UseCoexistence_d flag of app_mac_config.h is also turned on.
But there is no function to call Phy_Init() to execute XCVR_CoexistenceInit() section.
1. Set a breakpoint in Phy_Init() function and won't run in.
2. Put Phy_Init() anywhere in main_task(), the breakpoint can run in
1: Can KW21Z Zigbee coexistence be used?
2: Does KW21Z Zigbee coexistence have the same complete test as BLE?
3: In addition to Enable the flag of gMWS_UseCoexistence_d, where Phy_Init() should be placed in Main_task() is correct？
4: If my approach is wrong, please guide me how to open KW21Z Zigbee Coexistence feature.
Thanks for your answer.
As we are dealing with Zb+Wifi Coexistence and ExternalPA issue at the same time in this project. We'll close current question and create a new one regarding those pins for both requirement.
I'm glad to see it's working on your side.
Just as a general comment/tip: The coexistence pins can be any GPIO pin that you want to use, it’s not required to have those signals hardware-managed (as with Bluetooth LE). So, it’s OK to select any pin.
Also, the current coexistence implementation available within the SDK supports two wifi coex protocols: Priority/status based and Priority only base. It's important that you select one for the coex protocol that your wifi module support or adapt it if required.
Some key default settings:
|gMWS_Coex_Model_d||Priority only based|
|gMWS_CoexRfDenyActiveState_d||RF_Deny pin polarity to active logic one|
Refer to Connectivity Framework Reference Manual, Chapter 3.16.1 for more details about MWS Coexistence module. Please don't forget to mark the question as answered if applies and create separate questions for further queries.
Thanks for the reply.
We did not enable gMWS_Enabled_d flag in our last test, and failed to break at Phy_Init().
We turned on the flag this time as you suggested, and it works now.
The project is just started, and the Host is from Qualcomm through UART communicating with KW21Z.
Thanks for your help!
I ran a quick test using the zigbee_3_0_coordinator_freertos example, enabled the gMWS_Enabled_d and gMWS_UseCoexistence_d from preprocessor options and I see the MWS module being initialized under Phy_Init() function.
Could you please specify the Wifi module you are using? By default, it will initialize the RFDeny, RFActive and RFStatus with PTA17, PTC1 and PTC3 respectively but the behavior will depend on the Coexistence protocol implemented by the Wifi module and it may or may not be implemented within the MWS example code.
Note: I used the latest SDK for KW41Z (KSDK 2.2.1 (released on 2019-08-13)) from mcuxpresso.nxp.com
This file has been confirmed .
( Connectivity Framework Reference Manual [ Rev 7 ] on chapter 3.16 Mobile Wireless Systems Coexistence )
The problem is as mentioned before:
Although gMWS_UseCoexistence_d is turned on,
I have found that Phy_Init( ) is not called,
So MWS_CoexistenceInit() will not be executed.
where Phy_Init() should be placed in Main_task() is correct？
Which WIFI device are you using ?
Please consider that each of those devices implements it own coexistence protocol.
I'll check where it should be called, let me investigate.
Thanks for your reply.
Daniel and I work in the same team as NXP MCU FAEs to support our OEM customers. We understand the difference between KW41/31/21, and would like to add more comments to this KW21Z Wifi-Zigbee does not work issue.
We have been shipping quite a lot of KW41Z to our OEM customers for more than 2 years. The main products are WIFI gateway and AP, with BLE & 802.15.4 (not ZigBee) wireless connection using KW41Z.
The main F/W code for KW41Z is based on:
"frdmkw41z_wireless_examples_bluetooth_hci_black_box_bm" MCUXpresso project in SDK_2.2.0_FRDM-KW41Z.
Being a Wifi gateway/AP, the Wifi-BLE co-existence option has been enabled as below,
This part of code is called while Ble_Initialize(). We further verified the function by checking the related IC pins.
Now this customer creates a new Wifi-Gateway project but with ZigBee only connection instead of BLE. So we have proposed KW21Z per their request.
We just tried on FRDMKW41Z board, and F/W still based on SDK_2.2.0_FRDM-KW41Z, but with
"frdmkw41z_wireless_examples_zigbee_3_0_coordinator_freertos" MCUXpresso project,
and found co-existence function seems not working!
After checking the project code, we found the initialization part of code is inside Phy_Init().
But no body has ever called this Phy_Init() inside the project.
We wonder if this is the reason that caused the Wifi-ZigBee co-existence function not working problem?
If yes, who and where should this Phy_Init() be called?
Please check and comment.
I will need to investigate about this, but it would appear that there might be something missing or we need to do something different to enable it. Let me investigate about this and as soon as I get any update I'll let you know.
Also, just to confirm , you already checked the Connectivity Framework Reference Manual on chapter 3.16 Mobile Wireless Systems Coexistence , is that correct?
I understand that KW21Z only supports Zigbee.
I mentioned BLE in my text because KW41 is useful for Coexistence, so I used it for comparison.
My question is:
KW21Z's Coexistence does not work,
I have found that Phy_Init() is not called,
In addition to Enable the flag of gMWS_UseCoexistence_d,
where Phy_Init() should be placed in Main_task() is correct？
How do I get KW21Z Coexistence to work?
I'm not sure if there is a confusion, but the KW21Z does not support Bluetooth LE.
The KW41Z supports Zigbee , Thread, 802.15.4, GenFSK and Bluetooth LE.
The KW31Z supports Bluetooth LE and GenFSK.
Finally KW21Z supports Thread, Zigbee, 802.15.4