From 07dd0df10212ab484a859ad0f08c64ee29cafd68 Mon Sep 17 00:00:00 2001 From: Jan NIJS Date: Fri, 6 Jan 2017 21:02:42 +0100 Subject: [PATCH] LP-477 Add "iBus RX on receiver port" support for revo(clone) boards. --- .../targets/boards/revolution/board_hw_defs.c | 31 +++++++++++++++++++ .../boards/revolution/firmware/pios_board.c | 5 +++ shared/uavobjectdefinition/hwsettings.xml | 4 +-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/flight/targets/boards/revolution/board_hw_defs.c b/flight/targets/boards/revolution/board_hw_defs.c index 74770d980..9e33beeb2 100644 --- a/flight/targets/boards/revolution/board_hw_defs.c +++ b/flight/targets/boards/revolution/board_hw_defs.c @@ -1218,6 +1218,37 @@ static const struct pios_usart_cfg pios_usart_ibus_flexi_cfg = { }, }; +static const struct pios_usart_cfg pios_usart_ibus_rcvr_cfg = { + .regs = USART6, + .remap = GPIO_AF_USART6, + .init = { + .USART_BaudRate = 115200, + .USART_WordLength = USART_WordLength_8b, + .USART_Parity = USART_Parity_No, + .USART_StopBits = USART_StopBits_1, + .USART_HardwareFlowControl = USART_HardwareFlowControl_None, + .USART_Mode = USART_Mode_Rx, + }, + .irq = { + .init = { + .NVIC_IRQChannel = USART6_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + .rx = { + .gpio = GPIOC, + .init = { + .GPIO_Pin = GPIO_Pin_7, + .GPIO_Speed = GPIO_Speed_2MHz, + .GPIO_Mode = GPIO_Mode_AF, + .GPIO_OType = GPIO_OType_PP, + .GPIO_PuPd = GPIO_PuPd_UP + }, + }, +}; + #endif /* PIOS_INCLUDE_IBUS */ #if defined(PIOS_INCLUDE_EXBUS) diff --git a/flight/targets/boards/revolution/firmware/pios_board.c b/flight/targets/boards/revolution/firmware/pios_board.c index d324ef619..a7fc96298 100644 --- a/flight/targets/boards/revolution/firmware/pios_board.c +++ b/flight/targets/boards/revolution/firmware/pios_board.c @@ -1109,6 +1109,11 @@ void PIOS_Board_Init(void) case HWSETTINGS_RM_RCVRPORT_PPMGPS: PIOS_Board_configure_com(&pios_usart_rcvrport_cfg, PIOS_COM_GPS_RX_BUF_LEN, PIOS_COM_GPS_TX_BUF_LEN, &pios_usart_com_driver, &pios_com_gps_id); break; + case HWSETTINGS_RM_RCVRPORT_IBUS: +#if defined(PIOS_INCLUDE_IBUS) + PIOS_Board_configure_ibus(&pios_usart_ibus_rcvr_cfg); +#endif /* PIOS_INCLUDE_IBUS */ + break; } #if defined(PIOS_INCLUDE_GCSRCVR) diff --git a/shared/uavobjectdefinition/hwsettings.xml b/shared/uavobjectdefinition/hwsettings.xml index ae30f9ec5..f0dfe1950 100644 --- a/shared/uavobjectdefinition/hwsettings.xml +++ b/shared/uavobjectdefinition/hwsettings.xml @@ -11,9 +11,9 @@ - + limits="%0905NE:PPM+PWM:PPM+Telemetry:PPM+DebugConsole:PPM+ComBridge:PPM+MSP:PPM+MAVLink:PPM+GPS:Telemetry:DebugConsole:ComBridge:MSP:MAVLink:GPS:IBus;"/>