summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2013-12-22 23:37:26 +0100
committerThomas Gubler <thomasgubler@gmail.com>2014-01-02 11:09:16 +0100
commitb9d19cdef62210683d27e69bae22201ff3aa23d7 (patch)
tree732663f1c59ea2467044610468bd916072959b4d
parentc3b289e604a944f2c78f7b0eb8a2bfd1e66d198d (diff)
downloadnuttx-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.c16
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