mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-07 04:21:37 +08:00
Fix PX4IO startup
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
############################################################################
|
############################################################################
|
||||||
#
|
#
|
||||||
# Copyright (c) 2012, 2013 PX4 Development Team. All rights reserved.
|
# Copyright (c) 2012-2015 PX4 Development Team. All rights reserved.
|
||||||
#
|
#
|
||||||
# Redistribution and use in source and binary forms, with or without
|
# Redistribution and use in source and binary forms, with or without
|
||||||
# modification, are permitted provided that the following conditions
|
# modification, are permitted provided that the following conditions
|
||||||
|
|||||||
@@ -622,8 +622,15 @@ PX4IO::init()
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* get some parameters */
|
/* get some parameters */
|
||||||
unsigned protocol = io_reg_get(PX4IO_PAGE_CONFIG, PX4IO_P_CONFIG_PROTOCOL_VERSION);
|
unsigned protocol;
|
||||||
|
hrt_abstime start_try_time = hrt_absolute_time();
|
||||||
|
|
||||||
|
do {
|
||||||
|
usleep(2000);
|
||||||
|
protocol = io_reg_get(PX4IO_PAGE_CONFIG, PX4IO_P_CONFIG_PROTOCOL_VERSION);
|
||||||
|
} while (protocol == _io_reg_get_error && (hrt_elapsed_time(&start_try_time) < 700U * 1000U));
|
||||||
|
|
||||||
|
/* if the error still persists after timing out, we give up */
|
||||||
if (protocol == _io_reg_get_error) {
|
if (protocol == _io_reg_get_error) {
|
||||||
mavlink_and_console_log_emergency(_mavlink_fd, "Failed to communicate with IO, abort.");
|
mavlink_and_console_log_emergency(_mavlink_fd, "Failed to communicate with IO, abort.");
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright (c) 2013 PX4 Development Team. All rights reserved.
|
* Copyright (c) 2013-2015 PX4 Development Team. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@@ -217,6 +217,9 @@ PX4IO_serial::~PX4IO_serial()
|
|||||||
stm32_unconfiggpio(PX4IO_SERIAL_TX_GPIO);
|
stm32_unconfiggpio(PX4IO_SERIAL_TX_GPIO);
|
||||||
stm32_unconfiggpio(PX4IO_SERIAL_RX_GPIO);
|
stm32_unconfiggpio(PX4IO_SERIAL_RX_GPIO);
|
||||||
|
|
||||||
|
/* Disable APB clock for the USART peripheral */
|
||||||
|
modifyreg32(STM32_RCC_APB2ENR, RCC_APB2ENR_USART6EN, 0);
|
||||||
|
|
||||||
/* and kill our semaphores */
|
/* and kill our semaphores */
|
||||||
sem_destroy(&_completion_semaphore);
|
sem_destroy(&_completion_semaphore);
|
||||||
sem_destroy(&_bus_semaphore);
|
sem_destroy(&_bus_semaphore);
|
||||||
@@ -239,12 +242,17 @@ PX4IO_serial::~PX4IO_serial()
|
|||||||
int
|
int
|
||||||
PX4IO_serial::init()
|
PX4IO_serial::init()
|
||||||
{
|
{
|
||||||
|
|
||||||
/* allocate DMA */
|
/* allocate DMA */
|
||||||
_tx_dma = stm32_dmachannel(PX4IO_SERIAL_TX_DMAMAP);
|
_tx_dma = stm32_dmachannel(PX4IO_SERIAL_TX_DMAMAP);
|
||||||
_rx_dma = stm32_dmachannel(PX4IO_SERIAL_RX_DMAMAP);
|
_rx_dma = stm32_dmachannel(PX4IO_SERIAL_RX_DMAMAP);
|
||||||
if ((_tx_dma == nullptr) || (_rx_dma == nullptr))
|
if ((_tx_dma == nullptr) || (_rx_dma == nullptr))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
|
||||||
|
/* Enable the APB clock for the USART peripheral */
|
||||||
|
modifyreg32(STM32_RCC_APB2ENR, 0, RCC_APB2ENR_USART6EN);
|
||||||
|
|
||||||
/* configure pins for serial use */
|
/* configure pins for serial use */
|
||||||
stm32_configgpio(PX4IO_SERIAL_TX_GPIO);
|
stm32_configgpio(PX4IO_SERIAL_TX_GPIO);
|
||||||
stm32_configgpio(PX4IO_SERIAL_RX_GPIO);
|
stm32_configgpio(PX4IO_SERIAL_RX_GPIO);
|
||||||
@@ -258,6 +266,7 @@ PX4IO_serial::init()
|
|||||||
(void)rSR;
|
(void)rSR;
|
||||||
(void)rDR;
|
(void)rDR;
|
||||||
|
|
||||||
|
|
||||||
/* configure line speed */
|
/* configure line speed */
|
||||||
uint32_t usartdiv32 = PX4IO_SERIAL_CLOCK / (PX4IO_SERIAL_BITRATE / 2);
|
uint32_t usartdiv32 = PX4IO_SERIAL_CLOCK / (PX4IO_SERIAL_BITRATE / 2);
|
||||||
uint32_t mantissa = usartdiv32 >> 5;
|
uint32_t mantissa = usartdiv32 >> 5;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright (c) 2012, 2013 PX4 Development Team. All rights reserved.
|
* Copyright (c) 2012-2015 PX4 Development Team. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright (c) 2012, 2013 PX4 Development Team. All rights reserved.
|
* Copyright (c) 2012-2015 PX4 Development Team. All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
|
|||||||
Reference in New Issue
Block a user