标签:it | |
www.ourdev/bbs/bbs_content_all.jsp?bbs_sn=3539898
直接用STM32接的摄像头,没有其他什么外加电路,stm32从摄像头读到数据,然后直接送往TFT(ILI9320芯片)
效果和速度:图像调整成了160x120,8帧每秒,320x240的时候大概是2帧
图像质量有待调整,刚实验成功中,激动中,所以先发裸照
完全使用中断的方式接收摄像头的数据
代码没有整理。
效果和速度:图像调整成了160x120,8帧每秒,320x240的时候大概是2帧
图像质量有待调整,刚实验成功中,激动中,所以先发裸照
完全使用中断的方式接收摄像头的数据
代码没有整理。
程序-IARourdev_473545.rar(文件大小:469K) (原文件名:stm32_Demo_ili9325.rar)
没有原理图,我也是直接搭出来的
基本上摄像头的接法是这样子的:
3.3v 串一个0.7v压降的二极管,接到摄像头的电源,我随便拿了一个1N4148,也能用。测到电压为2.6v这样子
摄像头的
HREF (行同步)--- PG3
VSYNC (帧同步) --- PG5
PWDN --- 接地
PCLK --- PG4
SIO_D --- PG7
SIO_C --- PG6
XCK1(系统时钟 --- PA8
D0~D7 --- PA0~PA7
RESET 接51类型的阻容复位电路
液晶屏:内部芯片为ILI9320,稍微改下就可以变成ILI9325
PF6~10
#define nCS GPIO_Pin_8
#define RS GPIO_Pin_7
#define nWR GPIO_Pin_10
#define nRD GPIO_Pin_9
#define nReset GPIO_Pin_6
数据口:PD0~PD15
一共有40来根线,呼呼
-------------------------------------------
没有原理图,我也是直接搭出来的
基本上摄像头的接法是这样子的:
摄像头的
HREF (行同步)--- PG3
VSYNC (帧同步) --- PG5
PWDN --- 接地
PCLK --- PG4
SIO_D --- PG7
SIO_C --- PG6
XCK1(系统时钟 --- PA8
D0~D7 --- PA0~PA7
RESET 接51类型的阻容复位电路
基本上摄像头的接法是这样子的:
摄像头的
HREF (行同步)--- PG3
VSYNC (帧同步) --- PG5
PWDN --- 接地
PCLK --- PG4
SIO_D --- PG7
SIO_C --- PG6
XCK1(系统时钟 --- PA8
D0~D7 --- PA0~PA7
RESET 接51类型的阻容复位电路
液晶屏:内部芯片为ILI9320,稍微改下就可以变成ILI9325
PF6~10
#define nCS GPIO_Pin_8
#define RS GPIO_Pin_7
#define nWR GPIO_Pin_10
#define nRD GPIO_Pin_9
#define nReset GPIO_Pin_6
数据口:PD0~PD15
------------------------------------
调试SCCB有几个是我认为比较重要的,
一是一定要给摄像头系统时钟,你可以用stm32输出一个8M的时钟接到XCK1,太快了不行,我觉得SCCB工作的时候也是需要系统时钟提供的。
一是一定要给摄像头系统时钟,你可以用stm32输出一个8M的时钟接到XCK1,太快了不行,我觉得SCCB工作的时候也是需要系统时钟提供的。
二是SCCB的data脚要上拉,在STM32io口设置的时候,要设置成上拉。设置成输入的时候上拉,我测试过,不上拉就不成功。
三是有个延时函数,时间不能够太短,还要小心你的延时代码不要被编译器优化掉了。
SCCB的代码我没有仔细看,是直接拿 wangguanfu 的AVR的代码来改的,只改了非诚勿扰于川绿野io口操作的部分,直接就成功了。
请直接看代码。
要有数据输出的话,首先要提供时钟,一定要提供时钟。我觉得不用配置也能有数据输出,没有实测,你就先把SCCB调好了再进行下一步吧。
----------------------------------------------
三是有个延时函数,时间不能够太短,还要小心你的延时代码不要被编译器优化掉了。
SCCB的代码我没有仔细看,是直接拿 wangguanfu 的AVR的代码来改的,只改了非诚勿扰于川绿野io口操作的部分,直接就成功了。
请直接看代码。
要有数据输出的话,首先要提供时钟,一定要提供时钟。我觉得不用配置也能有数据输出,没有实测,你就先把SCCB调好了再进行下一步吧。
----------------------------------------------
直接写企业所有制性质BSRR会比GPIO_SetBits()快很多倍,在要求速度的情况下,我喜欢直接写陈羽凡个人资料BSRR
----------------------------------------------
我把它再初始化成了普通IO口了,然后由自己控制时钟。
它已经没有时钟输出了,除非你自己去控制io口输出时钟。
我就是想自己输出时钟,所以在sccb配置好了以后,把它改成了普通io
我就是想自己输出时钟,所以在sccb配置好了以后,把它改成了普通io
-----------------------------------------------
我专门把stm32f103的时钟频率从72M调到了16M,再自拍,除了图像反应变慢,其他没有区别
-----------------------------------------------
张根硕在rain演唱会我已经把stm32f103的时钟频率从72M调到了16M了,图像还是可以采集正常,效果没法比较,因为我也还没有调节好
C8051f020的22M的晶振会比16M的stm32f103差很远么,这个我也不知道,
我的感觉是,频率慢一点也能够采集,当然是cpu越快越好了
stm32f103在16M的时候,我的程序已经差不多是10us采集一个点了,100k的频率这样子。
C8051f020的22M的晶振会比16M的stm32f103差很远么,这个我也不知道,
我的感觉是,频率慢一点也能够采集,当然是cpu越快越好了
stm32f103在16M的时候,我的程序已经差不多是10us采集一个点了,100k的频率这样子。
-------------------------------------------------
对啊,就是一个PCLK读一次数据,所以速度就是局限于stm32的中断响应速度,我现在是没有缓冲,读一个点数据,写一个点到屏
-------------------------------------------------
首先是是给摄像头提供时钟,然后通过SCCB初始化摄像头,然后依据时序每次pclk读一次数据,然后把数据组合成你想要的rgb数据。
同时必须处理的是行同步信号和帧同步信号,这直接关系到你所采的数据的x,y坐标,还有每个点的rgb数据的前后组合顺序。
ie主页被篡改具体看数据手册的时序图。最好你能够有逻辑分析仪,分析摄像头的数据输出,知道到底有没有数据。逻辑分析仪armok也有卖了,几百块。
用示波器也可以看一下信号。
先把SCCB调试好先吧,读取ov7660的id数据,能够读取和写入SCCB的话,基本上就完全成功了,剩下的都是些小事情。
同时必须处理的是行同步信号和帧同步信号,这直接关系到你所采的数据的x,y坐标,还有每个点的rgb数据的前后组合顺序。
ie主页被篡改具体看数据手册的时序图。最好你能够有逻辑分析仪,分析摄像头的数据输出,知道到底有没有数据。逻辑分析仪armok也有卖了,几百块。
用示波器也可以看一下信号。
先把SCCB调试好先吧,读取ov7660的id数据,能够读取和写入SCCB的话,基本上就完全成功了,剩下的都是些小事情。
发布评论