fixing onboard modem init bug on mts dragonfly l471

pull/7304/head
cedrick kukela 2018-06-21 20:47:50 -04:00 committed by Leon Lindenfelser
parent 28f6b5787a
commit 5e1bb381cd
2 changed files with 33 additions and 6 deletions

View File

@ -46,6 +46,7 @@ void onboard_modem_init()
gpio_init_inout(&gpio, RADIO_PWR, PIN_OUTPUT, PushPullNoPull, 1);
gpio_init_inout(&gpio, BUF_EN, PIN_OUTPUT, OpenDrainNoPull, 0);
gpio_init_inout(&gpio, MDMRST, PIN_OUTPUT, OpenDrainNoPull, 1);
gpio_init_inout(&gpio, MDMPWRON, PIN_OUTPUT, OpenDrainNoPull, 1);
}
void onboard_modem_deinit()
@ -53,11 +54,14 @@ void onboard_modem_deinit()
gpio_t gpio;
// Back into reset
gpio_init_inout(&gpio, RADIO_PWR, PIN_OUTPUT, PushPullNoPull, 0);
gpio_init_inout(&gpio, BUF_EN, PIN_OUTPUT, OpenDrainNoPull, 1);
gpio_init_inout(&gpio, MDMRST,PIN_OUTPUT, OpenDrainNoPull, 0);
gpio_init_inout(&gpio, BUF_EN, PIN_OUTPUT, OpenDrainNoPull, 1);
gpio_init_inout(&gpio, RADIO_PWR, PIN_OUTPUT, PushPullNoPull, 0);
}
void onboard_modem_power_up()
{
#if defined(TARGET_UBLOX_C030_R410M)
@ -65,11 +69,34 @@ void onboard_modem_power_up()
press_power_button(1000000);
#else
/* keep the power line low for 50 microseconds */
press_power_button(1000000);
gpio_t gpio;
gpio_init_in(&gpio, MON_1V8);
if(gpio_is_connected(&gpio) != 0 && gpio_read(&gpio) != 0) {
unsigned int i = 0;
while(i < 5)
{
press_power_button( 2000000);
wait_ms(1000);
onboard_modem_deinit();
wait_ms(1000);
onboard_modem_init();
wait_ms(250);
if(gpio_is_connected(&gpio) != 0 && gpio_read(&gpio) == 0)
{
break;
}
i++;
}
}
press_power_button( 2000000);
#endif
/* give modem a little time to respond */
wait_ms(100);
wait_ms(500);
}
void onboard_modem_power_down()
@ -79,7 +106,7 @@ void onboard_modem_power_down()
press_power_button(1500000);
#else
/* keep the power line low for 1 seconds */
press_power_button(1500000);
press_power_button(300000);
#endif
}

View File

@ -2258,7 +2258,7 @@
}
},
"detect_code": ["0312"],
"macros_add": [ "RTC_LSE=1"],
"macros_add": [ "RTC_LSE=1", "CELLULAR_DEVICE=UBLOX_PPP"],
"device_has_add": ["ANALOGOUT", "CAN", "LOWPOWERTIMER", "SERIAL_ASYNCH", "SERIAL_FC", "TRNG", "FLASH", "ANALOGIN", "I2C", "INTERRUPTIN", "PORTIN", "PORTINOUT", "PORTOUT", "PWMOUT", "SERIAL", "SLEEP", "SPI", "SPISLAVE"],
"release_versions": ["2", "5"],
"device_name": "STM32L471QG",