OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2658|回复: 3

LCD没亮,请大侠相救,谢谢

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-7-20
在线时间
8 小时
发表于 2019-8-20 15:49:54 | 显示全部楼层 |阅读模式
2金钱
mcu stm32l475
LCD  ST7789H2屏80并口8bit
FSMC  A16   

代码

#define Bank1_LCD_D    ((uint32_t)0x60020000)    //  PD11   ------> FMC_A16    !!
#define Bank1_LCD_C    ((uint32_t)0x60000000)  //disp Reg ADDR

void TFT_Init(void)
{

TFT_IM1_L;//80-80-I 8Bit mode
TFT_Rst();     
  HAL_Delay(120);// WaitTime(120);                                             
TFT_WriteCmd(0x11);//gMPU_SendIndex(0x11);Sleep out
HAL_Delay(120);//WaitTime(120);        
//---------------------------------------------------------------------------------------------------//
TFT_WriteCmd(0x36);//gMPU_SendIndex(0x36);Memory Data Access Control
TFT_WriteData(0x00);//gMPU_SendData(0x00);

TFT_WriteCmd(0x3a);
TFT_WriteData(0x55);
TFT_WriteCmd(0x21);
TFT_WriteCmd(0x2a);
TFT_WriteData(0x00);
TFT_WriteData(0x00);
TFT_WriteData(0x00);
TFT_WriteData(0xef);
TFT_WriteCmd(0x2b);
TFT_WriteData(0x00);
TFT_WriteData(0x00);
TFT_WriteData(0x00);
TFT_WriteData(0xef);
//--------------------------------ST7789V Frame rate setting----------------------------------//
TFT_WriteCmd(0xb2);
TFT_WriteData(0x0c);
TFT_WriteData(0x0c);
TFT_WriteData(0x00);
TFT_WriteData(0x33);
TFT_WriteData(0x33);
TFT_WriteCmd(0xb7);
TFT_WriteData(0x35);
//---------------------------------ST7789V Power setting--------------------------------------//
TFT_WriteCmd(0xbb);
TFT_WriteData(0x1f);
TFT_WriteCmd(0xc0);
TFT_WriteData(0x2c);
TFT_WriteCmd(0xc2);
TFT_WriteData(0x01);
TFT_WriteCmd(0xc3);
TFT_WriteData(0x12);
TFT_WriteCmd(0xc4);
TFT_WriteData(0x20);
TFT_WriteCmd(0xc6);
TFT_WriteData(0x0f);
TFT_WriteCmd(0xd0);
TFT_WriteData(0xa4);
TFT_WriteData(0xa1);
//--------------------------------ST7789V gamma setting--------------------------------------//
TFT_WriteCmd(0xe0);
TFT_WriteData(0xd0);
TFT_WriteData(0x08);
TFT_WriteData(0x11);
TFT_WriteData(0x08);
TFT_WriteData(0x0c);
TFT_WriteData(0x15);
TFT_WriteData(0x39);
TFT_WriteData(0x33);
TFT_WriteData(0x50);
TFT_WriteData(0x36);
TFT_WriteData(0x13);
TFT_WriteData(0x14);
TFT_WriteData(0x29);
TFT_WriteData(0x2d);
TFT_WriteCmd(0xe1);
TFT_WriteData(0xd0);
TFT_WriteData(0x08);
TFT_WriteData(0x10);
TFT_WriteData(0x08);
TFT_WriteData(0x06);
TFT_WriteData(0x06);
TFT_WriteData(0x39);
TFT_WriteData(0x44);
TFT_WriteData(0x51);
TFT_WriteData(0x0b);
TFT_WriteData(0x16);
TFT_WriteData(0x14);
TFT_WriteData(0x2f);
TFT_WriteData(0x31);
TFT_WriteCmd(0x29);


void LCD_FMC_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* Peripheral clock enable */
  __HAL_RCC_FMC_CLK_ENABLE();
  
/* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOE_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();
  /** FMC GPIO Configuration  
  PE7   ------> FMC_D4
  PE8   ------> FMC_D5
  PE9   ------> FMC_D6
  PE10   ------> FMC_D7
  PD11   ------> FMC_A16    !!
  PD14   ------> FMC_D0
  PD15   ------> FMC_D1
  PD0   ------> FMC_D2
  PD1   ------> FMC_D3
  PD4   ------> FMC_NOE
  PD5   ------> FMC_NWE
  PD7   ------> FMC_NE1
  */
  GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10;
  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
// GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
  GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0
                          |GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_7;
  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
   GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
// GPIO_InitStruct.Alternate = GPIO_AF12_FMC;
  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  /** Other GPIO Configuration  
  PE2 -----LCD IM1     0--->80  8bit   1--->80  9bit
PE1 -----LCD FM  -->FMC_NBL
PB8      LCD_BACK ±³¹â
  */

// PE.2 IM1
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;  
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_RESET); // 0--->80  8bit

/* ÅäÖÃLCD¸´Î»¿ØÖƹܽÅRST*/
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;  
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

  /* A16*/
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;  
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

  //BACKLIGHT PIN PB8
GPIO_InitStruct.Pin = GPIO_PIN_8;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  
  GPIO_InitStruct.Pull = GPIO_PULLUP;    //ÉÏÀ  
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  
// HAL_GPIO_WritePin(GPIOE, GPIO_PIN_2, GPIO_PIN_RESET); // 0--->80  8bit
// HAL_GPIO_WritePin(GPIOD,GPIO_PIN_7,GPIO_PIN_SET);   //CS=1
//  HAL_GPIO_WritePin(GPIOD,GPIO_PIN_4,GPIO_PIN_SET);   //RD=1
//  HAL_GPIO_WritePin(GPIOD,GPIO_PIN_5,GPIO_PIN_SET);   //WR=1
// HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);   //LIGHT
  /* USER CODE END FMC_MspInit 1 */
}
/* FMC initialization function */
void LCD_FMC_Init(void)
{
   SRAM_HandleTypeDef hLcd;
   FMC_NORSRAM_TimingTypeDef FMC_ReadWriteTim;
   FMC_NORSRAM_TimingTypeDef FMC_WriteTim;
  /** Perform the SRAM1 memory initialization sequence
  */
  hLcd.Instance = FMC_NORSRAM_DEVICE;
  hLcd.Extended = FMC_NORSRAM_EXTENDED_DEVICE;
  /* hsram1.Init */
  hLcd.Init.NSBank = FMC_NORSRAM_BANK1;
  hLcd.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE;
  hLcd.Init.MemoryType = FMC_MEMORY_TYPE_SRAM;
  hLcd.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_8;
  hLcd.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE;
  hLcd.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW;
  hLcd.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS;
  hLcd.Init.WriteOperation = FMC_WRITE_OPERATION_ENABLE;
  hLcd.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE;
  hLcd.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE;
  hLcd.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE;
  hLcd.Init.WriteBurst = FMC_WRITE_BURST_DISABLE;
  hLcd.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;
// hLcd.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE;
// hLcd.Init.PageSize = FMC_PAGE_SIZE_NONE;
  /* Timing */
// /* FSMC_Bank1_NORSRAM4 configuration */
//FMC¶ÁʱÐò¿ØÖƼĴæÆ÷
FMC_ReadWriteTim.AddressSetupTime=0x07;        //µØÖ·½¨Á¢Ê±¼ä(ADDSET)Ϊ7¸öHCLK 1/80M*7=12.5ns*7=87.5ns
FMC_ReadWriteTim.AddressHoldTime=0x01;
FMC_ReadWriteTim.DataSetupTime=0x20;           //Êý¾Ý±£´æÊ±¼ä(DATAST)Ϊ30¸öHCLK =12.5*30=375ns
FMC_ReadWriteTim.AccessMode=FMC_ACCESS_MODE_A; //ģʽA
//FMCдʱÐò¿ØÖƼĴæÆ÷
FMC_WriteTim.AddressSetupTime=0x07;            //µØÖ·½¨Á¢Ê±¼ä(ADDSET)Ϊ7¸öHCLK=87.5ns
FMC_WriteTim.AddressHoldTime=0x01;
FMC_WriteTim.DataSetupTime=0x07;               //Êý¾Ý±£´æÊ±¼ä(DATAST)Ϊ5.5ns*7¸öHCLK=87.5ns
FMC_WriteTim.AccessMode=FMC_ACCESS_MODE_A;     //ģʽA

  /* ExtTiming */
  HAL_SRAM_Init(&hLcd, &FMC_ReadWriteTim,&FMC_WriteTim);
// HAL_Delay(50);
//  if (HAL_SRAM_Init(&hsram1, &Timing, NULL) != HAL_OK)
//  {
//    _Error_Handler(__FILE__, __LINE__);
//  }
}



背灯可以正常亮,8M外部晶体,主频80MHz

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-7-20
在线时间
8 小时
 楼主| 发表于 2019-8-20 15:52:54 | 显示全部楼层
对应的读写程序:
uint8_t TFT_ReadData()
{
        uint8_t value;
        value = (*(volatile uint8_t *) (Bank1_LCD_D));                /* ¶ÁÈ¡¼Ä´æÆ÷Öµ */
        return value;
}
void TFT_WriteCmd(uint8_t _ucRegAddr)
{
        *(volatile u8 *) (Bank1_LCD_C)= _ucRegAddr;
}
void TFT_WriteData(uint8_t _ucRegValue)
{       
*(volatile u8 *) (Bank1_LCD_D) = _ucRegValue;
}
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10567
金钱
10567
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-8-20 18:44:34 | 显示全部楼层
帮顶~~
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-7-20
在线时间
8 小时
 楼主| 发表于 2019-8-21 10:27:54 | 显示全部楼层
我在F1上点亮过,可是移到L475就不亮,我错过了啥?麻烦大侠释疑,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 03:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表