2012-03-07 01:13 AM
I wanted to
use the
UART port
but can not find
any information
to use this port
,
the port
only appears to
USART
, does anyone
can give me
some tips
how you can
connect the
stm32f4discovery
to establish
contact with
this type of
port (
UART
)
#espn2012-03-07 02:24 AM
Hi,
Here an example to configure and use UART 3 :/**************************************************************************
* @descr Initialise UART3 - RX:PD9 et TX:PD8
* @param None
* @retval None
*************************************************************************/
void
UART3Init(
void
)
{
USART_InitTypeDef UART3_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable USART3 clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
/* Connect PD8 and PD9 pins to AF */
GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_USART3);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_USART3);
/* Configure USART3 Tx (PD8) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_Init( GPIOD, &GPIO_InitStructure );
/* Configure USART3 Rx (PD9) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_Init( GPIOD, &GPIO_InitStructure );
/* Initialise Structure UART3 */
UART3_InitStructure.USART_BaudRate = 9600;
UART3_InitStructure.USART_WordLength = USART_WordLength_8b;
UART3_InitStructure.USART_StopBits = USART_StopBits_1;
UART3_InitStructure.USART_Parity = USART_Parity_No;
UART3_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
UART3_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
/* Initialise UART3 */
USART_Init(USART3,&UART3_InitStructure);
/* Enable the interrupt Rx UART3 */
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
/* Enable the UART3 */
USART_Cmd( USART3, ENABLE );
}
/**************************************************************************
* @descr Envoie d'un caractere via l'UARTx
* @param USARTx definie l'uart à utiliser (1,2,3,4,5,6)
* @param Data caractere à transferer
* @retval None
*************************************************************************/
void
USART_SendChar(USART_TypeDef* USARTx, unsigned
char
Data)
{
/* Check the parameters */
assert_param(IS_USART_ALL_PERIPH(USARTx));
/* Transmit Data */
USARTx->DR = (Data & (uint16_t)0x01FF);
}
/**************************************************************************
* @descr Envoie d'une chaine de caracteres via l'UARTx
* @param USARTx definie l'uart à utiliser (1,2,3,4,5,6)
* @param s chaine de caracteres à transferer
* @retval None
*************************************************************************/
void
USART_SendString(USART_TypeDef* USARTx,
char
*s)
{
/* Check the parameters */
assert_param(IS_USART_ALL_PERIPH(USARTx));
while
(*s)
{
while
(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
USART_SendData(USARTx, *s++);
}
}
2012-03-07 09:57 AM
I wanted to
use the
UART port
but can not find
any information
to use this port
,
the port
only appears to
USART
, does anyone
can give me
some tips
how you can
connect the
stm32f4discovery
to establish
contact with
this type of
port (
UART
)
The easiest way to get serial to a PC is via a USB-to-CMOS Serial chip/cable from the likes of FTDI, Silicon Labs or Prolific. Basically hook up TX, RX and GND, to a USART of your choice. USART3 would be recommended, use the pins supported by the boot loader. To connect to RS232 level serial, you'll need a MAX232 type device to buffer the voltages.2012-03-12 04:30 AM
but I
'm
trying to communicate with
one
Wifi
module
that has only
one
UART port
for communication
and I am not
able to transmit.
2012-03-12 06:30 AM
Any USART port can work as UART if you add
USARTX_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
in port initialization.
BTW some WIFI modules require USARTfor the high speed only (> 115200).
2012-03-12 06:54 AM
but I
'm
trying to communicate with
one
Wifi
module
that has only
one
UART port
for communication
and I am not
able to transmit.
Unfortunately your posts don't contain enough specific detail, and I don't have time to guess what might be wrong. None of us know what you are doing, you have to explain in more detail. What module? How's it connected? What pins? What USART? How's the software configured?