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

SDK10, SD 110 and nRF51822 on Segger Embedded Studio slow initialization

Hi,

We have an application built using sdk10 and sd110 on a nRF51822 chip using Segger Embedded Studio. The application works but it takes to long to start.

We have bootloader + application + sd!

/**@brief Function for application main entry.
 */
int main(void) {
  uint32_t err_code;

  NRF_POWER->RESET = 1;

  // Initialize.
  app_timer_init();

  app_bluetooth_ble_stack_init();

  app_memory_init(); //External Memory init (SPI)
  
  bool first_init = app_memory_system_on_first_time();

  app_bluetooth_device_manager_init(first_init);

  app_bluetooth_gap_params_init();
  app_bluetooth_advertising_init();
  app_bluetooth_services_init();
  app_bluetooth_conn_params_init();

  // Start execution.
  app_bluetooth_advertising_start();

  app_display_init();  //Initialize 8bit interface TFT display
  app_battery_init();  //Battery monitor init (ADC)
  app_touch_init();    //Touch sensor init  (I2C)

  app_heart_sensor_init();  //HRS init  (I2C)
  app_motor_init();         //Vibration Motor init (PWM)

#ifdef DEBUG
  app_notification_init();
  app_ui_flow_start(IDLE_VERTICE);      //Idle screen set
#else

  if (first_init)
    app_notification_init_secure();
  else
    app_notification_init();

  app_ui_flow_start(IDLE_VERTICE);

  if (first_init)
    app_ui_flow_start(FIRST_TIME_VERTICE);  //First time screen set

#endif

  app_motor_notify(INIT_MODE);      //init vibration set (PWM init)

  // Enter main loop.
  for (;;) {
    power_manage();
  }
}

As we can see on my main()  after all init sequence the vibration motor vibrates two times and goes off. The motor uses PWM and the Display uses a 8bit interface (nrf_gpio...)

The problem is that after the final vibration the application takes few seconds to realy work. If I wait few seconds (around 5 seconds) every thing works fine. Touch (I2C with a RDY pin) only works after few seconds.

If I request a screen just after the app_motor_notify(INIT_MODE); (see the code bellow), the screen function works but the motor does not vibrate.

app_motor_notify(INIT_MODE);
app_ui_flow_start(MAIN_SCREEN_VERTICE);

Does anyone have an idea about how to fix this slow initialization?

Parents Reply Children
No Data
Related