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

Regarding PA-LNA in mesh sdk

Hello,

        As nordic has implemented sdk for mesh and i have been using mesh sdk v3.0.0 LIGHT_SWITCH_EXAMPLE but i am facing some problem regarding pa_lna. Actually wt i have done is i send a data and it has to be relayed to particular device so that among many devices in a group it can reach to speicific device and it was implemented successfully but here while i need to receive the advertising packets from different devices it is showing more RSSI .here i am using nrf52832 developed with separate ble boards with different gpio's .so as mentioned by nordic semi related to pa_lna ,the pins were used as 24 and 25 but we are using different gpio's according to our boards.so here we are facing problems that when ever the data is advertising it is showing more RSSI and when ever command/data has been send from client to specific server then suddenly the RSSI shows less .

softdevice S132 and mesh sdk v3.0.0

windows using keil

so i am expecting that both pa_lna has to switch its role frequently but in my case its not happening,only when sending any command its showing less RSSI and the remaining advertising time its been more.

As i couldn't find any other solution related to this . so i hope could anyone help me regarding this problem .it will be so much helpful if i could complete this work with your help.

Thank You.

Parents
  • Hi, 

    Please explain if you have any external hardware PA and LNA on your board ?

    Did you modify anything to enable PA LNA in your code ? 

    Could you explain this: " when ever the data is advertising it is showing more RSSI and when ever command/data has been send from client to specific server then suddenly the RSSI shows less ." . Data is always sending over advertising channel in Mesh. And there isn't an empty data packet, there will always some data in a mesh packet. 

  • Hello,

    Here we are using nRF52832 with skyworks66112 for pa_lna for ble module on our board.

    So related to our board we are using 23 pin for PA and 20 pin for LNA  as shown below

    and by using this pins of our board we have implemented for central and peripheral profiles of nrf sdk by using this call

     static ble_opt_t pa_lna_opts = {
            .common_opt = {
                .pa_lna = {
                                
                    .pa_cfg = {
                        .enable = 1,
                        .active_high = 1,
                        .gpio_pin = APP_PA_PIN
                    },
                                
                                    
                    .lna_cfg = {
                        .enable = 1,
                        .active_high = 1,
                        .gpio_pin = APP_LNA_PIN
                    },
                                    
                    .ppi_ch_id_set = APP_AMP_PPI_CH_ID_SET,
                    .ppi_ch_id_clr = APP_AMP_PPI_CH_ID_CLR,
                    .gpiote_ch_id = APP_AMP_GPIOTE_CH_ID
                }
            }
        };
        NRF_GPIO->DIRSET |= (1 << APP_PA_PIN) | (1 << APP_LNA_PIN) ;
        err_code = sd_ble_opt_set(BLE_COMMON_OPT_PA_LNA, &pa_lna_opts);
        APP_ERROR_CHECK(err_code);


    and it used to work fine but whereas coming to sdk mesh pa and lna pins are 24 and 25 for sdk mesh we are using this

     mesh_pa_lna_gpiote_enable(&m_pa_lna_params);

    for mesh pa_lna it is not working

    And about advertising what i meant to say is actually we are advertising our manufacturing data through advertising.Here we have faced a problem is for advertising, the RSSI is showing more so advertising packets is unable to receive to near by device also.

     if( network_flag >= 1)
         {
           mesh_adv_stop();
           mesh_adv_data_set(PROXY_UUID_SERVICE1, buff_data[y++], sizeof(aqua_data));
           mesh_adv_start();

    network_flag = 0;

    }

    the above block of statement is used for advertising and this is happening for every 500msec ,as the flag is set in timer handler for every 500ms and this call is been called in while loop.....

    buff_data[0th location] ,device own data will be advertise

    and in the remaining locations data received by near by devices has to be advertised and for receiving we are using this callback

    void rx_cb(const nrf_mesh_adv_packet_rx_data_t * p_rx_data);

    but because of more RSSI ,if the device is little far from one another it is unable to receive advertising packets

    If i keep the devices very near to each other ,every device advertise all devices data for every 500msec interval.

    here buffer size is 20 bytes so each device advertise 20 bytes of data for 500ms.

    so i hope i have given u the required details regarding my problem and i wish i could solve this issue with your help.

    thank you.

  • Yes they are separate stacks so you need to call both APIs.

    When you receive Mesh error, please try to debug it. You can use add2line to get which line of code throwing the error.

    But first make sure mesh & PA/LNA work. Could you check if the pins are actually toggled ? 

  • Hi,

    thank you for your reply....

    now as i am using for both mesh and ble stack and it is working.

    thank you

    now i have added my complete application code and now it is showing me this error

    app_error_weak.c,  100, Application memory access: 163760:1..........

    could you please help me regarding this issue.

    Thank you....

  • You were accessing RAM occupied by the softdevice. 163760 = 0x27FB0, please use addr2line.exe to find which line of code caused the issue. 

  • Hi,

    can you please suggest me how to use addr2line.exe syntax for checking the error line code.

Reply Children
Related