This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Multiprotocol Ble and Thread + 2 wire FEM

Hello Nordic dev community,

I am trying to add FEM support to the ble_thread_dyn_hrs_coap_srv_freertos example, for BT840XE made by Fanstel which is nRF52840+SKY66112 in one package.

I have been having issues with BLE advertising, units running on nRF52840 with FEM_CONTROL_DEFAULT_ENABLE  = 0 works fine, But when I enable FEM Support for my BT840XE, Thread works and it joins the network but BLE I have trouble getting any sign of advertising data in nRF connect app on windows.

Fun fact: When I change PA_PIN and LNA_PIN to other not-connected GPIOs (not controlling FEM) I do pickup BLE advertising in nRF Connect, but it is very spotty and connection drops out as i move away a few meters. so this tells me the only reason BLE isn't working with FEM on is that SDK/Simple_GPIO driver isn't controlling the FEM right.

Before I get into specifics of the code:

- What approach does Nordic recommend for 2 wire FEMs? It says all over nrf_fem_simple_gpio.c that it is no longer recommended but says use it for SkyWorks modules. Is that still the case? i.e. should i be using 3 wire or simple_gpio for this chip? From Sky66112  datasheet, it has 5 control pins, but Fanstel has simplified it and connects to the uP via only 2 wires. So I used the 2 wire interface. Pwr down (sleep) mode is achieved when both TX and RX signals (CRX CTX) are low.

If i use the 3 wire FEM driver and hookup PwrDown pin number to an arbitrary (NC) GPIO, would that cause any issues?

- It is very unfortunate that Fanstel didn't include external pins for P017 and P019 that are connected to CTX and CRX on SKY66112 (it is wired inside the can) - therefore I cannot capture the status of these pins with scope or logic analyzer - I looked into reading the values of GPIOs from memory of nRF directly but there doesn't seem to be an easy way. Any recommendations here for ways to log GPIO status directly from nRF via debugger?

OR is it possible to mirror GPIOs that control the FEM via PPI onto other GPIOs so I can log the status via logic analyzer?

NOTE: I had to rebuild some Thread/802.15.4 radio driver .a libs/dependencies as P06 and P08 which are used for Thread CLI in the examples are used to control the FEM in Fanstel BT840XE, and also I made the change from 3 wire FEM driver to 2-wire (simple).

I can provide more info and go back to the standard example excluding my custom code as much as possible, but some general direction for debugging this would be very helpful, thanks!

Parents Reply Children
  • Good to know, 

    what is the technical challenge that is causing SDK for T&Z to not support multiprotocol with FEM? Thread and BLE work fine in the nRF52840 (so the SDK is doing its job sharing the internal radio between the two), so all that needs to happen is to sync the SKY PA with the PA of nRF and also sync the LNAs. I dont mind developing the low level driver, just some guidance would be very helpful if it is possible. any github tickets for this?

  • Hi,

    I don't know the exact technical reasons why this is not possible, but unfortunately not possible as of today. The PA/LNA implementation for BLE is within the softdevice, so I do not see how you can make your own low level driver unfortunately.

    Best regards,
    Kenneth

Related