OpenEdv-开源电子网

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

新手STM32mini板TFTLCD问题求教!

[复制链接]

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-7-19
在线时间
14 小时
发表于 2017-7-24 12:58:17 | 显示全部楼层 |阅读模式
1金钱
在TFTLCD的例程中的LCD_RD_DATA(void) 函数中,有这样一段LCD_RD_CLR; //读取数据(读寄存器时,并不需要读 2 次)
if(lcddev.id==0X8989)delay_us(2);//FOR 8989,延时 2us
t=DATAIN;
LCD_RD_SET;

9341不是在RD上升沿读取数据的吗,为什么这里先读了IO口才把RD拉高的,这样不是读不到数据了吗。

求各位大神指教啊。


完整的函数体如下:
u16 LCD_RD_DATA(void)
{
u16 t;
GPIOB->CRL=0X88888888; //PB0-7 上拉输入
GPIOB->CRH=0X88888888; //PB8-15 上拉输入
GPIOB->ODR=0X0000; //全部输出 0
LCD_RS_SET;
LCD_CS_CLR;
LCD_RD_CLR; //读取数据(读寄存器时,并不需要读 2 次)
if(lcddev.id==0X8989)delay_us(2);//FOR 8989,延时 2us
t=DATAIN;
LCD_RD_SET;
LCD_CS_SET;
GPIOB->CRL=0X33333333; //PB0-7 上拉输出
GPIOB->CRH=0X33333333; //PB8-15 上拉输出
GPIOB->ODR=0XFFFF; //全部输出高
return t;
}  




最佳答案

查看完整内容[请看2#楼]

这是STM32读取9341的数据,不是9341读取STM32的数据,你对象要搞对
小菜鸡一枚
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165452
金钱
165452
注册时间
2010-12-1
在线时间
2113 小时
发表于 2017-7-24 12:58:18 | 显示全部楼层
这是STM32读取9341的数据,不是9341读取STM32的数据,你对象要搞对
回复

使用道具 举报

15

主题

338

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1269
金钱
1269
注册时间
2016-3-16
在线时间
280 小时
发表于 2017-7-25 08:38:22 | 显示全部楼层
函数没有问题,就是RD的上升沿读取数据。
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-7-19
在线时间
14 小时
 楼主| 发表于 2017-7-25 10:48:40 | 显示全部楼层
zhsyghhz 发表于 2017-7-25 08:38
函数没有问题,就是RD的上升沿读取数据。

那为什么是先读再拉高的呢读的时候并没有上升沿啊
小菜鸡一枚
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-7-19
在线时间
14 小时
 楼主| 发表于 2017-7-26 11:23:32 | 显示全部楼层
正点原子 发表于 2017-7-24 12:58
这是STM32读取9341的数据,不是9341读取STM32的数据,你对象要搞对

还是不理解9341的写入和读取不都是上升沿的吗。这里先把RD拉低,然后读取IDR的内容,然后再拉高RD。这样上升沿不是发生在单片机读取数据之后吗?怎么能读到正确的数据呢
小菜鸡一枚
回复

使用道具 举报

2

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
490
金钱
490
注册时间
2016-1-3
在线时间
66 小时
发表于 2017-7-27 11:01:40 | 显示全部楼层
看数据手册的时序图 ILI9341读时序.PNG
看中间那三个圆圈下面的话。第一个圆圈那里:在RDX的下降沿,ILI9341就已经把要发给MCU读回的数据放在总线上了,其实这个时候就可以读数据了。
第三个圆圈下面的话说的是ILI9341把总线上的数据撤走,释放总线。而这个动作是发生在RDX的上升沿之后的一段时间。
也就是说,实际上在RDX的下降沿(有一定的时延),ILI9341就已经把给MCU读回的数据发出来了。MCU读了数据之后把RDX拉高,通知ILI9341已经读回了数据,ILI9341可以释放总线了。
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-7-19
在线时间
14 小时
 楼主| 发表于 2017-7-27 11:43:22 | 显示全部楼层
淡定的H羊 发表于 2017-7-27 11:01
看数据手册的时序图
看中间那三个圆圈下面的话。第一个圆圈那里:在RDX的下降沿,ILI9341就已经把要发给MC ...

懂了,谢谢!
小菜鸡一枚
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-18 12:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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