[bsp][stm32f429-disco] Add guiengine support
This commit is contained in:
parent
fd7af6a150
commit
68c5cc39c3
@ -34,6 +34,8 @@
|
|||||||
|
|
||||||
void rt_init_thread_entry(void* parameter)
|
void rt_init_thread_entry(void* parameter)
|
||||||
{
|
{
|
||||||
|
rt_device_t lcd;
|
||||||
|
|
||||||
/* GDB STUB */
|
/* GDB STUB */
|
||||||
#ifdef RT_USING_GDB
|
#ifdef RT_USING_GDB
|
||||||
gdb_set_device("uart6");
|
gdb_set_device("uart6");
|
||||||
@ -59,6 +61,9 @@ void rt_init_thread_entry(void* parameter)
|
|||||||
#ifdef RT_USING_FINSH
|
#ifdef RT_USING_FINSH
|
||||||
finsh_system_init();
|
finsh_system_init();
|
||||||
#endif
|
#endif
|
||||||
|
lcd = rt_device_find("lcd");
|
||||||
|
rtgui_graphic_set_device(lcd);
|
||||||
|
rt_gui_demo_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
int rt_application_init()
|
int rt_application_init()
|
||||||
|
@ -64,6 +64,7 @@ static RCC_PeriphCLKInitTypeDef PeriphClkInitStruct;
|
|||||||
static uint32_t ActiveLayer = 0;
|
static uint32_t ActiveLayer = 0;
|
||||||
//LCD_DrvTypeDef *LcdDrv;
|
//LCD_DrvTypeDef *LcdDrv;
|
||||||
SPI_HandleTypeDef hspi5;
|
SPI_HandleTypeDef hspi5;
|
||||||
|
static SPI_HandleTypeDef SpiHandle;
|
||||||
|
|
||||||
void delay_us(rt_uint32_t nus)
|
void delay_us(rt_uint32_t nus)
|
||||||
{
|
{
|
||||||
@ -86,6 +87,28 @@ void delay_ms(rt_uint32_t nms)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief SPI MSP Init.
|
||||||
|
* @param hspi: SPI handle
|
||||||
|
*/
|
||||||
|
static void SPIx_MspInit(SPI_HandleTypeDef *hspi)
|
||||||
|
{
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
|
||||||
|
/* Enable SPIx clock */
|
||||||
|
DISCOVERY_SPIx_CLK_ENABLE();
|
||||||
|
|
||||||
|
/* Enable DISCOVERY_SPI GPIO clock */
|
||||||
|
DISCOVERY_SPIx_GPIO_CLK_ENABLE();
|
||||||
|
|
||||||
|
/* configure SPI SCK, MOSI and MISO */
|
||||||
|
GPIO_InitStructure.Pin = (DISCOVERY_SPIx_SCK_PIN | DISCOVERY_SPIx_MOSI_PIN | DISCOVERY_SPIx_MISO_PIN);
|
||||||
|
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStructure.Pull = GPIO_PULLDOWN;
|
||||||
|
GPIO_InitStructure.Speed = GPIO_SPEED_MEDIUM;
|
||||||
|
GPIO_InitStructure.Alternate = DISCOVERY_SPIx_AF;
|
||||||
|
HAL_GPIO_Init(DISCOVERY_SPIx_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Selects the LCD Layer.
|
* @brief Selects the LCD Layer.
|
||||||
@ -244,29 +267,66 @@ static uint32_t SPIx_Read(uint8_t ReadSize)
|
|||||||
/**
|
/**
|
||||||
* @brief Configures the LCD_SPI interface.
|
* @brief Configures the LCD_SPI interface.
|
||||||
*/
|
*/
|
||||||
__weak void LCD_IO_Init(void)
|
void LCD_IO_Init(void)
|
||||||
{
|
{
|
||||||
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure NCS in Output Push-Pull mode */
|
||||||
|
LCD_WRX_GPIO_CLK_ENABLE();
|
||||||
|
GPIO_InitStructure.Pin = LCD_WRX_PIN;
|
||||||
|
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStructure.Pull = GPIO_NOPULL;
|
||||||
|
GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
|
||||||
|
HAL_GPIO_Init(LCD_WRX_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
LCD_RDX_GPIO_CLK_ENABLE();
|
||||||
|
GPIO_InitStructure.Pin = LCD_RDX_PIN;
|
||||||
|
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStructure.Pull = GPIO_NOPULL;
|
||||||
|
GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
|
||||||
|
HAL_GPIO_Init(LCD_RDX_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
|
/* Configure the LCD Control pins ----------------------------------------*/
|
||||||
|
LCD_NCS_GPIO_CLK_ENABLE();
|
||||||
|
|
||||||
|
/* Configure NCS in Output Push-Pull mode */
|
||||||
|
GPIO_InitStructure.Pin = LCD_NCS_PIN;
|
||||||
|
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStructure.Pull = GPIO_NOPULL;
|
||||||
|
GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
|
||||||
|
HAL_GPIO_Init(LCD_NCS_GPIO_PORT, &GPIO_InitStructure);
|
||||||
|
|
||||||
/* Set or Reset the control line */
|
/* Set or Reset the control line */
|
||||||
LCD_CS_LOW();
|
LCD_CS_LOW();
|
||||||
LCD_CS_HIGH();
|
LCD_CS_HIGH();
|
||||||
|
|
||||||
/* SPI5 parameter configuration*/
|
/* SPI configuration -----------------------------------------------------*/
|
||||||
hspi5.Instance = SPI5;
|
SpiHandle.Instance = DISCOVERY_SPIx;
|
||||||
hspi5.Init.Mode = SPI_MODE_MASTER;
|
/* SPI baudrate is set to 5.6 MHz (PCLK2/SPI_BaudRatePrescaler = 90/16 = 5.625 MHz)
|
||||||
hspi5.Init.Direction = SPI_DIRECTION_2LINES;
|
to verify these constraints:
|
||||||
hspi5.Init.DataSize = SPI_DATASIZE_8BIT;
|
- ILI9341 LCD SPI interface max baudrate is 10MHz for write and 6.66MHz for read
|
||||||
hspi5.Init.CLKPolarity = SPI_POLARITY_LOW;
|
- l3gd20 SPI interface max baudrate is 10MHz for write/read
|
||||||
hspi5.Init.CLKPhase = SPI_PHASE_1EDGE;
|
- PCLK2 frequency is set to 90 MHz
|
||||||
hspi5.Init.NSS = SPI_NSS_SOFT;
|
*/
|
||||||
hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
|
SpiHandle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
|
||||||
hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
|
||||||
hspi5.Init.TIMode = SPI_TIMODE_DISABLE;
|
/* On STM32F429I-Discovery, LCD ID cannot be read then keep a common configuration */
|
||||||
hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
/* for LCD and GYRO (SPI_DIRECTION_2LINES) */
|
||||||
hspi5.Init.CRCPolynomial = 10;
|
/* Note: To read a register a LCD, SPI_DIRECTION_1LINE should be set */
|
||||||
if (HAL_SPI_Init(&hspi5) != HAL_OK)
|
SpiHandle.Init.Direction = SPI_DIRECTION_2LINES;
|
||||||
{
|
SpiHandle.Init.CLKPhase = SPI_PHASE_1EDGE;
|
||||||
//_Error_Handler(__FILE__, __LINE__);
|
SpiHandle.Init.CLKPolarity = SPI_POLARITY_LOW;
|
||||||
}
|
SpiHandle.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
|
||||||
|
SpiHandle.Init.CRCPolynomial = 7;
|
||||||
|
SpiHandle.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||||
|
SpiHandle.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||||
|
SpiHandle.Init.NSS = SPI_NSS_SOFT;
|
||||||
|
SpiHandle.Init.TIMode = SPI_TIMODE_DISABLED;
|
||||||
|
SpiHandle.Init.Mode = SPI_MODE_MASTER;
|
||||||
|
|
||||||
|
SPIx_MspInit(&SpiHandle);
|
||||||
|
HAL_SPI_Init(&SpiHandle);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,6 +151,23 @@
|
|||||||
#define LCD_RDX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
|
#define LCD_RDX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
|
||||||
#define LCD_RDX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
|
#define LCD_RDX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
|
||||||
|
|
||||||
|
/*############################### SPIx #######################################*/
|
||||||
|
#define DISCOVERY_SPIx SPI5
|
||||||
|
#define DISCOVERY_SPIx_CLK_ENABLE() __HAL_RCC_SPI5_CLK_ENABLE()
|
||||||
|
#define DISCOVERY_SPIx_GPIO_PORT GPIOF /* GPIOF */
|
||||||
|
#define DISCOVERY_SPIx_AF GPIO_AF5_SPI5
|
||||||
|
#define DISCOVERY_SPIx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE()
|
||||||
|
#define DISCOVERY_SPIx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOF_CLK_DISABLE()
|
||||||
|
#define DISCOVERY_SPIx_SCK_PIN GPIO_PIN_7 /* PF.07 */
|
||||||
|
#define DISCOVERY_SPIx_MISO_PIN GPIO_PIN_8 /* PF.08 */
|
||||||
|
#define DISCOVERY_SPIx_MOSI_PIN GPIO_PIN_9 /* PF.09 */
|
||||||
|
/* Maximum Timeout values for flags waiting loops. These timeouts are not based
|
||||||
|
on accurate values, they just guarantee that the application will not remain
|
||||||
|
stuck if the SPI communication is corrupted.
|
||||||
|
You may modify these timeout values depending on CPU frequency and application
|
||||||
|
conditions (interrupts routines ...). */
|
||||||
|
#define SPIx_TIMEOUT_MAX ((uint32_t)0x1000)
|
||||||
|
|
||||||
int rt_lcd_init(void);
|
int rt_lcd_init(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user