diff options
author | Simon Wilks <sjwilks@gmail.com> | 2012-12-06 17:24:27 +0100 |
---|---|---|
committer | Simon Wilks <sjwilks@gmail.com> | 2012-12-06 17:24:27 +0100 |
commit | 097aeddcadc6c0b5decf8374c05586bfff5e403d (patch) | |
tree | d92ab85b977258d94056a78673dfb9ceebd2f580 /nuttx | |
parent | 451ecc1bf4c310652ed8450ce0341bb148c66567 (diff) | |
download | px4-firmware-097aeddcadc6c0b5decf8374c05586bfff5e403d.tar.gz px4-firmware-097aeddcadc6c0b5decf8374c05586bfff5e403d.tar.bz2 px4-firmware-097aeddcadc6c0b5decf8374c05586bfff5e403d.zip |
Push single wire operations into stm32_serial.c and added a test to verify HoTT telemetry setup.
Diffstat (limited to 'nuttx')
-rw-r--r-- | nuttx/arch/arm/src/stm32/stm32_serial.c | 21 | ||||
-rw-r--r-- | nuttx/drivers/serial/serial.c | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/nuttx/arch/arm/src/stm32/stm32_serial.c b/nuttx/arch/arm/src/stm32/stm32_serial.c index 0868c3cd3..80c4ce357 100644 --- a/nuttx/arch/arm/src/stm32/stm32_serial.c +++ b/nuttx/arch/arm/src/stm32/stm32_serial.c @@ -1307,6 +1307,27 @@ static int up_ioctl(struct file *filep, int cmd, unsigned long arg) } break; + /* Set RS485 mode */ + case TIOCSRS485: + { + /* Change the TX port to be open-drain/push-pull */ + if (arg == SER_RS485_ENABLED) { + stm32_configgpio(priv->tx_gpio | GPIO_OPENDRAIN); + } else { + stm32_configgpio(priv->tx_gpio | GPIO_PUSHPULL); + } + + /* Enable/disable half-duplex mode */ + uint32_t cr = up_serialin(priv, STM32_USART_CR3_OFFSET); + if (arg == SER_RS485_ENABLED) { + cr |= (USART_CR3_HDSEL); + } else { + cr &= ~(USART_CR3_HDSEL); + } + up_serialout(priv, STM32_USART_CR3_OFFSET, cr); + } + break; + #ifdef CONFIG_SERIAL_TERMIOS case TCGETS: { diff --git a/nuttx/drivers/serial/serial.c b/nuttx/drivers/serial/serial.c index c650da5db..c31d12eee 100644 --- a/nuttx/drivers/serial/serial.c +++ b/nuttx/drivers/serial/serial.c @@ -687,6 +687,7 @@ static int uart_ioctl(FAR struct file *filep, int cmd, unsigned long arg) *(int *)arg = count; } + break; #ifdef CONFIG_SERIAL_TERMIOS case TCGETS: |