OpenEdv-开源电子网

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

【记录开源】使用STM32F4探索板 DCMI接口对MT9M111取像 FSMC接口到7寸LCD

[复制链接]

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
发表于 2013-7-13 15:30:47 | 显示全部楼层 |阅读模式

恰巧空出时间,就开源个玩具吧。

某一天:
    准备东西开始玩摄像头,ST官方有F407的OV7670程序。使用DCMI接口,接受数据之后直接DMA到LCD GRAM上。
恰巧手上有F407 discovery 和原子的7寸电容液晶屏,先调通LCD吧,所以先把板子焊下,使用FSMC调通对LCD的控制,
RS我记得好像是用A[0],有点久忘记了,各位以程序为准。
用的是F407,HCLK有点高,适当加大读写时序的保持时间。


各位听我解释,这个只是初期测试做的板子,飞成这样我自己都不好意思拿出来。。 求别喷  后面测试完成会做块漂亮的。
某一天+2:
   慢慢LCD写完之后使用F4的RNG测试、调、测调  测调  测调  测调   写时序OK。读时序我还没测哦各位= =
LCD章节完成。

那么接下来就要开始懂MT9M111这个摄像头了,之前在wang工那里看到他便宜啊镜头也霸气而且有130W就买下了,开始看datasheet  试用。
期间多亏wang工和xxn59的提醒,特此感谢。



这期间过了一段时间,具体我也忘了,包括参考ST例程xxn59例程、写程序、调程序。终于在某一天+N天完成。

从分辨率设置到避开干扰。

到最后出一点点图像还出现偏红现象。

                确诊为硬件问题,线不好。。
                   当然还有一些等等的细节问题。
某一天+N+2:
    我重新做了一块板子,程序修复一些问题。终于有点成功了。

这次焊的板子还好点= =


(这次我尽力了,焊得还不好你们就喷吧喷吧。。)
基本上完成了,开源给大家玩玩,各位可以基于这个什么玩玩图形算法啊,捕捉什么什么的。。

效果视频:




2013年7月完成的:

另外一个。







STM32F4 MT9M111备.zip

12.65 MB, 下载次数: 4608

一直努力就很好。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-7-13 15:33:20 | 显示全部楼层
SF我的,顺便问下原子。我的7寸屏触摸撞裂了。。能不能修T_T,
一直努力就很好。
回复 支持 反对

使用道具 举报

27

主题

774

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1473
金钱
1473
注册时间
2013-4-12
在线时间
77 小时
发表于 2013-7-13 17:25:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-7-13 18:58:16 | 显示全部楼层
没有GPU,不幸福。
业余程序玩家。
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-7-13 19:05:27 | 显示全部楼层
回复【4楼】ofourme:
---------------------------------
你上哪找GPU。。
一直努力就很好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-13 19:18:00 | 显示全部楼层
回复【2楼】qq942266575:
---------------------------------
可以上淘宝,随便买个7寸屏触摸屏,贴上去就可以了.
比较常见的是:台电P76Ti的触摸屏,换上去就好使了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-13 19:18:12 | 显示全部楼层
话说F4的速度还真可以哦.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-7-13 19:22:20 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
我去联系旺旺。
一直努力就很好。
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-7-13 19:23:56 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
那是啦,那个是用MCO的,我现在摄像头加上外部晶振27M。主频160..更酷
一直努力就很好。
回复 支持 反对

使用道具 举报

3

主题

47

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
264
金钱
264
注册时间
2012-11-29
在线时间
5 小时
发表于 2013-7-16 01:12:26 | 显示全部楼层

 赞楼主~

说不定很快就有机会吃到楼主请的饭了

what if the lights go out.
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-7-16 22:13:44 | 显示全部楼层
回复【10楼】 xxn59 :
---------------------------------

一直努力就很好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-25 17:59:42 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2013-7-26
在线时间
0 小时
发表于 2013-7-26 09:25:28 | 显示全部楼层
请问407驱动7寸液晶的程序怎么写的,是在配套的STMF103的驱动液晶的程序的基础上改的吗,能不能发给我一份呢,我改不来,先谢了,邮箱1028182509@qq.com
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-7-26 10:51:33 | 显示全部楼层
改、改、改。。改不来。~~[擦汗]  用库 FSMC,改不来就接着看书。原子的LCD FSMC章节有详细的介绍。
一直努力就很好。
回复 支持 反对

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2012-5-29
在线时间
16 小时
发表于 2013-7-26 18:23:31 | 显示全部楼层
强大,顶一个
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-8-31 10:30:07 | 显示全部楼层
回复【楼主位】qq942266575:
---------------------------------
这强。。。 问哈楼主,STM32F103的程序移植到407  要注意哪些内容啊??? 我现在用的STM32F407IGT6,也想驱动7寸液晶,给点建议白???
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-8-31 10:32:47 | 显示全部楼层
回复【14楼】qq942266575:
改、改、改。。改不来。~~[擦汗]  用库 FSMC,改不来就接着看书。原子的LCD FSMC章节有详细的介绍。
---------------------------------
用库 FSMC,,,能不能详细说下呀?   “原子的LCD FSMC章节” 是  STM32开发指南--第十八章 TFTLCD显示实验  吗???
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-8-31 19:20:16 | 显示全部楼层
回复【17楼】yh12345:
---------------------------------
是的哦。。
一直努力就很好。
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-9-4 10:54:40 | 显示全部楼层
回复【13楼】晓龙:
---------------------------------
在工程里面就有包含了。
一直努力就很好。
回复 支持 反对

使用道具 举报

6

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2011-11-13
在线时间
13 小时
发表于 2013-9-4 13:07:28 | 显示全部楼层
不错,正愁32比较慢呢?想换407,
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2013-9-4 14:32:39 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
可是还真有点贵,那价格不是平民能接受的啊~~~
虽然带的190多k的ram,但还是不够砸一页显存啊~~
话说,最近ST貌相新出了一些M3系列的大容量产品
什么STM32F103VFT6啊之类的,ram都砸96k了。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-4 21:10:49 | 显示全部楼层
回复【19楼】qq942266575:
---------------------------------
显示解决了  触摸还差点事
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-9-6 19:59:12 | 显示全部楼层
回复【22楼】yh12345:
---------------------------------
RA8875集成了触摸接口。
一直努力就很好。
回复 支持 反对

使用道具 举报

45

主题

108

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2013-5-22
在线时间
13 小时
发表于 2013-9-7 09:40:16 | 显示全部楼层
我有一颗MT9P031可以用吗
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2013-9-7 12:05:04 | 显示全部楼层
实验室很高端啊
https://github.com/roxma
回复 支持 反对

使用道具 举报

0

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2013-8-25
在线时间
12 小时
发表于 2013-9-7 13:37:32 | 显示全部楼层
酷  顶一个
————————
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-9-7 19:51:57 | 显示全部楼层
回复【25楼】Pony279:
---------------------------------
呵呵、
一直努力就很好。
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-9-7 19:52:51 | 显示全部楼层
回复【24楼】wangyuyuwang:
---------------------------------
这个你要研究下了。你这个是电子快门的,程序要修改下
一直努力就很好。
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-9-7 19:53:25 | 显示全部楼层
回复【26楼】电子发射:
---------------------------------
谢谢。
一直努力就很好。
回复 支持 反对

使用道具 举报

头像被屏蔽

52

主题

440

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1237
金钱
1237
注册时间
2013-1-9
在线时间
151 小时
发表于 2013-9-7 21:14:02 | 显示全部楼层
手痒了,想弄一块回来墨迹墨迹.
回复 支持 反对

使用道具 举报

1

主题

73

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2013-9-8
在线时间
2 小时
发表于 2013-9-8 00:52:54 | 显示全部楼层
办公条件还不错啊
回复 支持 反对

使用道具 举报

头像被屏蔽

52

主题

440

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1237
金钱
1237
注册时间
2013-1-9
在线时间
151 小时
发表于 2013-9-8 13:46:21 | 显示全部楼层
手贱,买了一块...周一到货...看到好东西就想也有一块,感觉自己越过越回去了.
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-9-9 15:56:26 | 显示全部楼层
回复【31楼】谷子木:
---------------------------------
回复【32楼】hexboot:
---------------------------------
呵呵。~
一直努力就很好。
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-10 16:33:22 | 显示全部楼层
回复【23楼】qq942266575:
---------------------------------
根据7寸液晶给的那个例程中 知道旗舰版信息传输是用的I2C总线协议,STM32F407IGT6用的SPI协议, 我要移植程序的时候是用哪种协议啊,SPI???
回复 支持 反对

使用道具 举报

6

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2013-7-25
在线时间
0 小时
发表于 2013-9-10 21:58:43 | 显示全部楼层
回复【楼主位】qq942266575:
---------------------------------

大侠  请问你知不知道在串口实验里面那个使用 printf  函数是怎么回事啊,程序如下面所示: 
#if 1 
#pragma import(__use_no_semihosting)              
//标准库需要的支持函数                  
struct __FILE  
{  
int handle;  

};  

FILE __stdout;        
//定义_sys_exit()以避免使用半主机模式     
_sys_exit(int x)  
{  
x = x;  
}  
//重定义fputc函数  
int fputc(int ch, FILE *f) 
{       
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕    
    USART1->DR = (u8) ch;       
return ch; 

#endif  


这一段是真心看不懂啊,好纠结。我不知道它怎么会和printf扯上关系的?  看起来又不是调用printf啊。 
还有那个半主机模式是个什么东西啊? 还有那个fputc函数,头都晕了。谢谢啦。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-10 22:27:07 | 显示全部楼层
回复【34楼】yh12345:
---------------------------------
用iic
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-17 22:13:35 | 显示全部楼层
回复【36楼】正点原子:
---------------------------------
程序移植后,下进去了 ,但是执行不了 能是什么原因啊???求解释
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-17 22:19:57 | 显示全部楼层
先检查硬件设置,如果没问题,那就检查软件是不是有问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-17 22:38:31 | 显示全部楼层
回复【38楼】正点原子:
---------------------------------
就是添加了TouchPanel 这个文件后就执行不了,去掉就能执行
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-17 22:40:30 | 显示全部楼层
那估计你问题就在TouchPanel里面了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-17 22:53:50 | 显示全部楼层
回复【40楼】正点原子:
---------------------------------
/*********************************************************************************************************
*
* File             : TouchPanel.c
* Hardware Environment: 
* Build Environment: RealView MDK-ARM  Version: 4.20
* Version          : V1.0
* By               : 
*
*                                  (c) Copyright 2005-2011, WaveShare
*                                       http://www.waveshare.net
*                                          All Rights Reserved
*
*********************************************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "TouchPanel/TouchPanel.h"
#include "TouchPanel/config.h"
#include "LCD/LCD.h"
#include "ctiic.h"


/* rivate variables ---------------------------------------------------------*/

/* rivate define ------------------------------------------------------------*/
//电容触摸屏控制器
_m_ctp_dev ctp_dev=
{
GT811_Init,
GT811_Scan,//获得触摸点坐标,并保存
0,
0,
0,
0,
};  

//触摸屏配置参数(触摸屏厂家提供)
const u8 GTP_CFG_DATA[]=
{
    0x12,0x10,0x0E,0x0C,0x0A,0x08,0x06,0x04,0x02,0x00,0x05,0x55,0x15,0x55,0x25,0x55,
    0x35,0x55,0x45,0x55,0x55,0x55,0x65,0x55,0x75,0x55,0x85,0x55,0x95,0x55,0xA5,0x55,
    0xB5,0x55,0xC5,0x55,0xD5,0x55,0xE5,0x55,0xF5,0x55,0x1B,0x03,0x00,0x00,0x00,0x13,
    0x13,0x13,0x0F,0x0F,0x0A,0x50,0x30,0x05,0x03,0x64,0x05,0xe0,0x01,0x20,0x03,0x00,
    0x00,0x32,0x2C,0x34,0x2E,0x00,0x00,0x04,0x14,0x22,0x04,0x00,0x00,0x00,0x00,0x00,
    0x20,0x14,0xEC,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x30,
    0x25,0x28,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 
};  

//触摸屏中断处理
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line5) != RESET)                 //没有这句话和下句话时,会一直运行中断程序
{
EXTI_ClearITPendingBit(EXTI_Line5);   

ctp_dev.tpsta|=0X80;//标记有有效触摸
}

//向GT811写入一次数据
//reg:起始寄存器地址
//buf:数据缓缓存区
//len:写数据长度
//返回值:0,成功;1,失败.
u8 GT811_WR_Reg(u16 reg,u8 *buf,u8 len)
{
u8 i;
u8 ret=0;
CT_IIC_Start();
  CT_IIC_Send_Byte(CT_CMD_WR);    //发送写命令   
CT_IIC_Wait_Ack();
CT_IIC_Send_Byte(reg>>8);    //发送高8位地址
CT_IIC_Wait_Ack();          
CT_IIC_Send_Byte(reg&0XFF);    //发送低8位地址
CT_IIC_Wait_Ack();  
for(i=0;i<len;i++)
{    
     CT_IIC_Send_Byte(buf);   //发数据
ret=CT_IIC_Wait_Ack();
if(ret)break;  
}
    CT_IIC_Stop(); //产生一个停止条件     
return ret; 
}
//从GT811读出一次数据
//reg:起始寄存器地址
//buf:数据缓缓存区
//len:读数据长度   
void GT811_RD_Reg(u16 reg,u8 *buf,u8 len)
{
u8 i;
  CT_IIC_Start();
  CT_IIC_Send_Byte(CT_CMD_WR);    //发送写命令   
CT_IIC_Wait_Ack();
  CT_IIC_Send_Byte(reg>>8);    //发送高8位地址
CT_IIC_Wait_Ack();          
  CT_IIC_Send_Byte(reg&0XFF);    //发送低8位地址
CT_IIC_Wait_Ack();  
  CT_IIC_Start();        
CT_IIC_Send_Byte(CT_CMD_RD);    //发送读命令    
CT_IIC_Wait_Ack();    
for(i=0;i<len;i++)
{    
     buf=CT_IIC_Read_Byte(i==(len-1)?0:1); //发数据   

    CT_IIC_Stop();//产生一个停止条件     
}
//向GT811发送配置参数
//buf:配置参数表指针
//cfg_len:配置参数长度
//返回值:0,成功;1,失败.
u8 GT811_Send_Cfg(u8 * buf,u16 cfg_len)
{
u8 ret=0;
u8 retry=0;
for(retry=0;retry<5;retry++)
{
ret=GT811_WR_Reg(CT_CONFIG_REG,buf,cfg_len);
if(ret==0)break;
delay_ms(10);  
}
return ret;
}
//GT811唤醒
void GT811_Wakeup_Sleep(void)
{
TP_CS(0); //复位
delay_ms(10);
  TP_CS(1); //释放复位     
delay_ms(100);
}     
//GT811初始化
//返回值:初始化结果
//0,初始化成功;
//1,发送配置参数错误
//2,版本错误
u8 GT811_Init(void)
{
  u16 version=0;
u8 temp;
  GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOC,ENABLE);
  /* TP_CS  */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
    /*TP_IRQ */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN ;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
   TP_CS(1);

//  Ex_NVIC_Config(GPIO_F,10,FTIR);  //下降沿触发    
// MY_NVIC_Init(3,3,EXTI15_10_IRQChannel,2); //抢占3,子优先级3,组2  
    EXIT_TouchPanel_Config();
NVIC_TouchPanel_Config();

  CT_IIC_Init(); //电容触摸屏部分,IIC初始化
GT811_Wakeup_Sleep();  //唤醒GT811 
   GT811_RD_Reg(0X717,&temp,1); //读取版本高八位
version=(u16)temp<<8; 
GT811_RD_Reg(0X718,&temp,1); //读取版本低八位  
version|=temp;
printf("version:%x\r\n",version); 
if(version==0X2010) //版本正确,发送配置参数

temp=GT811_Send_Cfg((u8*)GTP_CFG_DATA,sizeof(GTP_CFG_DATA));//发送配置参数
}else temp=2; //版本错误
return temp;   
}    
//扫描GT811
//得到的结果保存在ctp_dev结构体内      
void GT811_Scan(void)
{    
u8 buf[34];//一次读取34字节
if((ctp_dev.tpsta&0X80)==0)return; //有有效触摸,则读取数据,否则直接退出
   GT811_RD_Reg(CT_READ_XY_REG,buf,34); //一次读取34个字节
ctp_dev.tpsta=buf[0]&0X1F; //触摸点标记位,同时清除有效触摸标记
#if CT_EXCHG_XY==1 //调转XY
ctp_dev.y[0]=480-(((u16)buf[2]<<8)+buf[3]); //触摸点0坐标
ctp_dev.x[0]=((u16)buf[4]<<8)+buf[5];   
ctp_dev.ppr[0]=buf[6];  
ctp_dev.y[1]=480-(((u16)buf[7]<<8)+buf[8]); //触摸点1坐标
ctp_dev.x[1]=((u16)buf[9]<<8)+buf[10];   
ctp_dev.ppr[1]=buf[11];
ctp_dev.y[2]=480-(((u16)buf[12]<<8)+buf[13]);//触摸点2坐标
ctp_dev.x[2]=((u16)buf[14]<<8)+buf[15];   
ctp_dev.ppr[2]=buf[16];    
ctp_dev.y[3]=480-(((u16)buf[17]<<8)+buf[24]);//触摸点3坐标
ctp_dev.x[3]=((u16)buf[25]<<8)+buf[26];   
ctp_dev.ppr[3]=buf[27];
ctp_dev.y[4]=480-(((u16)buf[28]<<8)+buf[29]);//触摸点4坐标
ctp_dev.x[4]=((u16)buf[30]<<8)+buf[31];   
ctp_dev.ppr[4]=buf[32];
#else 
ctp_dev.y[0]=((u16)buf[2]<<8)+buf[3]; //触摸点0坐标
ctp_dev.x[0]=800-(((u16)buf[4]<<8)+buf[5]);   
ctp_dev.ppr[0]=buf[6];  
ctp_dev.y[1]=((u16)buf[7]<<8)+buf[8]; //触摸点1坐标
ctp_dev.x[1]=800-(((u16)buf[9]<<8)+buf[10]);   
ctp_dev.ppr[1]=buf[11];
ctp_dev.y[2]=((u16)buf[12]<<8)+buf[13]; //触摸点2坐标
ctp_dev.x[2]=800-(((u16)buf[14]<<8)+buf[15]);   
ctp_dev.ppr[2]=buf[16];    
ctp_dev.y[3]=((u16)buf[17]<<8)+buf[24]; //触摸点3坐标
ctp_dev.x[3]=800-(((u16)buf[25]<<8)+buf[26]);   
ctp_dev.ppr[3]=buf[27];
ctp_dev.y[4]=((u16)buf[28]<<8)+buf[29]; //触摸点4坐标
ctp_dev.x[4]=800-(((u16)buf[30]<<8)+buf[31]);   
ctp_dev.ppr[4]=buf[32];
#endif       
}

/*************************************************
Function:    void EXIT_Config(void);  
Description: 触摸屏外部中断配置函数
       Input:       无
Output:      无                            
*************************************************/
void EXIT_TouchPanel_Config(void)
{
EXTI_InitTypeDef EXTI_InitStructure;

/*使能外部中断复用时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

/*映射GPIOA的Pin0至EXTILine0*/
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC,GPIO_PinSource5);  
EXTI_ClearITPendingBit(EXTI_Line5);        //清外部线路0中断
EXTI_InitStructure.EXTI_Line = EXTI_Line5;      //线路0
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    //触发模式为中断
//EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//;   //下降沿触发
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//   //上升沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;      //开外部中断
EXTI_Init(&EXTI_InitStructure);

}

/*************************************************
Function:    void NVIC_TouchPanel_Config(void)  
Description: 触摸屏嵌套中断断配置函数       
Input:       无
Output:      无                            
*************************************************/
void NVIC_TouchPanel_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);        //嵌套分组为组0
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;       //中断通道为通道0
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢断优先级为0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;    //响应优先级为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;     //开中断
NVIC_Init(&NVIC_InitStructure);

}

/*********************************************************************************************************
      END FILE
*********************************************************************************************************/>
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-17 22:55:04 | 显示全部楼层
回复【40楼】正点原子:
---------------------------------
原子大哥 能不能 帮我看下呀 是有哪儿定义不对吗 还是怎么???
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-18 10:47:38 | 显示全部楼层
回复【42楼】yh12345:
---------------------------------
仿真找下问题吧...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-9-18 11:25:25 | 显示全部楼层
回复【43楼】正点原子:
---------------------------------
咦,LS这是在干嘛?移植触摸屏么?
一直努力就很好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-18 12:29:23 | 显示全部楼层
是啊
回复 支持 反对

使用道具 举报

51

主题

1455

帖子

3

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2613
金钱
2613
注册时间
2011-1-25
在线时间
176 小时
 楼主| 发表于 2013-9-18 13:02:43 | 显示全部楼层
回复【45楼】正点原子:
---------------------------------
回复【42楼】yh12345:
---------------------------------
呵呵,不好意思啊,触摸屏我没移。。
一直努力就很好。
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-19 10:40:00 | 显示全部楼层
回复【43楼】正点原子:
---------------------------------
CT_IIC_Init(); //电容触摸屏部分,IIC初始化 
GT811_Wakeup_Sleep();  //唤醒GT811  
   GT811_RD_Reg(0X717,&temp,1); //读取版本高八位 
version=(u16)temp<<8;  
GT811_RD_Reg(0X718,&temp,1); //读取版本低八位   
version|=temp; 


读取版本的时候,读不正确  version没有值,而且还会触发中断,这怎么回事
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-19 10:41:46 | 显示全部楼层
回复【46楼】qq942266575:
---------------------------------
我基础差,移植起来感觉挺费劲的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-19 10:47:05 | 显示全部楼层
回复【47楼】yh12345:
---------------------------------
能不能直接用我们的开发板测试下?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2013-8-30
在线时间
0 小时
发表于 2013-9-19 10:55:35 | 显示全部楼层
回复【49楼】正点原子:
---------------------------------
用旗舰版的测试过了 没有没问题 能读正确 能实现五点触摸
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 12:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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