野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 25190|回复: 4

初学LCD有几个问题还请大家不吝赐教~~

[复制链接]
发表于 2013-5-24 19:52:23 | 显示全部楼层 |阅读模式
1、在LCD_GPIO_Config(void)函数中最后有
    /* tft control gpio init */  
//    GPIO_SetBits(GPIOD, GPIO_Pin_13);   // 背光打开 ----for 旧lcd 板
GPIO_ResetBits(GPIOD, GPIO_Pin_13);   // 修改---for新LCD板
   
GPIO_SetBits(GPIOE, GPIO_Pin_1);   
    GPIO_ResetBits(GPIOD, GPIO_Pin_3);
    GPIO_SetBits(GPIOD, GPIO_Pin_6);
不是没有用到PD.3和PD.6吗?为什么还要写这两句?
2、FSMC_NORSRAMTimingInitTypeDef结构体的时序设置说是根据datatsheet设置的,但是我真找不到在哪里-。-麻烦有人知道的话直接说一下页数,感激不尽的啊~~
3、#define LCD_ILI9341_CMD(index)       LCD_WR_REG(index)
#define Bank1_LCD_D    ((u32)0x60020000)       //Disp Data ADDR
/*选定LCD指定寄存器*/
#define LCD_WR_REG(index)    ((*(__IO u16 *) (Bank1_LCD_C)) = ((u16)index))
为什么这里只要A16为高,NE1为低就可以直接写入数据了??
WR和RD不用管吗????

麻烦各位了,,真心没弄懂
回复

使用道具 举报

 楼主| 发表于 2013-5-24 23:48:02 | 显示全部楼层
u16 LCD_RD_data(void)
{
        u16 R=0, G=0, B=0 ;
        LCD_ILI9341_CMD(0x2e);                   /*LCD GRAM READ COMMAND--DATASHEET PAGE116*/
        R =(*(__IO u16 *) (Bank1_LCD_D));  /*FIRST READ OUT DUMMY DATA*/
        R =(*(__IO u16 *) (Bank1_LCD_D));  /*READ OUT RED DATA  */
        B =(*(__IO u16 *) (Bank1_LCD_D));  /*READ OUT BLACK DATA*/
        G =(*(__IO u16 *) (Bank1_LCD_D));  /*READ OUT GREEN DATA*/
        
    return (((R>>11)<<11) | ((G>>10)<<5) | (B>>11)) ;

}
再补问一个..
这里读了四次,后面三次读取出来的数据一样的吗?如果一样的话B>>11不就等于R吗?
那返回的实际上就是RGR咯?
但如果是不同的话,R B G的读取顺序是根据什么确定的???
谢谢~
回复 支持 反对

使用道具 举报

发表于 2013-5-25 09:06:21 | 显示全部楼层
1.你用的可能是旧版程序,新版中的代码已经没有使用pd3和pd6,估计是那时候写得不太完善写多的。新版的可以在这里下载:http://www.firebbs.cn/forum.php? ... &extra=page%3D1
2.本例程的FSMC是一个NOR FLASH接口,它驱动液晶的基本原理是把LCD的8080时序使用NOR FLASH时序进行模拟。datasheet的8080时序在《ILI9341.pdf》 的28页。关于FSMC接口的在 《STM32参考手册》
FSMC章节,NOR模式小节(我的版本应该跟你的不一样,所以不提供页数了)
3.A16?不知道你的A16是指什么。FSMC配置好之后,直接向stm32的内存写数据,FSMC接口就会自动把这些内存数据通过接口发送给LCD。

补充:你看的教程是《零死角玩转STM32》版本的吗?这个教程把原理说得比较清楚了,请再仔细阅读吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-25 15:51:26 | 显示全部楼层
flyleaf 发表于 2013-5-25 09:06
1.你用的可能是旧版程序,新版中的代码已经没有使用pd3和pd6,估计是那时候写得不太完善写多的。新版的可以 ...

新版的下载过来也是有GPIO_ResetBits(GPIOD, GPIO_Pin_3);
                 GPIO_SetBits(GPIOD, GPIO_Pin_6);这两句的。

A16就是* PD4-FSMC_NOE  CD-RD
       * PD5-FSMC_NWE  CD-WR
       * PD7-FSMC_NE1  CD-CS
       * PD11-FSMC_A16 CD-DC
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-28 13:25:11 | 显示全部楼层
求解答啊~~
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-8 13:48 , Processed in 0.025315 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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