updated display, work fine display and get temperature values, display

with 2/3 of height
This commit is contained in:
Yunhorn 2023-08-07 16:59:50 +08:00
parent 959cfeec63
commit 10a012c390
7 changed files with 123 additions and 66 deletions

View File

@ -44,7 +44,11 @@ void MX_DMA_Init(void)
__HAL_RCC_DMA1_CLK_ENABLE(); __HAL_RCC_DMA1_CLK_ENABLE();
/* DMA interrupt init */ /* DMA interrupt init */
#if 1
/* DMA1_Channel1_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
#if 0
/* DMA1_Channel2_IRQn interrupt configuration */ /* DMA1_Channel2_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0); HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn); HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn);

View File

@ -131,36 +131,43 @@ int main(void)
MX_LoRaWAN_Init(); MX_LoRaWAN_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
//MX_ADC_Init(); //MX_ADC_Init();
MX_SPI_Init();
MX_GPIO_Init(); MX_GPIO_Init();
MX_DMA_Init();
MX_SPI_Init();
MX_I2C_Init(); MX_I2C_Init();
//MX_DMA_Init();
APP_LOG(TS_OFF, VLEVEL_L, "START LCD init....\r\n"); APP_LOG(TS_OFF, VLEVEL_L, "START LCD init....\r\n");
BSP_LCD_Init(); BSP_LCD_Init();
BSP_LCD_DisplayOn();
//HAL_Delay(2000);
//BSP_LCD_DisplayOff();
BSP_LCD_Test(); BSP_LCD_Test();
MLX90640_I2CInit(); MLX90640_I2CInit();
mlx90640_display_init(); mlx90640_display_init();
#if 0
APP_LOG(TS_OFF, VLEVEL_L, "DISPLAY ON....\r\n"); APP_LOG(TS_OFF, VLEVEL_L, "DISPLAY ON....\r\n");
BSP_LCD_DisplayOn(); BSP_LCD_DisplayOn();
BSP_LCD_Clear(LCD_COLOR_YELLOW); BSP_LCD_Clear(LCD_COLOR_YELLOW);
APP_LOG(TS_OFF, VLEVEL_L, "WIDTH = %d, HEIGHT =%d \r\n", BSP_LCD_GetXSize(), BSP_LCD_GetYSize()); APP_LOG(TS_OFF, VLEVEL_L, "WIDTH = %d, HEIGHT =%d \r\n", BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
BSP_LCD_DisplayStringAt(45,45,"SmarToilets",LEFT_MODE,LCD_COLOR_BLUE); BSP_LCD_DisplayStringAt(45,45,"SmarToilets",LEFT_MODE,LCD_COLOR_BLUE);
BSP_LCD_SetRotation(1);
APP_LOG(TS_OFF, VLEVEL_L, "WIDTH = %d, HEIGHT =%d \r\n", BSP_LCD_GetXSize(), BSP_LCD_GetYSize()); APP_LOG(TS_OFF, VLEVEL_L, "WIDTH = %d, HEIGHT =%d \r\n", BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
BSP_LCD_DisplayStringAt(45,45,"SmarToilets",LEFT_MODE,LCD_COLOR_RED); BSP_LCD_DisplayStringAt(45,45,"SmarToilets",LEFT_MODE,LCD_COLOR_RED);
APP_LOG(TS_OFF, VLEVEL_L, "DISPLAY LOGO....\r\n"); APP_LOG(TS_OFF, VLEVEL_L, "DISPLAY LOGO....\r\n");
BSP_LCD_DisplayStringAt(45,45,"SmarToilets",LEFT_MODE,LCD_COLOR_BLUE); BSP_LCD_DisplayStringAt(45,45,"SmarToilets",LEFT_MODE,LCD_COLOR_BLUE);
#endif
while (1) while (1)
{ {
/* USER CODE END WHILE */ /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ /* USER CODE BEGIN 3 */
//BSP_LCD_DisplayOff();
mlx90640_display_process(); mlx90640_display_process();
} }
//HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1); //HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);

View File

@ -33,7 +33,10 @@ void MX_SPI_Init(void)
{ {
/* USER CODE BEGIN SPI1_Init 0 */ /* USER CODE BEGIN SPI1_Init 0 */
__HAL_RCC_SPI1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/* USER CODE END SPI1_Init 0 */ /* USER CODE END SPI1_Init 0 */
/* USER CODE BEGIN SPI1_Init 1 */ /* USER CODE BEGIN SPI1_Init 1 */
@ -41,14 +44,14 @@ void MX_SPI_Init(void)
/* USER CODE END SPI1_Init 1 */ /* USER CODE END SPI1_Init 1 */
hspi1.Instance = SPI1; hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_1LINE; hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT; hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE; hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; //SPI_BAUDRATEPRESCALER_64; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; //SPI_BAUDRATEPRESCALER_64;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE; //hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
//hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; //hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7; hspi1.Init.CRCPolynomial = 7;
//hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; //hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
@ -102,7 +105,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(MEMS_SPI_SCK_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(MEMS_SPI_SCK_GPIO_Port, &GPIO_InitStruct);
#if 1 #if 0
/* SPI1 DMA Init */ /* SPI1 DMA Init */
/* SPI1_RX Init */ /* SPI1_RX Init */
hdma_spi1_rx.Instance = DMA1_Channel2; hdma_spi1_rx.Instance = DMA1_Channel2;
@ -125,27 +128,28 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
} }
__HAL_LINKDMA(spiHandle,hdmarx,hdma_spi1_rx); __HAL_LINKDMA(spiHandle,hdmarx,hdma_spi1_rx);
#endif
#if 1
/* SPI1_TX Init */ /* SPI1_TX Init */
hdma_spi1_tx.Instance = DMA1_Channel3; hdma_spi1_tx.Instance = DMA1_Channel1;
hdma_spi1_tx.Init.Request = DMA_REQUEST_SPI1_TX; hdma_spi1_tx.Init.Request = DMA_REQUEST_SPI1_TX;
hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE; hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
hdma_spi1_tx.Init.Mode = DMA_NORMAL; hdma_spi1_tx.Init.Mode = DMA_NORMAL;
hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW; hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW;
if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK) if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
} }
#if 0
if (HAL_DMA_ConfigChannelAttributes(&hdma_spi1_tx, DMA_CHANNEL_NPRIV) != HAL_OK) if (HAL_DMA_ConfigChannelAttributes(&hdma_spi1_tx, DMA_CHANNEL_NPRIV) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
} }
#endif
__HAL_LINKDMA(spiHandle,hdmatx,hdma_spi1_tx); __HAL_LINKDMA(spiHandle,hdmatx,hdma_spi1_tx);
/* SPI1 interrupt Init */ /* SPI1 interrupt Init */

View File

@ -244,6 +244,20 @@ void EXTI1_IRQHandler(void)
/* USER CODE END EXTI1_IRQn 1 */ /* USER CODE END EXTI1_IRQn 1 */
} }
/**
* @brief This function handles DMA1 Channel 1 Interrupt.
*/
void DMA1_Channel1_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
/* USER CODE END DMA1_Channel1_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_spi1_tx);
/* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
/* USER CODE END DMA1_Channel1_IRQn 1 */
}
#if 0
/** /**
* @brief This function handles DMA1 Channel 2 Interrupt. * @brief This function handles DMA1 Channel 2 Interrupt.
*/ */
@ -266,12 +280,12 @@ void DMA1_Channel3_IRQHandler(void)
/* USER CODE BEGIN DMA1_Channel3_IRQn 0 */ /* USER CODE BEGIN DMA1_Channel3_IRQn 0 */
/* USER CODE END DMA1_Channel3_IRQn 0 */ /* USER CODE END DMA1_Channel3_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_spi1_tx); //HAL_DMA_IRQHandler(&hdma_spi1_tx);
/* USER CODE BEGIN DMA1_Channel3_IRQn 1 */ /* USER CODE BEGIN DMA1_Channel3_IRQn 1 */
/* USER CODE END DMA1_Channel3_IRQn 1 */ /* USER CODE END DMA1_Channel3_IRQn 1 */
} }
#endif
/** /**
* @brief This function handles DMA1 Channel 5 Interrupt. * @brief This function handles DMA1 Channel 5 Interrupt.
*/ */

View File

@ -118,11 +118,11 @@ static void drawLegend(void) {
BSP_LCD_SetFont(&Font16); BSP_LCD_SetFont(&Font16);
memset(tempBuffer,0,sizeof(tempBuffer)); memset(tempBuffer,0,sizeof(tempBuffer));
sprintf(tempBuffer,(char *)"%2.1f",minTemp); sprintf(tempBuffer,(char *)"%2.1f",minTemp);
BSP_LCD_DisplayStringAt(8,290,(uint8_t *)tempBuffer,LEFT_MODE,LCD_COLOR_BLUE); BSP_LCD_DisplayStringAt(8,230,(uint8_t *)tempBuffer,LEFT_MODE,LCD_COLOR_BLUE);
memset(tempBuffer,0,sizeof(tempBuffer)); memset(tempBuffer,0,sizeof(tempBuffer));
sprintf(tempBuffer,(char *)"%2.1f",maxTemp); sprintf(tempBuffer,(char *)"%2.1f",maxTemp);
BSP_LCD_DisplayStringAt(190,290,(uint8_t *)tempBuffer,LEFT_MODE,LCD_COLOR_RED); BSP_LCD_DisplayStringAt(190,230,(uint8_t *)tempBuffer,LEFT_MODE,LCD_COLOR_RED);
} }
@ -135,16 +135,16 @@ static void drawMeasurement(void ) {
// Measure and print center temperature // Measure and print center temperature
centerTemp = (tempValues[383 - 16] + tempValues[383 - 15] + tempValues[384 + 15] + tempValues[384 + 16]) / 4; centerTemp = (tempValues[383 - 16] + tempValues[383 - 15] + tempValues[384 + 15] + tempValues[384 + 16]) / 4;
BSP_LCD_SetFont(&Font16); BSP_LCD_SetFont(&Font16);
memset(tempBuffer,0,sizeof(tempBuffer)); memset(tempBuffer,0,sizeof(tempBuffer));
sprintf(tempBuffer,(char *)"%2.2f ",centerTemp); sprintf(tempBuffer,(char *)"%2.2f ",centerTemp);
BSP_LCD_DisplayStringAt(88,220,(uint8_t *)tempBuffer,LEFT_MODE,LCD_COLOR_RED); BSP_LCD_DisplayStringAt(88,230,(uint8_t *)tempBuffer,LEFT_MODE,LCD_COLOR_RED);
} }
static void drawPicture(void) { static void drawPicture(void) {
for (y=0; y<24; y++) { for (y=0; y<24; y++) {
for (x=0; x<32; x++) { for (x=0; x<32; x++) {
BSP_LCD_FillRect(8 + x*7, 8 + y*7, 7, 7, TempToColor(tempValues[(31-x) + (y*32)])); BSP_LCD_FillRect(x*10, y*10, 9, 10, TempToColor(tempValues[(x) + (y*32)]));
} }
} }
} }
@ -169,6 +169,7 @@ static void readTempValues(void) {
MLX90640_CalculateTo(mlx90640Frame, &mlx90640, EMMISIVITY, tr, tempValues); MLX90640_CalculateTo(mlx90640Frame, &mlx90640, EMMISIVITY, tr, tempValues);
} }
#if 0
APP_LOG(TS_OFF,VLEVEL_L, "\r\n\n\n"); APP_LOG(TS_OFF,VLEVEL_L, "\r\n\n\n");
for (uint8_t y=0; y < 24; y++) { for (uint8_t y=0; y < 24; y++) {
for (uint8_t x=0; x<32; x++) { for (uint8_t x=0; x<32; x++) {
@ -176,10 +177,11 @@ static void readTempValues(void) {
} }
APP_LOG(TS_OFF,VLEVEL_L, "\r\n"); APP_LOG(TS_OFF,VLEVEL_L, "\r\n");
} }
#endif
} }
void mlx90640_display_process(void){ void mlx90640_display_process(void){
APP_LOG(TS_OFF, VLEVEL_L, "Read value.\r\n"); //APP_LOG(TS_OFF, VLEVEL_L, "Read value.\r\n");
readTempValues(); readTempValues();
setTempScale(); setTempScale();
drawPicture(); drawPicture();

View File

@ -66,8 +66,8 @@ LCD_DrvTypeDef st7789v_drv =
//static uint8_t Is_st7789v_Initialized = 0; //static uint8_t Is_st7789v_Initialized = 0;
static uint16_t ArrayRGB[280] = {0}; static uint16_t ArrayRGB[280] = {0};
uint16_t st7789v_width = 240; uint16_t st7789v_width = ST7789V_LCD_PIXEL_WIDTH;
uint16_t st7789v_height = 280; uint16_t st7789v_height = ST7789V_LCD_PIXEL_HEIGHT;
uint8_t st7789v_rotation = 0; uint8_t st7789v_rotation = 0;
/** /**
* @} * @}
@ -122,20 +122,19 @@ void st7789v_Init(void)
/* Initialize st7789v low level bus layer -----------------------------------*/ /* Initialize st7789v low level bus layer -----------------------------------*/
LCD_IO_Init(); LCD_IO_Init();
//LCD_CS_HIGH(); //LCD_CS_LOW(); //CHIP SELECT
LCD_RST_LOW(); // CHIP RESET
LCD_RST_LOW(); HAL_Delay(100);
HAL_Delay(10);
LCD_RST_HIGH(); LCD_RST_HIGH();
HAL_Delay(10); HAL_Delay(100);
LCD_BL_ON(); LCD_BL_ON();
HAL_Delay(100); HAL_Delay(100);
/* Out of sleep mode, 0 args, no delay */ /* Out of sleep mode, 0 args, no delay */
st7789v_WriteRegCmd(0x11); st7789v_WriteRegCmd(0x11);
HAL_Delay(120); HAL_Delay(120);
st7789v_WriteRegCmd(0x36);
st7789v_WriteRegCmd(0x36);
if (st7789v_rotation ==0) st7789v_WriteRegCmd(0x00); if (st7789v_rotation ==0) st7789v_WriteRegCmd(0x00);
else if (st7789v_rotation ==1) st7789v_WriteRegCmd(0xC0); else if (st7789v_rotation ==1) st7789v_WriteRegCmd(0xC0);
if (st7789v_rotation ==2) st7789v_WriteRegCmd(0x70); if (st7789v_rotation ==2) st7789v_WriteRegCmd(0x70);
@ -192,7 +191,8 @@ void st7789v_Init(void)
st7789v_WriteReg(0xE1, 0x0E); st7789v_WriteReg(0xE1, 0x0E);
st7789v_WriteReg(0xE1, 0x09); st7789v_WriteReg(0xE1, 0x09);
st7789v_WriteReg(0xE1, 0x09); st7789v_WriteReg(0xE1, 0x09);
st7789v_WriteReg(0xE1, 0x05); st7789v_WriteReg(0xE1, 0x15);
st7789v_WriteReg(0xE1, 0x31);
st7789v_WriteReg(0xE1, 0x33); st7789v_WriteReg(0xE1, 0x33);
st7789v_WriteReg(0xE1, 0x48); st7789v_WriteReg(0xE1, 0x48);
st7789v_WriteReg(0xE1, 0x17); st7789v_WriteReg(0xE1, 0x17);
@ -254,9 +254,9 @@ void st7789v_SetCursor(uint16_t Xpos, uint16_t Ypos)
data = (Xpos) & 0xFF; data = (Xpos) & 0xFF;
LCD_IO_WriteMultipleData(&data, 1); LCD_IO_WriteMultipleData(&data, 1);
LCD_IO_WriteReg(0x2B);/* Row address set: RASET */ LCD_IO_WriteReg(0x2B);/* Row address set: RASET */
data = (Ypos) >> 8; data = (Ypos+20) >> 8;
LCD_IO_WriteMultipleData(&data, 1); LCD_IO_WriteMultipleData(&data, 1);
data = (Ypos) & 0xFF; data = (Ypos+20) & 0xFF;
LCD_IO_WriteMultipleData(&data, 1); LCD_IO_WriteMultipleData(&data, 1);
LCD_IO_WriteReg(0x2C);/* Memory write: RAMWR */ LCD_IO_WriteReg(0x2C);/* Memory write: RAMWR */
} }
@ -271,10 +271,10 @@ void st7789v_SetCursor(uint16_t Xpos, uint16_t Ypos)
void st7789v_WritePixel(uint16_t Xpos, uint16_t Ypos, uint16_t RGBCode) void st7789v_WritePixel(uint16_t Xpos, uint16_t Ypos, uint16_t RGBCode)
{ {
uint8_t data = 0; uint8_t data = 0;
// if((Xpos > ST7789V_LCD_PIXEL_WIDTH) || (Ypos > ST7789V_LCD_PIXEL_HEIGHT)) if((Xpos > ST7789V_LCD_PIXEL_WIDTH) || (Ypos > ST7789V_LCD_PIXEL_HEIGHT))
// { {
// return; return;
// } }
/* Set Cursor */ /* Set Cursor */
st7789v_SetCursor(Xpos, Ypos); st7789v_SetCursor(Xpos, Ypos);
@ -484,7 +484,7 @@ void st7789_SetRotation(uint8_t rotation)
case 0: case 0:
/* Memory access control: MY = 0, MX = 0, MV = 0, ML = 0 */ /* Memory access control: MY = 0, MX = 0, MV = 0, ML = 0 */
/* */ /* */
#if 0 #if 1
st7789v_WriteReg(0X36, 0x08); st7789v_WriteReg(0X36, 0x08);
st7789v_WriteReg(0x2A, 0x00); st7789v_WriteReg(0x2A, 0x00);
st7789v_WriteReg(0x2A, 0x00); st7789v_WriteReg(0x2A, 0x00);
@ -500,7 +500,7 @@ void st7789_SetRotation(uint8_t rotation)
break; break;
case 1: case 1:
/* Memory access control: MY = 0, MX = 1, MV = 1, ML = 0 */ /* Memory access control: MY = 0, MX = 1, MV = 1, ML = 0 */
#if 0 #if 1
st7789v_WriteReg(0X36, 0x68); st7789v_WriteReg(0X36, 0x68);
st7789v_WriteReg(0x2A, 0x00); st7789v_WriteReg(0x2A, 0x00);
st7789v_WriteReg(0x2A, 0x00); st7789v_WriteReg(0x2A, 0x00);

View File

@ -146,25 +146,43 @@ uint8_t BSP_LCD_Init(void)
uint8_t ret = LCD_ERROR; uint8_t ret = LCD_ERROR;
/* Default value for draw propriety */ /* Default value for draw propriety */
#if 1
DrawProp.BackColor = 0xFFFF; DrawProp.BackColor = 0xFFFF;
DrawProp.pFont = &Font16; DrawProp.pFont = &Font16;
DrawProp.TextColor = 0x0000; DrawProp.TextColor = 0x0000;
#endif
// lcd_drv = &hx8347d_drv; // lcd_drv = &hx8347d_drv;
lcd_drv = &st7789v_drv; lcd_drv = &st7789v_drv;
LCD_IO_Init(); //LCD_IO_Init();
/* LCD Init */ /* LCD Init */
lcd_drv->Init(); lcd_drv->Init();
lcd_drv->SetRotation(1);
BSP_LCD_SetRotation(0); #if 0
LCD_BL_ON();
/* Clear the LCD screen */ /* Clear the LCD screen */
BSP_LCD_Clear(LCD_COLOR_WHITE); BSP_LCD_Clear(LCD_COLOR_WHITE);
HAL_Delay(1000);
LCD_BL_OFF();
/* Initialize the font */ /* Initialize the font */
BSP_LCD_SetFont(&LCD_DEFAULT_FONT); BSP_LCD_SetFont(&LCD_DEFAULT_FONT);
BSP_LCD_SetRotation(1);
LCD_BL_ON();
BSP_LCD_Clear(LCD_COLOR_BLUE);
HAL_Delay(1000);
LCD_BL_OFF();
BSP_LCD_SetRotation(2);
LCD_BL_ON();
BSP_LCD_Clear(LCD_COLOR_GREEN);
HAL_Delay(1000);
LCD_BL_OFF();
/* Clear the LCD screen */
BSP_LCD_Clear(LCD_COLOR_WHITE);
#endif
ret = LCD_OK; ret = LCD_OK;
return ret; return ret;
@ -692,7 +710,7 @@ void BSP_LCD_FillRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Hei
lcd_drv->FillRect(Xpos, Ypos, Width, Height, RGBCode); lcd_drv->FillRect(Xpos, Ypos, Width, Height, RGBCode);
} }
SetDisplayWindow(0, 0, BSP_LCD_GetYSize(), BSP_LCD_GetXSize()); SetDisplayWindow(0, 0, BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
} }
/** /**
@ -1187,15 +1205,20 @@ void LCD_IO_Init(void)
/* Configure LCD_CS_PIN pin: LCD CS pin */ /* Configure LCD_CS_PIN pin: LCD CS pin */
gpioinitstruct.Pin = LCD_CS_PIN; gpioinitstruct.Pin = LCD_CS_PIN;
gpioinitstruct.Mode = GPIO_MODE_OUTPUT_PP; gpioinitstruct.Mode = GPIO_MODE_OUTPUT_PP;
gpioinitstruct.Speed = GPIO_SPEED_FREQ_HIGH; gpioinitstruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(LCD_CS_GPIO_Port, &gpioinitstruct); HAL_GPIO_Init(LCD_CS_GPIO_Port, &gpioinitstruct);
/* Configure LCD_DC_PIN pin: LCD Card DC pin */ /* Configure LCD_DC_PIN pin: LCD Card DC pin */
gpioinitstruct.Pin = LCD_DC_PIN; gpioinitstruct.Pin = LCD_DC_PIN;
HAL_GPIO_Init(LCD_DC_GPIO_PORT, &gpioinitstruct); HAL_GPIO_Init(LCD_DC_GPIO_PORT, &gpioinitstruct);
gpioinitstruct.Pin = LCD_RST_PIN;
HAL_GPIO_Init(LCD_RST_GPIO_PORT, &gpioinitstruct);
/* LCD chip select high */ /* LCD chip select high */
LCD_CS_HIGH(); LCD_CS_HIGH();
LCD_DC_HIGH();
LCD_RST_HIGH();
/* LCD SPI Config */ /* LCD SPI Config */
//SPIx_Init(); //SPIx_Init();
@ -1212,13 +1235,16 @@ void LCD_IO_WriteReg(uint8_t LCDReg)
LCD_CS_LOW(); LCD_CS_LOW();
/* Set LCD data/command line DC to Low */ /* Set LCD data/command line DC to Low */
//LCD_DC_LOW(); LCD_DC_LOW();
/* Send Command */ /* Send Command */
SPIx_Write(LCDReg); SPIx_Write(LCDReg);
HAL_Delay(1); HAL_Delay(1);
LCD_DC_HIGH();
/* Deselect : Chip Select high */ /* Deselect : Chip Select high */
LCD_CS_HIGH(); LCD_CS_HIGH();
} }
/** /**
@ -1312,37 +1338,37 @@ void LCD_Delay(uint32_t Delay)
void BSP_LCD_Test(void) void BSP_LCD_Test(void)
{ {
BSP_LCD_Clear(LCD_COLOR_WHITE); BSP_LCD_Clear(LCD_COLOR_WHITE);
HAL_Delay(1000); HAL_Delay(500);
APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with red...........\r\n"); APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with red...........\r\n");
BSP_LCD_Clear(LCD_COLOR_RED); BSP_LCD_Clear(LCD_COLOR_RED);
HAL_Delay(1000); HAL_Delay(500);
BSP_LCD_Clear(LCD_COLOR_RED); BSP_LCD_Clear(LCD_COLOR_RED);
APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with blue...........\r\n"); APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with blue...........\r\n");
BSP_LCD_Clear(LCD_COLOR_BLUE); BSP_LCD_Clear(LCD_COLOR_BLUE);
HAL_Delay(1000); HAL_Delay(500);
APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with YELLOW...........\r\n"); APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with YELLOW...........\r\n");
BSP_LCD_Clear(LCD_COLOR_YELLOW); BSP_LCD_Clear(LCD_COLOR_YELLOW);
HAL_Delay(1000); HAL_Delay(500);
APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with GREEN...........\r\n"); APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with GREEN...........\r\n");
BSP_LCD_Clear(LCD_COLOR_GREEN); BSP_LCD_Clear(LCD_COLOR_GREEN);
HAL_Delay(1000); HAL_Delay(500);
APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with WHITE...........\r\n"); APP_LOG(TS_OFF,VLEVEL_L,"\r\n Clear with WHITE...........\r\n");
BSP_LCD_Clear(LCD_COLOR_WHITE); BSP_LCD_Clear(LCD_COLOR_WHITE);
HAL_Delay(1000); HAL_Delay(500);
BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_WHITE); BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_WHITE);
HAL_Delay(1000); HAL_Delay(500);
BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_RED); BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_RED);
HAL_Delay(1000); HAL_Delay(500);
BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_BROWN); BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_BROWN);
HAL_Delay(1000); HAL_Delay(500);
BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_LIGHTGREEN); BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_LIGHTGREEN);
HAL_Delay(1000); HAL_Delay(500);
BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_LGRAYBLUE); BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_LGRAYBLUE);
HAL_Delay(1000); HAL_Delay(500);
BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_BLUE); BSP_LCD_FillRect(0,0,ST7789V_LCD_PIXEL_WIDTH,ST7789V_LCD_PIXEL_HEIGHT,LCD_COLOR_BLUE);
#if 0 #if 0
@ -1398,7 +1424,7 @@ void BSP_LCD_Test(void)
BSP_LCD_Clear(LCD_COLOR_BLACK); BSP_LCD_Clear(LCD_COLOR_BLACK);
//BSP_LCD_DrawBitmap(0, 0, (char *)gImage_1); //BSP_LCD_DrawBitmap(0, 0, (char *)gImage_1);
HAL_Delay(3000); HAL_Delay(500);
/* /*