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

send large amount of data over nus

I am using below code to send data over nus. If the data size is 150 bytes, it is OK. However, if the data size is 200 bytes, the nRF51822 will reset. Please tell me how to solve. I am using nRF51822 with softdevie S130. My application is based on ble_uart_app

               if(user_m_conn_handle!=BLE_CONN_HANDLE_INVALID)
               {
                 i=UserUart.RxBuf[1]+2;
                 index = 0;
                 while(i>0)
                 {
                   if(i>20)
                   {
                     while((err_code = ble_nus_string_send(&m_nus, UserUart.RxBuf+index, 20)) == BLE_ERROR_NO_TX_PACKETS )
                     {
                       ;
                     }
                     if (err_code != NRF_ERROR_INVALID_STATE)
                     {
                         APP_ERROR_CHECK(err_code);
                     }
                     i -= 20;
                     index += 20;
                   }
                   else 
                   {
                     while((err_code = ble_nus_string_send(&m_nus, UserUart.RxBuf+index, i)) == BLE_ERROR_NO_TX_PACKETS)
                     {
                       ;
                     }
                     if (err_code != NRF_ERROR_INVALID_STATE)
                     {
                         APP_ERROR_CHECK(err_code);
                     }
                     i = 0;
                     
                   }
                     
                 }
               }
Parents
  • just saying "its urgent, help help help help help" doesn't really do anything at all so perhaps stop that. People are trying to help you and try to remember we have way less information than you do. if the application is resetting in the code you've posted, then it's APP_ERROR_CHECK(), however much you're sure it's not. If it's resetting elsewhere, then it's in code you haven't posted.

    So firstly are you sure this is the piece of code in which you are resetting?

    Secondly comment out the APP_ERROR_CHECK() and see if you stop resetting.

    What does your hardfault handler look like, does that have a reset in it, are you going there?

    Chips don't reset just for fun, they enter a piece of code which calls the NVIC reset function and reset.

Reply
  • just saying "its urgent, help help help help help" doesn't really do anything at all so perhaps stop that. People are trying to help you and try to remember we have way less information than you do. if the application is resetting in the code you've posted, then it's APP_ERROR_CHECK(), however much you're sure it's not. If it's resetting elsewhere, then it's in code you haven't posted.

    So firstly are you sure this is the piece of code in which you are resetting?

    Secondly comment out the APP_ERROR_CHECK() and see if you stop resetting.

    What does your hardfault handler look like, does that have a reset in it, are you going there?

    Chips don't reset just for fun, they enter a piece of code which calls the NVIC reset function and reset.

Children
No Data
Related