diff options
author | Thomas Gubler <thomasgubler@gmail.com> | 2013-12-22 23:37:26 +0100 |
---|---|---|
committer | Thomas Gubler <thomasgubler@gmail.com> | 2014-01-02 11:09:16 +0100 |
commit | b9d19cdef62210683d27e69bae22201ff3aa23d7 (patch) | |
tree | 732663f1c59ea2467044610468bd916072959b4d | |
parent | c3b289e604a944f2c78f7b0eb8a2bfd1e66d198d (diff) | |
download | nuttx-b9d19cdef62210683d27e69bae22201ff3aa23d7.tar.gz nuttx-b9d19cdef62210683d27e69bae22201ff3aa23d7.tar.bz2 nuttx-b9d19cdef62210683d27e69bae22201ff3aa23d7.zip |
STM32F10xxx single wire usart support
-rw-r--r-- | nuttx/arch/arm/src/stm32/stm32_serial.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/nuttx/arch/arm/src/stm32/stm32_serial.c b/nuttx/arch/arm/src/stm32/stm32_serial.c index 0cf1f209b..6b56165db 100644 --- a/nuttx/arch/arm/src/stm32/stm32_serial.c +++ b/nuttx/arch/arm/src/stm32/stm32_serial.c @@ -1741,8 +1741,19 @@ static int up_ioctl(struct file *filep, int cmd, unsigned long arg) /* Change the TX port to be open-drain/push-pull and enable/disable * half-duplex mode. */ - uint32_t cr = up_serialin(priv, STM32_USART_CR3_OFFSET); +#if defined(CONFIG_STM32_STM32F10XX) + if (arg == SER_SINGLEWIRE_ENABLED) + { + stm32_configgpio((priv->tx_gpio & ~(GPIO_CNF_MASK)) | GPIO_CNF_AFOD); + cr |= USART_CR3_HDSEL; + } + else + { + stm32_configgpio((priv->tx_gpio & ~(GPIO_CNF_MASK)) | GPIO_CNF_AFPP); + cr &= ~USART_CR3_HDSEL; + } +#else if (arg == SER_SINGLEWIRE_ENABLED) { @@ -1754,10 +1765,11 @@ static int up_ioctl(struct file *filep, int cmd, unsigned long arg) stm32_configgpio(priv->tx_gpio | GPIO_PUSHPULL); cr &= ~USART_CR3_HDSEL; } +#endif up_serialout(priv, STM32_USART_CR3_OFFSET, cr); } - break; + break; #endif #ifdef CONFIG_SERIAL_TERMIOS |