OpenEdv-开源电子网

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

FSMC驱动TFTLCD IC9806 点不亮,求助。

[复制链接]

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2020-10-28
在线时间
13 小时
发表于 2021-2-25 13:46:20 | 显示全部楼层 |阅读模式
1金钱
用的F429TFTLCD(MUC屏)实验例程,和原子哥的链接方式只有两处不一样,1,我用的A16(PD11)作为RS。2,RST我接在PG9,开机后高1ms低10ms高120ms。
#define LCD_BASE        ((u32)(0x60000000 | 0x0001FFFE))

另外初始化代码是厂家给的,我后面就加了个清屏。LCD_Clear(0xF800)   红
用的还是原子哥的初始化FMC,没有修改。只是把引脚配置哪里RS从PD13改为PD11。
        GPIO_InitTypeDef GPIO_Initure;
        FMC_NORSRAM_TimingTypeDef FMC_ReadWriteTim;
        FMC_NORSRAM_TimingTypeDef FMC_WriteTim;

        SRAM_Handler.Instance=FMC_NORSRAM_DEVICE;               
        SRAM_Handler.Extended=FMC_NORSRAM_EXTENDED_DEVICE;   

        SRAM_Handler.Init.NSBank=FMC_NORSRAM_BANK1;     //使用NE1
        SRAM_Handler.Init.DataAddressMux=FMC_DATA_ADDRESS_MUX_DISABLE; //地址/数据线不复用
        SRAM_Handler.Init.MemoryType=FMC_MEMORY_TYPE_SRAM;   //SRAM
        SRAM_Handler.Init.MemoryDataWidth=FMC_NORSRAM_MEM_BUS_WIDTH_16; //16位数据宽度
        SRAM_Handler.Init.BurstAccessMode=FMC_BURST_ACCESS_MODE_DISABLE; //是否使能突发访问,仅对同步突发存储器有效,此处未用到
        SRAM_Handler.Init.WaitSignalPolarity=FMC_WAIT_SIGNAL_POLARITY_LOW;//等待信号的极性,仅在突发模式访问下有用
        SRAM_Handler.Init.WaitSignalActive=FMC_WAIT_TIMING_BEFORE_WS;   //存储器是在等待周期之前的一个时钟周期还是等待周期期间使能NWAIT
        SRAM_Handler.Init.WriteOperation=FMC_WRITE_OPERATION_ENABLE;    //存储器写使能
        SRAM_Handler.Init.WaitSignal=FMC_WAIT_SIGNAL_DISABLE;           //等待使能位,此处未用到
        SRAM_Handler.Init.ExtendedMode=FMC_EXTENDED_MODE_ENABLE;        //读写使用不同的时序
        SRAM_Handler.Init.AsynchronousWait=FMC_ASYNCHRONOUS_WAIT_DISABLE;//是否使能同步传输模式下的等待信号,此处未用到
        SRAM_Handler.Init.WriteBurst=FMC_WRITE_BURST_DISABLE;           //禁止突发写
        SRAM_Handler.Init.ContinuousClock=FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;

        //FMC读时序控制寄存器
        FMC_ReadWriteTim.AddressSetupTime=0x0F;        //地址建立时间(ADDSET)为15个HCLK 1/180M*15=5.5ns*15=82.5ns
        FMC_ReadWriteTim.AddressHoldTime=0x00;
        FMC_ReadWriteTim.DataSetupTime=0x46;           //数据保存时间(DATAST)为70个HCLK        =5.5*70=385ns
        FMC_ReadWriteTim.AccessMode=FMC_ACCESS_MODE_A; //模式A
        //FMC写时序控制寄存器
        FMC_WriteTim.AddressSetupTime=0x0F;            //地址建立时间(ADDSET)为15个HCLK=82.5ns
        FMC_WriteTim.AddressHoldTime=0x00;
        FMC_WriteTim.DataSetupTime=0x0F;               //数据保存时间(DATAST)为5.5ns*15个HCLK=82.5ns
        FMC_WriteTim.AccessMode=FMC_ACCESS_MODE_A;     //模式A
        HAL_SRAM_Init(&SRAM_Handler,&FMC_ReadWriteTim,&FMC_WriteTim);               
        delay_ms(50); // delay 50 ms


我写了一句while(1)LCD_WriteReg(0xF000,0x0055);  用示波器测RS有波形,WR有波,CS持续低,RD持续高。其他DB0-15在没有连错的情况下有的有信号,有的没有。
综上所述,还驱动不起来会是什么原因?CS任何时候都是低正常吗?

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

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2020-10-28
在线时间
13 小时
 楼主| 发表于 2021-2-25 13:53:57 | 显示全部楼层
void HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram)
{       
        GPIO_InitTypeDef GPIO_Initure;
        GPIO_InitTypeDef GPIO_InitStruct;
        __HAL_RCC_FMC_CLK_ENABLE();                                //使能FMC时钟
        __HAL_RCC_GPIOD_CLK_ENABLE();                        //使能GPIOD时钟
        __HAL_RCC_GPIOE_CLK_ENABLE();                        //使能GPIOE时钟
        __HAL_RCC_GPIOF_CLK_ENABLE();
       
        //初始化PD0,1,4,5,7,8,9,10,13,14,15
        GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_7|GPIO_PIN_8|\
                     GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_14|GPIO_PIN_15;
        GPIO_Initure.Mode=GPIO_MODE_AF_PP;                 //推挽复用
        GPIO_Initure.Pull=GPIO_PULLUP;                        //上拉
        GPIO_Initure.Speed=GPIO_SPEED_HIGH;                //高速
        GPIO_Initure.Alternate=GPIO_AF12_FMC;        //复用为FMC
        HAL_GPIO_Init(GPIOD,&GPIO_Initure);     //初始化
       
        //初始化PE7,8,9,10,11,12,13,14,15
        GPIO_Initure.Pin=GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|\
                     GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
        HAL_GPIO_Init(GPIOE,&GPIO_Initure);
}
引脚配置,就把PD11改为PD13了。
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2020-10-28
在线时间
13 小时
 楼主| 发表于 2021-2-25 13:54:54 | 显示全部楼层
GPIO_InitTypeDef GPIO_InitStructure;
        //PG9 RST
        /*开启LED相关的GPIO外设时钟*/
         __HAL_RCC_GPIOG_CLK_ENABLE();
        GPIO_Initure.Pin=GPIO_PIN_9; //9
        GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
        GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
        GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
        HAL_GPIO_Init(GPIOG,&GPIO_Initure);
        HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_SET);        //置1
        delay_ms(1);
        HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_RESET);
        delay_ms(10);
        HAL_GPIO_WritePin(GPIOG,GPIO_PIN_9,GPIO_PIN_SET);
        delay_ms(120);

        LCD_WR_REG(0xFF); // EXTC Command Set enable register
LCD_WR_DATA(0xFF);
LCD_WR_DATA(0x98);
LCD_WR_DATA(0x06);

LCD_WR_REG(0xBA); // SPI Interface Setting
LCD_WR_DATA(0x60);

LCD_WR_REG(0xBC); // GIP 1
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x10);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x0B);
LCD_WR_DATA(0x11);
LCD_WR_DATA(0x32);
LCD_WR_DATA(0x10);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x50);
LCD_WR_DATA(0x52);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x40);

LCD_WR_REG(0xBD); // GIP 2
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x23);
LCD_WR_DATA(0x45);
LCD_WR_DATA(0x67);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0x23);
LCD_WR_DATA(0x45);
LCD_WR_DATA(0x67);

LCD_WR_REG(0xBE); // GIP 3
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x21);
LCD_WR_DATA(0xAB);
LCD_WR_DATA(0x60);
LCD_WR_DATA(0x22);
LCD_WR_DATA(0x22);
LCD_WR_DATA(0x22);
LCD_WR_DATA(0x22);
LCD_WR_DATA(0x22);

LCD_WR_REG(0xC7); // VCOM Control
LCD_WR_DATA(0x30);

LCD_WR_REG(0xED); // EN_volt_reg
LCD_WR_DATA(0x7F);
LCD_WR_DATA(0x0F);
LCD_WR_DATA(0x00);

LCD_WR_REG(0xC0); // Power Control 1
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x0B);
LCD_WR_DATA(0x0C);//0A  VGH VGL

LCD_WR_REG(0xFD);//External Power Selection Set
LCD_WR_DATA(0x0A);
LCD_WR_DATA(0x00);

LCD_WR_REG(0xFC); // LVGL
LCD_WR_DATA(0x08);

LCD_WR_REG(0xDF); // Engineering Setting
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x20);

LCD_WR_REG(0xF3); // DVDD Voltage Setting
LCD_WR_DATA(0x74);

LCD_WR_REG(0xB4); // Display Inversion Control
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);

LCD_WR_REG(0xB5); //Blanking Porch Control
LCD_WR_DATA(0x08);
LCD_WR_DATA(0x15);

LCD_WR_REG(0xF7); // 480x854
LCD_WR_DATA(0x81);

LCD_WR_REG(0xB1); // Frame Rate Control
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x13);
LCD_WR_DATA(0x13);

LCD_WR_REG(0xF2); //Panel Timing Control
LCD_WR_DATA(0x80);
LCD_WR_DATA(0x04);
LCD_WR_DATA(0x40);
LCD_WR_DATA(0x28);

LCD_WR_REG(0xC1); //Power Control 2
LCD_WR_DATA(0x17);
LCD_WR_DATA(0x71);//VGMP
LCD_WR_DATA(0x71); //VGMN
          
LCD_WR_REG(0xE0);        //P_Gamma
LCD_WR_DATA(0x00); //P1
LCD_WR_DATA(0x13); //P2
LCD_WR_DATA(0x1A); //P3
LCD_WR_DATA(0x0C); //P4
LCD_WR_DATA(0x0E); //P5
LCD_WR_DATA(0x0B); //P6
LCD_WR_DATA(0x07); //P7
LCD_WR_DATA(0x05); //P8
LCD_WR_DATA(0x05); //P9
LCD_WR_DATA(0x0A); //P10
LCD_WR_DATA(0x0F); //P11
LCD_WR_DATA(0x0F); //P12
LCD_WR_DATA(0x0E); //P13
LCD_WR_DATA(0x1C); //P14
LCD_WR_DATA(0x16); //P15
LCD_WR_DATA(0x00); //P16

LCD_WR_REG(0xE1);        //N_Gamma
LCD_WR_DATA(0x00); //P1
LCD_WR_DATA(0x13); //P2
LCD_WR_DATA(0x1A); //P3
LCD_WR_DATA(0x0C); //P4
LCD_WR_DATA(0x0E); //P5
LCD_WR_DATA(0x0B); //P6
LCD_WR_DATA(0x07); //P7
LCD_WR_DATA(0x05); //P8
LCD_WR_DATA(0x05); //P9
LCD_WR_DATA(0x0A); //P10
LCD_WR_DATA(0x0F); //P11
LCD_WR_DATA(0x0F); //P12
LCD_WR_DATA(0x0E); //P13
LCD_WR_DATA(0x1C); //P14
LCD_WR_DATA(0x16); //P15
LCD_WR_DATA(0x00); //P16

LCD_WR_REG(0x3A);
LCD_WR_DATA(0x55); //55-16BIT,66-18BIT,77-24BIT

LCD_WR_REG(0x36); //Memory Access Control
LCD_WR_DATA(0x00); //01-180
//*****************
LCD_WR_REG(0x2A); //480
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x01);
LCD_WR_DATA(0xdf);

LCD_WR_REG(0x2B); //854
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x00);
LCD_WR_DATA(0x03);
LCD_WR_DATA(0x55);
//*****************************

LCD_WR_REG(0x11);
delay_ms(120);
LCD_WR_REG(0x29);
delay_ms(25);
LCD_WR_REG(0x2C);
                LCD_Clear(0xF800);

RST高低高及厂家给的初始化,最后清屏。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-13 23:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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