From 68b2809ee8f611d089f6d946dba10bb1b6d5c507 Mon Sep 17 00:00:00 2001 From: Anton Staaf Date: Wed, 22 Jul 2015 09:17:23 -0700 Subject: Discovery: Configure USART2 as a loopback device This gives a test case for the USART driver on an STM32L. Eventually this will be a good place to test that even in a downclocked configuration the STM32L USART driver can handle 115200 without dropping characters. This also gives a convenient build test for the STM32L version of the USART driver. Signed-off-by: Anton Staaf BRANCH=None BUG=None TEST=make buildall -j Cross connect a Discovery and a Discovery-stm32f072 Change-Id: Ifb8dfc1179e8a0be84390d36e0bc3ff15f4f4685 Reviewed-on: https://chromium-review.googlesource.com/288979 Tested-by: Anton Staaf Reviewed-by: Randall Spangler Commit-Queue: Anton Staaf Trybot-Ready: Anton Staaf --- board/discovery/board.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) (limited to 'board/discovery/board.c') diff --git a/board/discovery/board.c b/board/discovery/board.c index 1821cb6f7c..eb58434aa7 100644 --- a/board/discovery/board.c +++ b/board/discovery/board.c @@ -7,19 +7,60 @@ #include "common.h" #include "gpio.h" #include "hooks.h" +#include "queue_policies.h" #include "registers.h" #include "task.h" +#include "usart-stm32f0.h" +#include "usart_tx_dma.h" #include "util.h" +void button_event(enum gpio_signal signal); + +#include "gpio_list.h" + void button_event(enum gpio_signal signal) { + static int count; + + gpio_set_level(GPIO_LED_GREEN, ++count & 0x02); } -#include "gpio_list.h" +void usb_gpio_tick(void) +{ + static int count; + + gpio_set_level(GPIO_LED_BLUE, ++count & 0x01); +} +DECLARE_HOOK(HOOK_TICK, usb_gpio_tick, HOOK_PRIO_DEFAULT); -/* Initialize board. */ +/****************************************************************************** + * Setup USART2 as a loopback device, it just echo's back anything sent to it. + */ +static struct usart_config const loopback_usart; + +static struct queue const loopback_queue = + QUEUE_DIRECT(64, uint8_t, + loopback_usart.producer, + loopback_usart.consumer); + +static struct usart_tx_dma const loopback_tx_dma = + USART_TX_DMA(STM32_DMAC_CH7, 16); + +static struct usart_config const loopback_usart = + USART_CONFIG(usart2_hw, + usart_rx_interrupt, + loopback_tx_dma.usart_tx, + 115200, + loopback_queue, + loopback_queue); + +/****************************************************************************** + * Initialize board. + */ static void board_init(void) { gpio_enable_interrupt(GPIO_USER_BUTTON); + + usart_init(&loopback_usart); } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); -- cgit v1.2.1