OpenEdv-开源电子网

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

LCDili9341能写不能读咋办?在线等答案啊 原子哥

[复制链接]

17

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
531
金钱
531
注册时间
2015-12-2
在线时间
164 小时
发表于 2015-12-2 11:30:29 | 显示全部楼层 |阅读模式
5金钱
在原子哥这里买的LCD2,8英寸的带触摸屏的。主板是别人家的最小系统核心板,STM32F103VET6的带FSMC
1.用FSMC试验全部正常。完全OK。
2.用I/O口模拟的时候,只能写命令,读不到ID。是咋回事啊。。。怎么读都读不出来,把原子哥的程序里面的增加上ID=9341.就可以正常写了。。。
直接运行的时候可以读出来41。第三次读41。第四次读也是41。第五次读也是41。把u16 LCD_RD_DATA(void)函数里面稍微改一点时序。加个延迟什么的,去掉第125行:iif(lcddev.id==0X8989)delay_us(2);//FOR 8989,???±2us  就什么都读不到了。

好奇怪。。。这可咋办。。。?原子哥求解答啊。

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

使用道具 举报

3

主题

2165

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5773
金钱
5773
注册时间
2013-11-22
在线时间
1211 小时
发表于 2015-12-2 22:50:16 | 显示全部楼层
参考下mini板的 TFT显示例程, 直接用的IO,没有用FSMC
回复

使用道具 举报

17

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
531
金钱
531
注册时间
2015-12-2
在线时间
164 小时
 楼主| 发表于 2015-12-3 08:34:39 | 显示全部楼层
回复【2楼】lycreturn:
---------------------------------
恩,我用的就是IO,没有用FSMC。mini板的例程一点都没修改。直接拿杜邦线接屏幕。可以写。读不到ID。
飞飞飞飞飞
回复

使用道具 举报

20

主题

468

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2014-2-25
在线时间
230 小时
发表于 2015-12-3 08:57:35 | 显示全部楼层
可能是某个地方时序有问题吧,你可以就看9341对应的那部分程序,对照9341数据手册看看是不是寄存器错了
回复

使用道具 举报

17

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
531
金钱
531
注册时间
2015-12-2
在线时间
164 小时
 楼主| 发表于 2015-12-3 11:42:05 | 显示全部楼层
回复【4楼】1201yuge:
---------------------------------
发现一点小问题:mini的TFT例程里面的lcd.c文件内
。。。。。
u16 LCD_RD_DATA(void)
{    
u16 t;
  GPIOB->CRL=0X88888888; //PB0-7  ????????
GPIOB->CRH=0X88888888; //PB8-15 ????????
GPIOB->ODR=0X0000;     //????????0
。。。。。。。
u16 LCD_ReadPoint(u16 x,u16 y)
{
  u16 r,g,b;
if(x>=lcddev.width||y>=lcddev.height)return 0; //??????·??§,?±??·???    
LCD_SetCursor(x,y);
if(lcddev.id==0X9341||lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X1963)LCD_WR_REG(0X2E);//9341/6804/3510/1963 ·?????GRAM????
else if(lcddev.id==0X5510)LCD_WR_REG(0X2E00); //5510 ·?????GRAM????
else LCD_WR_REG(0X22);         //????IC·?????GRAM????
GPIOB->CRL=0X88888888;  //PB0-7  ????????
GPIOB->CRH=0X88888888;  //PB8-15 ????????
GPIOB->ODR=0XFFFF;      //??????????

上面个GPIOB->ODR=0x0000;下面读点的时候就写成0xFFFF;同样是读寄存器,为什么不一样?
看说明书上说,读ID和读寄存器的时序是不一样的。可是例程里面用的是同一个函数。。。这没影响么?
飞飞飞飞飞
回复

使用道具 举报

17

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
531
金钱
531
注册时间
2015-12-2
在线时间
164 小时
 楼主| 发表于 2015-12-3 20:10:29 | 显示全部楼层
回复【5楼】wmwangzi:
---------------------------------
好吧,我自己回答这个问题。
/************************************??ID***************************************/
u16 LCD_RD_ID(void)
{    
u16 t;

  GPIOB->CRL=0X88888888; //PB0-7  ????????
GPIOB->CRH=0X88888888; //PB8-15 ????????
GPIOB->ODR=0XFFFF;     //????????0

LCD_RS_SET; //RS=1

LCD_CS_CLR; //CS=0 
LCD_RD_SET; //RD=1  ??????????45??ns
//????????(???????÷?±,?????è????2??)
LCD_RD_CLR; //RD=0 ????60??ns

opt_delay(2); //???±
t=DATAIN;   //???????÷ ????30??ns

LCD_RD_SET; //RD=1
LCD_CS_SET; //CS=1

GPIOB->CRL=0X33333333; //PB0-7  ????????
GPIOB->CRH=0X33333333; //PB8-15 ????????
GPIOB->ODR=0XFFFF;    //??????????
return t;  
}
用这个函数读ID就读出来了。。。原子哥,你的程序是不是9341不能用啊
飞飞飞飞飞
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-12-3 23:03:36 | 显示全部楼层
回复【6楼】wmwangzi:
---------------------------------
当然可以用啊.
我们例程都支持9341的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
531
金钱
531
注册时间
2015-12-2
在线时间
164 小时
 楼主| 发表于 2015-12-5 08:42:20 | 显示全部楼层
那就不知道怎么回事了。我就拿你的例程和从你那买的LCD,
把mini的试验11TFTLCD例程里面lcd.c里面第119行 GPIOB->ODR=0X0000;  
改成 GPIOB->ODR=0XFFFF;  
就好了 就能用了。
不改就读不出ID
飞飞飞飞飞
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-12-6 00:55:53 | 显示全部楼层
回复【8楼】wmwangzi:
---------------------------------
不知道你的例程是什么时候的。
老版本例程,读ID有点小问题,新版本例程都ok了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

40

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-11-4
在线时间
14 小时
发表于 2016-11-8 15:09:23 | 显示全部楼层
lycreturn 发表于 2015-12-2 22:50
参考下mini板的 TFT显示例程, 直接用的IO,没有用FSMC

IC9341成镜像显示是那一块的设置有问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 22:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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