nRF9160 detecting antenna to prevent high power draw

Hello,

I have a custom board based on a nRF9160 SiP. It uses a shared antenna for GPS and Cellular, based on this : https://infocenter.nordicsemi.com/index.jsp?topic=%2Fnwp_033%2FWP%2Fnwp_033%2Fnwp_033_intro.html

I use a SMA connector, which is accessible to the end user. The antenna can therefore be removed.

I noticed that the power consumption profile was very different when the antenna is mounted and when the SMA remains "open" (no antenna). Not only the power draw is higher, but it's also very spiky ... which is not appreciated by the battery I use, and causes the device to reset because the voltage drops.

I attached a log, where the device turns on cellular, connects to nRFCloud, sends and read data.Note that in both cases (with and without antenna), the operation succeed because network coverage is good where I am.

I would like to know if this is an expected behavior ?

If so, is there a way to detect whether an antenna is connected or not ? Ideally, I need to detect the antenna presence prior to enabling cellular, but this might no be doable.

Maybe using SNR or something similar ? But I believe this would require the device to be already connected to the network ?

I found this documentation, but my hardware does not implement the required components/traces. https://docs.nordicsemi.com/bundle/nwp_033/page/WP/nwp_033/nwp_033_antenna_detect_magpio.html

Thanks !

Parents
  • Hello, 

    I will need to discuss the issue internally with our antenna experts. Are you able to provide more information on your setup i.e. schematics and layout, or have you had a design review of your custom board? 

    Our development kit uses the modem antenna library which writes the MAGPIO and COEX0 configuration to the modem after the Modem library has been initialized. The configuration depends on the selected board and the used GNSS antenna type, onboard or external. 

    This is done at startup of the board. E.g. the Thingy:91 has a combined antenna for LTE and GNSS, and uses the following setup to configure the MAGPIO through the QM12038 RF switches:

    Kind regards,

    Øyvind

  • Hi Øyvind,

    Thanks for your quick response.

    The schematic is very similar to what is suggested.

    The code looks like this. I remove all the error checking to make it more readable.

    - Init() is called once at startup

    - Enable() is called whenever I need to restart/reconfigure the modem (for example, if the GPS was used)

    void CELLULAR_MODEM_Init(void)
    {
    	nrf_modem_lib_init();	
    	
    	// Indicate that the AUX pin is used/redirected for GPS
    	nrf_modem_at_printf("AT%%XANTCFG=1") ;
    		
    	// Setup COEX0 to be set to 1 when the frequency used by the modem is in GNSS range.
    	// Depending on the hardware, this is used to for either :
    	// - Enable the GPS frontend (LNA)
    	// - Enable power supply for an external active GPS antenna	
    	err = nrf_modem_at_printf("AT%%XCOEX0=1,1,1550,1615") ; 	// Using the entire LNA operating frequency range
    
    	lte_lc_init() ;
    }
    
    
    void CELLULAR_MODEM_Enable(void)
    {
    	// Make sure modem is stopped
    	nrf_modem_at_printf("AT+CFUN=0") ;
    
    	// Setup mode: enable LTE-M and NB-IOT. Disable GNSS.
    	nrf_modem_at_printf("AT%%XSYSTEMMODE=1,1,0,0") ;	// No preference: Auto
    		
    	// Start modem 		
    	nrf_modem_at_printf("AT+CFUN=1") ;
    
    	// Enable PSM
    	lte_lc_psm_req(enablePSM);
    
    	// Connect to netwrok
    	 lte_lc_connect_async(lte_handler);
    }

Reply
  • Hi Øyvind,

    Thanks for your quick response.

    The schematic is very similar to what is suggested.

    The code looks like this. I remove all the error checking to make it more readable.

    - Init() is called once at startup

    - Enable() is called whenever I need to restart/reconfigure the modem (for example, if the GPS was used)

    void CELLULAR_MODEM_Init(void)
    {
    	nrf_modem_lib_init();	
    	
    	// Indicate that the AUX pin is used/redirected for GPS
    	nrf_modem_at_printf("AT%%XANTCFG=1") ;
    		
    	// Setup COEX0 to be set to 1 when the frequency used by the modem is in GNSS range.
    	// Depending on the hardware, this is used to for either :
    	// - Enable the GPS frontend (LNA)
    	// - Enable power supply for an external active GPS antenna	
    	err = nrf_modem_at_printf("AT%%XCOEX0=1,1,1550,1615") ; 	// Using the entire LNA operating frequency range
    
    	lte_lc_init() ;
    }
    
    
    void CELLULAR_MODEM_Enable(void)
    {
    	// Make sure modem is stopped
    	nrf_modem_at_printf("AT+CFUN=0") ;
    
    	// Setup mode: enable LTE-M and NB-IOT. Disable GNSS.
    	nrf_modem_at_printf("AT%%XSYSTEMMODE=1,1,0,0") ;	// No preference: Auto
    		
    	// Start modem 		
    	nrf_modem_at_printf("AT+CFUN=1") ;
    
    	// Enable PSM
    	lte_lc_psm_req(enablePSM);
    
    	// Connect to netwrok
    	 lte_lc_connect_async(lte_handler);
    }

Children
No Data
Related