打印
[STM32F4]

XPT2046触摸屏在F407上出现奇怪的问题

[复制链接]
860|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
飛饵|  楼主 | 2020-6-24 00:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 飛饵 于 2020-6-24 20:37 编辑

这屏幕在F103的板子上完全没问题。
换到F407上,问题一堆,之前不是这样的。
1、首先编译器开了O1级以上优化的话,触摸一次后,笔中断一直为高电平,复位没用,只能拔掉电源再上电,读出的AD值只有1025。如果开O0优化就没上述问题。
2、O0优化下,触摸屏横向纵向都有一片区域的AD值一直为2048


用模拟SPI,配置代码:
 /*DCLK,PA4*/
        GPIO_initstructure.GPIO_Pin = GPIO_Pin_4;
        GPIO_initstructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_initstructure.GPIO_OType = GPIO_OType_PP;
//        GPIO_initstructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_initstructure.GPIO_Speed = GPIO_Speed_100MHz;        
        GPIO_Init(GPIOA,&GPIO_initstructure);
        
        /*CS,PA3*/
        GPIO_initstructure.GPIO_Pin = GPIO_Pin_3;
        GPIO_initstructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_initstructure.GPIO_OType = GPIO_OType_PP;
//        GPIO_initstructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_initstructure.GPIO_Speed = GPIO_Speed_100MHz;        
        GPIO_Init(GPIOA,&GPIO_initstructure);

        
        /*DIN,PA7*/
        GPIO_initstructure.GPIO_Pin = GPIO_Pin_7;
        GPIO_initstructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_initstructure.GPIO_OType = GPIO_OType_PP;
//        GPIO_initstructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_initstructure.GPIO_Speed = GPIO_Speed_100MHz;        
        GPIO_Init(GPIOA,&GPIO_initstructure);

        
        /*DOUT,PA6;PEN,PA5*/
        GPIO_initstructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
        GPIO_initstructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_initstructure.GPIO_OType = GPIO_OType_PP;
        GPIO_initstructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_initstructure.GPIO_Speed = GPIO_Speed_100MHz;        
        GPIO_Init(GPIOA,&GPIO_initstructure);


使用特权

评论回复
来自 2楼
飛饵|  楼主 | 2020-6-24 20:54 | 只看该作者
解决了,原来是模拟spi的速度太高了,时序代码里加上延时就行。
不过,有没有办法不加阻塞延时达到降速的目的???

使用特权

评论回复
板凳
幸福小强| | 2020-6-24 20:59 | 只看该作者
是的,103速度比较慢

使用特权

评论回复
地板
幸福小强| | 2020-6-24 20:59 | 只看该作者
407比103速度快多了。延时如果用库函数实现,应该就没这个问题了。

使用特权

评论回复
评论
飛饵 2020-6-24 21:19 回复TA
试过改GPIO的速度也没用 
飛饵 2020-6-24 21:19 回复TA
用库函数怎么实现延时? 
5
幸福小强| | 2020-6-24 21:21 | 只看该作者
库函数有个time的,应该是可以的

使用特权

评论回复
6
zchong| | 2020-6-25 10:03 | 只看该作者
spi外设存在什么问题,怎么不用呢?

使用特权

评论回复
评论
飛饵 2020-6-25 12:25 回复TA
51上移植过来的,能用就不用硬件spi了,而且又不是大量传数据那种 
7
wakayi| | 2020-7-10 14:46 | 只看该作者
请问编译器如何开启优化?

使用特权

评论回复
8
wowu| | 2020-7-10 14:46 | 只看该作者
你的问题好奇怪

使用特权

评论回复
9
xiaoqizi| | 2020-7-10 14:47 | 只看该作者
不优化的呢

使用特权

评论回复
评论
飛饵 2020-7-15 16:24 回复TA
开了优化就更提高执行效率,不开优化恰好正常。f4速度太快,spi速度不能太快的。 
10
木木guainv| | 2020-7-10 14:47 | 只看该作者
帮楼主顶一下

使用特权

评论回复
11
磨砂| | 2020-7-10 14:47 | 只看该作者
恭喜楼主解决问题

使用特权

评论回复
12
磨砂| | 2020-7-10 14:47 | 只看该作者
恭喜楼主解决问题

使用特权

评论回复
13
飛饵|  楼主 | 2020-7-15 16:21 | 只看该作者
wakayi 发表于 2020-7-10 14:46
请问编译器如何开启优化?

keil里是在“目标选项”里C/C++的optimization里,就是那个魔术棒的图标

使用特权

评论回复
14
香水城| | 2020-7-15 19:30 | 只看该作者
飛饵 发表于 2020-6-24 20:54
解决了,原来是模拟spi的速度太高了,时序代码里加上延时就行。
不过,有没有办法不加阻塞延时达到降速的目 ...

说到底是因为主频快了 导致通信速率及时序变了,
移植过程中容易忽视的地方。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

117

帖子

1

粉丝