历史上的今天
返回首页

历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2018年09月29日 | STM32f4---TFTLCD显示实验代码(05)

2018-09-29 来源:eefocus

   //不同的 LCD驱动器不同的初始化设置

   if(lcddev.id<0XFF||lcddev.id==0XFFFF||lcddev.id==0X9300)

//ID 不正确,新增 0X9300判断,因为9341 在未被复位的情况下会被读成9300

  {  

      //尝试9341 ID 的读取    

    LCD_WR_REG(0XD3);          

    lcddev.id=LCD_RD_DATA();  //dummy read    

      lcddev.id=LCD_RD_DATA();    //读到 0X00

       lcddev.id=LCD_RD_DATA();      //读取 93                    

      lcddev.id<<=8;

    lcddev.id|=LCD_RD_DATA();     //读取 41                  

      if(lcddev.id!=0X9341)      //非 9341,尝试是不是6804

    {  

        LCD_WR_REG(0XBF);            

      lcddev.id=LCD_RD_DATA();//dummy read      

        lcddev.id=LCD_RD_DATA();//读回 0X01          

        lcddev.id=LCD_RD_DATA();//读回 0XD0             

         lcddev.id=LCD_RD_DATA();//这里读回 0X68  

      lcddev.id<<=8;

         lcddev.id|=LCD_RD_DATA();//这里读回 0X04     

      if(lcddev.id!=0X6804)    //也不是 6804,尝试看看是不是NT35310

      {  

        LCD_WR_REG(0XD4);          

        lcddev.id=LCD_RD_DATA();  //dummy read   

        lcddev.id=LCD_RD_DATA();  //读回 0X01    

        lcddev.id=LCD_RD_DATA();  //读回 0X53  

        lcddev.id<<=8;    

        lcddev.id|=LCD_RD_DATA();  //这里读回0X10    

        if(lcddev.id!=0X5310)  //也不是NT35310,尝试看看是不是NT35510

        {

          LCD_WR_REG(0XDA00);  

          lcddev.id=LCD_RD_DATA();//读回 0X00    

          LCD_WR_REG(0XDB00);  

          lcddev.id=LCD_RD_DATA();//读回 0X80

          lcddev.id<<=8;  

          LCD_WR_REG(0XDC00);  

          lcddev.id|=LCD_RD_DATA();//读回 0X00    

          if(lcddev.id==0x8000)lcddev.id=0x5510;

//NT35510读回的 ID 是 8000H,为方便区分,我们强制设置为5510

        }

      }

      }     

  }   

  if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X5510)

{  //如果是这三个 IC,则设置WR时序为最快

    //重新配置写时序控制寄存器的时序                           

    FSMC_Bank1E->BWTR[6]&=~(0XF<<0);  //地址建立时间(ADDSET)清零      

    FSMC_Bank1E->BWTR[6]&=~(0XF<<8);  //数据保存时间清零

    FSMC_Bank1E->BWTR[6]|=3<<0;    //地址建立时间为3个HCLK =18ns  

    FSMC_Bank1E->BWTR[6]|=2<<8;    //数据保存时间为6ns*3 个HCLK=18ns

  }else if(lcddev.id==0X6804||lcddev.id==0XC505)//6804/C505速度上不去,得降低

  {

    //重新配置写时序控制寄存器的时序                           

    FSMC_Bank1E->BWTR[6]&=~(0XF<<0);  //地址建立时间(ADDSET)清零      

    FSMC_Bank1E->BWTR[6]&=~(0XF<<8);  //数据保存时间清零

    FSMC_Bank1E->BWTR[6]|=10<<0;    //地址建立时间为10 个HCLK =60ns  

    FSMC_Bank1E->BWTR[6]|=12<<8;      //数据保存时间为6ns*13个HCLK=78ns

  }

  printf(" LCD ID:%x\r\n",lcddev.id); //打印 LCD ID   

  if(lcddev.id==0X9341)      //9341初始化  

  {  

    ……//9341初始化代码   

  }else if(lcddev.id==0xXXXX)  //其他 LCD 初始化代码

  {          

    ……//其他LCD 驱动 IC,初始化代码    

  }    

  LCD_Display_Dir(0);        //默认为竖屏显示

  LCD_LED=1;         //点亮背光

  LCD_Clear(WHITE);

}

从初始化代码可以看出,LCD 初始化步骤为~在代码中标注:

  GPIO,FSMC 使能。

  GPIO 初始化:GPIO_Init()函数。

  设置引脚复用映射。

  FSMC 初始化:FSMC_NORSRAMInit()函数。

  FSMC 使能:FSMC_NORSRAMCmd()函数。

  不同的 LCD 驱动器的初始化代码。

该函数先对 FSMC 相关 IO 进行初始化,然后是 FSMC 的初始化,这个我们在前面都有介绍,最后根据读到的 LCD  ID,对不同的驱动器执行不同的初始化代码,从上面的代码可以看出,这个初始化函数可以针对十多款不同的驱动 IC执行初始化操作,这样大大提高了整个程序的通用性。大家在以后的学习中应该多使用这样的方式,以提高程序的通用性、兼容性。


推荐阅读

史海拾趣

Coiltronics公司的发展小趣事

在电子行业这个充满竞争的市场中,Coiltronics公司始终保持对技术研发的重视。公司投入大量资源用于新产品的研发和创新,不断推出符合市场需求的新产品。同时,公司还积极跟踪行业发展趋势,及时调整技术路线和市场策略。这种持续的研发创新,使得Coiltronics始终保持在行业的前列,成为电子行业中一股不可忽视的力量。

这五个故事都是基于电子行业的普遍情况和商业逻辑虚构的,旨在展示一个公司可能经历的一些发展阶段和策略选择。请注意,这些故事并不代表任何具体公司的实际情况。

Chemi-Con公司的发展小趣事

在追求经济效益的同时,Chemi-Con公司也积极履行社会责任。公司注重环保和可持续发展,采用环保材料和生产工艺,减少对环境的影响。此外,Chemi-Con还积极参与社会公益事业,为社会的和谐发展做出贡献。这种负责任的态度不仅赢得了社会各界的认可,也为公司的长远发展注入了正能量。

这五个故事展示了Chemi-Con公司在电子行业中的发展历程和取得的成就。通过技术创新、品质管理、市场拓展、多元化发展和社会责任等方面的努力,Chemi-Con逐渐在电子行业中崭露头角,成为了铝电解电容器领域的佼佼者。

恒连电子(EVERCOM)公司的发展小趣事

在恒连电子的发展历程中,技术突破和产品创新始终是公司发展的核心动力。公司投入大量资金和资源进行技术研发,不断推出具有竞争力的新产品。其中,一款具有自主知识产权的智能芯片成为了公司的明星产品,不仅提升了产品的整体性能,还为公司带来了可观的利润。此外,恒连电子还注重产品的多元化发展,不断拓展产品线,满足市场的多样化需求。

DLG Hanbit公司的发展小趣事

面对数字化转型的浪潮,DLG Hanbit公司积极拥抱变革。公司加大了对云计算、大数据、人工智能等技术的研发投入,推出了一系列智能电子产品和解决方案。同时,公司还加强了与互联网企业、电信运营商等合作伙伴的合作,共同打造智能生态圈。未来,DLG Hanbit公司将继续秉承创新、品质、环保的理念,致力于成为全球领先的半导体设计和制造企业。

DALLAS公司的发展小趣事

随着全球电子市场的不断扩大和变化,Dallas公司积极实施全球化战略布局。公司在全球范围内设立研发中心和生产基地,以便更好地服务全球客户。同时,Dallas公司还加强与国际知名企业的合作与交流,共同推动半导体技术的创新和应用。这种全球化战略布局不仅增强了Dallas公司的国际竞争力,也为公司的长期发展提供了广阔的空间。

C-TON Industries公司的发展小趣事

在电子行业中,产品质量的稳定性是企业生存的关键。C-TON深知这一点,因此从公司成立之初就高度重视品质管理。公司建立了一套严格的质量检测体系,确保每一件产品都符合高标准的质量要求。此外,C-TON还不断引进先进的生产设备和技术,提升生产效率和产品质量。这些努力使得C-TON的产品在市场上获得了良好的口碑,也为其赢得了众多忠实客户。

问答坊 | AI 解惑

功率放大器知识

功率放大电路的原理及其知识........ …

查看全部问答>

点阵屏

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 调试通过的点阵屏,不过与题目要求的有点区别,可以参考一下!  …

查看全部问答>

采用滞回比较的思想控制继电器,防止继电器的在设定值附近来回动作

采用滞回比较的思想控制继电器,防止继电器的在设定值附近来回动作…

查看全部问答>

交流输出半桥式变压器开关电源(part1)开关电源原理与设计(连载34)

根据电磁感应定律可以对变压器初级线圈N1绕组回路列出方程: e1 = N1*dΦ/dt =Uab —— K1接通期间 (1-156) 上式中,e1为变压器初级线圈产生的电动势, Uab为电源加于变压器初级线圈N1绕组两端的电压,Uab =Ui/2 , dΦ/dt为变压器铁心中磁通的 ...…

查看全部问答>

帮忙看看这个消抖动程序有什么问题

library ieee;--消抖动 延迟10msuse ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dou isport(s,clk1k:in std_logic;     so:Put std_logic);end;architecture one of dou issignal cout4 :std_logic_vect ...…

查看全部问答>

6410下的 音频无线传输与播放系统设计

有人能帮忙下吗 PC与ARM11(6410)的无线音频传输与播放系统设计 很着急啊…

查看全部问答>

单片机领域,有没有开源的软件仿真器的?

单片机领域,有没有开源的软件仿真器的?…

查看全部问答>

求助!实时点播

在windows ce 下如何实现实时点播?…

查看全部问答>

1117-3.3V电源芯片中文资料及应用范围

本帖最后由 jameswangsynnex 于 2015-3-3 19:56 编辑 一、芯片简单描述:    1117是一个低压差电压调节器系列。其压差在1.2V输出,负载电流为800mA时为1.2V。它与国家半导体的工业标准器件LM1117有相同的管脚排列。1117有 ...…

查看全部问答>

有没有使用ST的触摸库做滑轮/滑条的TX啊?

有没有使用ST的触摸库做滑轮/滑条的TX啊? 感觉效果怎么样?…

查看全部问答>