Fix rev D radio init/power/reset and add back bootloader capability

pull/7304/head
Leon Lindenfelser 2018-08-29 12:10:53 -05:00
parent 2886ea0ad8
commit fad95e9a7d
3 changed files with 17 additions and 53 deletions

View File

@ -27,13 +27,7 @@
static void press_power_button(int time_us)
{
gpio_t gpio;
#if defined(TARGET_UBLOX_C030_R410M)
gpio_init_inout(&gpio, MDMPWRON, PIN_OUTPUT, OpenDrain, 0);
#else
gpio_init_inout(&gpio, MDMPWRON, PIN_OUTPUT, OpenDrainNoPull, 1);
#endif
gpio_init_out_ex(&gpio, MDMPWRON, 1);
wait_us(time_us);
gpio_write(&gpio, 0);
}
@ -45,71 +39,52 @@ void onboard_modem_init()
// Take us out of reset
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, 0);
gpio_init_inout(&gpio, MDMPWRON, PIN_OUTPUT, OpenDrainNoPull, 0);
gpio_init_out_ex(&gpio, MDMRST, 0);
gpio_init_out_ex(&gpio, MDMPWRON, 0);
gpio_init_inout(&gpio, RADIO_DTR, PIN_OUTPUT, OpenDrainNoPull, 0);
}
void onboard_modem_deinit()
{
onboard_modem_power_down();
gpio_t gpio;
// Back into reset
gpio_init_inout(&gpio, MDMRST,PIN_OUTPUT, OpenDrainNoPull, 1);
gpio_init_out_ex(&gpio, MDMRST, 1);
gpio_init_out_ex(&gpio, MDMPWRON, 1);
gpio_init_inout(&gpio, BUF_EN, PIN_OUTPUT, OpenDrainNoPull, 1);
gpio_init_inout(&gpio, RADIO_PWR, PIN_OUTPUT, PushPullNoPull, 0);
gpio_init_inout(&gpio, RADIO_DTR, PIN_OUTPUT, OpenDrainNoPull, 1);
}
void onboard_modem_power_up()
{
#if defined(TARGET_UBLOX_C030_R410M)
/* keep the power line low for 1 seconds */
press_power_button(1000000);
#else
/* keep the power line low for 50 microseconds */
onboard_modem_init();
gpio_t gpio;
gpio_init_in(&gpio, MON_1V8);
if(gpio_is_connected(&gpio) != 0 && gpio_read(&gpio) != 0) {
if(gpio_is_connected(&gpio) && !gpio_read(&gpio)) {
unsigned int i = 0;
while(i < 5)
while(i < 3)
{
press_power_button( 2000000);
wait_ms(1000);
onboard_modem_deinit();
wait_ms(1000);
onboard_modem_init();
press_power_button(150000);
wait_ms(250);
if(gpio_is_connected(&gpio) != 0 && gpio_read(&gpio) == 0)
if(gpio_read(&gpio))
{
break;
}
i++;
}
}
press_power_button( 2000000);
#endif
/* give modem a little time to respond */
wait_ms(500);
}
void onboard_modem_power_down()
{
#if defined(TARGET_UBLOX_C030_R410M)
/* keep the power line low for 1.5 seconds */
/* Activate PWR_ON for 1.5s to switch off */
press_power_button(1500000);
#else
/* keep the power line low for 1 seconds */
press_power_button(300000);
#endif
// check for 1.8v low if not, take reset low for 10s
}
#endif //MODEM_ON_BOARD

View File

@ -26,20 +26,8 @@ void ublox_board_init(void) {
gpio_init_inout(&gpio, VUSB_EN, PIN_OUTPUT, OpenDrainNoPull, 0);
// start with modem disabled
gpio_init_out_ex(&gpio, MDMRST, 1);
#if defined(TARGET_UBLOX_C030_R410M)
gpio_init_inout(&gpio, MDMPWRON, PIN_OUTPUT, OpenDrain, 0);
#else
gpio_init_inout(&gpio, MDMPWRON, PIN_OUTPUT, OpenDrainNoPull, 0);
#endif
gpio_init_out_ex(&gpio, MDMRTS, 1);
//gpio_init_in_ex(&gpio, MDMCURRENTSENSE, PullNone);
#if !defined (TARGET_UBLOX_C030_R410M)
// start with GNSS disabled, this is ONLY TEMPORARY and that once the HW issue with the GNSSEN pin on the R410M board is resolved then this line will become default for all platforms.
// gpio_init_inout(&gpio, GNSSEN, PIN_OUTPUT, PushPullNoPull, 0);
#endif
gpio_init_out_ex(&gpio, MDMRST, 1);
gpio_init_out_ex(&gpio, MDMPWRON, 0);
}
// End Of File

View File

@ -2262,6 +2262,7 @@
"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",
"bootloader_supported": true
},
"MTB_MTS_DRAGONFLY": {
"inherits": ["FAMILY_STM32"],