This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Max throughput for 52832 single peripheral

Hi,

  • What's the maximum throughput for nRF52832 as peripheral?
  • S132 7.1 SDS demonstrates configuration for 192kbps. But I noticed that DLE is not yet enabled. So can it be even faster? For instance, reach 50KB/s? If it can be, how do I set those parameters?

  • Another thread mentioned that, RAM for softdevice needs to be modified when attempting to extend gap_event_length. Any further explanation on relationship between event_length and RAM?

Your help is appreciated,

Ava

Parents
  • hi Ava,

    we have sdk16 example based on sdk16.0.0 BLE_APP_UART example, you can port it to sdk17 accordingly.

    832 keil IDE.

    ble_app_uart_hs.7z

    Regards,

    William.

  • That is a good example to test the throughput. 

    Please note that it will start the test when the central (mobile phone or other central) is connected and enables notifications, and that it will only try to send packets when the app_timer expires.

    Another way to trigger new transmissions could be to add the BLE_GAP_EVT_TX_COMPLETE event to the ble_event_handler, and then do something similar from that event (but not inside the event):

    volatile bool resume_transmission = false;
    
    ble_evt_handler()
    {
        ...
        case BLE_GAP_EVT_TX_COMPLETE:
            resume_transmission = true;
        ...
    }
    
    void throughput_test(void);
    {
        // Setup everything;
        ret_code_t err_code = NRF_SUCCESS;
        do
        {
            err_code = ble_nus_data_send(...);
        } while err_code == NRF_SUCCESS;
    }
    
    
    main()
    {
        ...
        
        for (;;)
        {
            if (resume_transmission == true)
            {
                resume_transmission = false;
                throughput_test();
            }
            idle_state_handle();
        }
    }

    Best regards,

    Edvin

Reply
  • That is a good example to test the throughput. 

    Please note that it will start the test when the central (mobile phone or other central) is connected and enables notifications, and that it will only try to send packets when the app_timer expires.

    Another way to trigger new transmissions could be to add the BLE_GAP_EVT_TX_COMPLETE event to the ble_event_handler, and then do something similar from that event (but not inside the event):

    volatile bool resume_transmission = false;
    
    ble_evt_handler()
    {
        ...
        case BLE_GAP_EVT_TX_COMPLETE:
            resume_transmission = true;
        ...
    }
    
    void throughput_test(void);
    {
        // Setup everything;
        ret_code_t err_code = NRF_SUCCESS;
        do
        {
            err_code = ble_nus_data_send(...);
        } while err_code == NRF_SUCCESS;
    }
    
    
    main()
    {
        ...
        
        for (;;)
        {
            if (resume_transmission == true)
            {
                resume_transmission = false;
                throughput_test();
            }
            idle_state_handle();
        }
    }

    Best regards,

    Edvin

Children
No Data
Related