7 #if defined (BOARD_ARMEBS4)
19 static const struct gpio_t fscm_pins[] =
64 GPIO_FSMC_NE1_FSMC_NCE2_PD7,
65 GPIO_FSMC_NE2_FSMC_NCE3_PG9,
83 RCC_AHB3PeriphClockCmd(RCC_AHB3ENR_FSMCEN, ENABLE);
113 FSMC_NORSRAMInit(&fscm);
114 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
141 FSMC_NORSRAMInit(&fscm);
142 FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM2, ENABLE);
150 static void load_init_external_ram(
void)
152 extern uint8_t __ext_ram_bss_start;
153 extern uint8_t __ext_ram_bss_end;
155 extern uint8_t __ext_ram_dst_start;
156 extern uint8_t __ext_ram_dst_end;
157 extern uint8_t __ext_ram_src_start;
159 memset(&__ext_ram_bss_start, 0x0, &__ext_ram_bss_end - &__ext_ram_bss_start);
160 memcpy(&__ext_ram_dst_start,&__ext_ram_src_start, &__ext_ram_dst_end - & __ext_ram_dst_start);
183 static void bsp_pwm_leds_init(uint32_t frequency, uint32_t steps, uint32_t initial)
186 const struct gpio_t pins[] =
198 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM10, ENABLE);
199 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM11, ENABLE);
200 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM13, ENABLE);
201 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
204 RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM10, ENABLE);
205 RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM10, DISABLE);
206 RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM11, ENABLE);
207 RCC_APB2PeriphResetCmd(RCC_APB2Periph_TIM11, DISABLE);
208 RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM13, ENABLE);
209 RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM13, DISABLE);
210 RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM14, ENABLE);
211 RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM14, DISABLE);
213 for (i = 0 ; i <
ARRAY_SIZE(led_timers) ; i++)
221 led_timers[i]->
ARR = steps - 1;
224 led_timers[i]->
CCR1 = initial;
236 void bsp_led_set_pwm(uint32_t
nr, uint32_t value)
253 if (led_timers[nr]->CCR1)
271 static status_e bsp_lcd_backlight_init(uint32_t frequency, uint32_t steps, uint32_t initial)
273 const struct gpio_t pins[] =
282 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
285 RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, ENABLE);
286 RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM5, DISABLE);
295 TIM5->PSC = (((
SystemClock.timer)/steps)/frequency) - 1;
298 TIM5->ARR = steps - 1;
301 TIM5->CCR4 = initial;
333 static status_e bsp_buttons_init(
void)
352 return &bsp_buttons[0];
358 const struct gpio_t gpio_vbus_not = PIN_VBUS_NOT;
369 static const struct gpio_t all_pins_safe_values[] =
385 GPIO_JTMS_SWDIO_PA13,
386 GPIO_JTCK_SWCLK_PA14,
394 GPIO_JTDO_TRACESWO_PB3,
495 PIN_RESET_NOT_CAMERA,
496 PIN_RESET_NOT_SCREEN,
499 PIN_RESET_NOT_ETHERNET,
551 status = bsp_buttons_init();
558 status = bsp_init_FSMC();
572 load_init_external_ram();
587 #if (USE_STM32_USB_HOST_MODE || USE_STM32_USB_USE_DEVICE_MODE || USE_STM32_USB_OTG_MODE)
588 #include "stm32/usb/usb_core.h"
591 void USB_OTG_BSP_DriveVBUS(USB_OTG_CORE_HANDLE *pdev, uint8_t state)
594 const struct gpio_t gpio_vbus_not = PIN_VBUS_NOT;
598 void USB_OTG_BSP_ConfigVBUS(USB_OTG_CORE_HANDLE *pdev)
600 const struct gpio_t gpio_vbus_not = PIN_VBUS_NOT;
602 USB_OTG_BSP_DriveVBUS (pdev, 0);
This file contains all the functions prototypes for the RCC firmware library.
uint32_t FSMC_DataSetupTime
uint32_t FSMC_WriteOperation
uint32_t FSMC_DataAddressMux
BSP - Board Support Package.
#define DEF_GPIOF(__PIN, __MODE)
same as DEF_GPIOA for port F
uint8_t nr
Pin number (0 for GPIOx0, ... , 3 for GPIOx3, ...)
uint32_t FSMC_WaitSignalActive
void delay_wait_ms(uint32_t ms)
Wait for at least that time.
#define BSP_BUTTON_NR
Number of buttons.
Timing parameters For NOR/SRAM Banks.
void * memcpy(void *dest, const void *src, size_t n)
void * memset(void *dest, int n, size_t n)
uint32_t FSMC_AsynchronousWait
#define DEF_GPIOB(__PIN, __MODE)
same as DEF_GPIOA for port B
void bsp_lcd_backlight_set(uint32_t value)
Set the brightness of the backlight.
FSMC NOR/SRAM Init structure definition.
uint8_t lightness_to_pwm(uint8_t percentage)
PWM value for driving a LED expressed as perceived percentage.
FSMC_NORSRAMTimingInitTypeDef * FSMC_WriteTimingStruct
#define DEF_GPIOD(__PIN, __MODE)
same as DEF_GPIOA for port D
static void gpio_set(const struct gpio_t *gpio, uint32_t value)
Set a gpio.
static uint32_t gpio_get(const struct gpio_t *gpio)
Get gpio level.
#define DEF_GPIOA(__PIN, __MODE)
Helper for defining a pin.
uint32_t FSMC_AddressHoldTime
void bsp_led_set(uint32_t nr, uint32_t value)
Set a led (ON or OFF)
#define DEF_GPIOG(__PIN, __MODE)
same as DEF_GPIOA for port G
void bsp_led_toggle(uint32_t nr)
toggle a led
#define BSP_PWM_LED_STEPS
Lightness correction.
uint32_t FSMC_WaitSignalPolarity
FSMC_NORSRAMTimingInitTypeDef * FSMC_ReadWriteTimingStruct
uint32_t FSMC_CLKDivision
This file contains all the functions prototypes for the FSMC firmware library.
uint32_t FSMC_DataLatency
uint32_t FSMC_AddressSetupTime
#define DEF_GPIOC(__PIN, __MODE)
same as DEF_GPIOA for port C
uint32_t FSMC_BurstAccessMode
status_e ram_test_basic(uint32_t *base, size_t size)
Quickly test a RAM region.
uint32_t FSMC_BusTurnAroundDuration
struct system_clock_t SystemClock
#define DEF_GPIOH(__PIN, __MODE)
same as DEF_GPIOA for port H
#define DEF_GPIOE(__PIN, __MODE)
same as DEF_GPIOA for port E
uint32_t FSMC_MemoryDataWidth
void bsp_eth_powerdown(void)
Shutdown the Ethernet interface.
status_e gpio_setup_list(const struct gpio_t gpio[], size_t len)
Setup an array of gpio.
status_e gpio_setup(const struct gpio_t *gpio)
Setup a gpio.
#define ARRAY_SIZE(x)
Number of elements in the array.
uint32_t FSMC_ExtendedMode
const struct gpio_t * bsp_button_gpios(void)
get buttons gpios
#define DEF_GPIOI(__PIN, __MODE)
same as DEF_GPIOA for port I
status_e bsp_init(void)
Initialize the whole board.
uint32_t bsp_button_get(uint32_t nr)
Get a button.