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

[复制链接]
 楼主| 飛饵 发表于 2020-6-24 00:53 | 显示全部楼层 |阅读模式
本帖最后由 飛饵 于 2020-6-24 20:37 编辑

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

用模拟SPI,配置代码:
  1. /*DCLK,PA4*/
  2.         GPIO_initstructure.GPIO_Pin = GPIO_Pin_4;
  3.         GPIO_initstructure.GPIO_Mode = GPIO_Mode_OUT;
  4.         GPIO_initstructure.GPIO_OType = GPIO_OType_PP;
  5. //        GPIO_initstructure.GPIO_PuPd = GPIO_PuPd_UP;
  6.         GPIO_initstructure.GPIO_Speed = GPIO_Speed_100MHz;        
  7.         GPIO_Init(GPIOA,&GPIO_initstructure);
  8.         
  9.         /*CS,PA3*/
  10.         GPIO_initstructure.GPIO_Pin = GPIO_Pin_3;
  11.         GPIO_initstructure.GPIO_Mode = GPIO_Mode_OUT;
  12.         GPIO_initstructure.GPIO_OType = GPIO_OType_PP;
  13. //        GPIO_initstructure.GPIO_PuPd = GPIO_PuPd_UP;
  14.         GPIO_initstructure.GPIO_Speed = GPIO_Speed_100MHz;        
  15.         GPIO_Init(GPIOA,&GPIO_initstructure);

  16.         
  17.         /*DIN,PA7*/
  18.         GPIO_initstructure.GPIO_Pin = GPIO_Pin_7;
  19.         GPIO_initstructure.GPIO_Mode = GPIO_Mode_OUT;
  20.         GPIO_initstructure.GPIO_OType = GPIO_OType_PP;
  21. //        GPIO_initstructure.GPIO_PuPd = GPIO_PuPd_UP;
  22.         GPIO_initstructure.GPIO_Speed = GPIO_Speed_100MHz;        
  23.         GPIO_Init(GPIOA,&GPIO_initstructure);

  24.         
  25.         /*DOUT,PA6;PEN,PA5*/
  26.         GPIO_initstructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
  27.         GPIO_initstructure.GPIO_Mode = GPIO_Mode_IN;
  28.         GPIO_initstructure.GPIO_OType = GPIO_OType_PP;
  29.         GPIO_initstructure.GPIO_PuPd = GPIO_PuPd_UP;
  30.         GPIO_initstructure.GPIO_Speed = GPIO_Speed_100MHz;        
  31.         GPIO_Init(GPIOA,&GPIO_initstructure);


 楼主| 飛饵 发表于 2020-6-24 20:54 | 显示全部楼层
解决了,原来是模拟spi的速度太高了,时序代码里加上延时就行。
不过,有没有办法不加阻塞延时达到降速的目的???
幸福小强 发表于 2020-6-24 20:59 | 显示全部楼层
是的,103速度比较慢
幸福小强 发表于 2020-6-24 20:59 | 显示全部楼层
407比103速度快多了。延时如果用库函数实现,应该就没这个问题了。

评论

试过改GPIO的速度也没用  发表于 2020-6-24 21:19
用库函数怎么实现延时?  发表于 2020-6-24 21:19
幸福小强 发表于 2020-6-24 21:21 | 显示全部楼层
库函数有个time的,应该是可以的
zchong 发表于 2020-6-25 10:03 来自手机 | 显示全部楼层
spi外设存在什么问题,怎么不用呢?

评论

51上移植过来的,能用就不用硬件spi了,而且又不是大量传数据那种  发表于 2020-6-25 12:25
wakayi 发表于 2020-7-10 14:46 | 显示全部楼层
请问编译器如何开启优化?
wowu 发表于 2020-7-10 14:46 | 显示全部楼层
你的问题好奇怪
xiaoqizi 发表于 2020-7-10 14:47 | 显示全部楼层
不优化的呢

评论

开了优化就更提高执行效率,不开优化恰好正常。f4速度太快,spi速度不能太快的。  发表于 2020-7-15 16:24
木木guainv 发表于 2020-7-10 14:47 | 显示全部楼层
帮楼主顶一下
磨砂 发表于 2020-7-10 14:47 | 显示全部楼层
恭喜楼主解决问题
磨砂 发表于 2020-7-10 14:47 | 显示全部楼层
恭喜楼主解决问题
 楼主| 飛饵 发表于 2020-7-15 16:21 | 显示全部楼层
wakayi 发表于 2020-7-10 14:46
请问编译器如何开启优化?

keil里是在“目标选项”里C/C++的optimization里,就是那个魔术棒的图标
香水城 发表于 2020-7-15 19:30 | 显示全部楼层
飛饵 发表于 2020-6-24 20:54
解决了,原来是模拟spi的速度太高了,时序代码里加上延时就行。
不过,有没有办法不加阻塞延时达到降速的目 ...

说到底是因为主频快了 导致通信速率及时序变了,
移植过程中容易忽视的地方。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

117

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部