本帖最后由 Litthins 于 2020-10-10 21:09 编辑
LPC55S69物趣系列之②:15分钟调通OV7670
物趣系列的最终目标是实现基于55S69的智能识别,猫猫狗狗之类的,能支持到多少种“物”,看具体进度。物趣系列技术路线:OV7670采集图像➡1.77寸TFT屏显示➡ESP8266上传服务器➡获取识别结果➡显示到TFT屏上。物趣系列将分三步走,
第一步,LPC55S69-EVK适配 ST7735 TFT屏,已更。 第二步,LPC55S69-EVK适配 OV7670 摄像头,把图像显示到TFT屏上。本贴! 第三步,LPC55S69-EVK适配 ESP8266 WIFI模块,上传到自家服务器,识别物体,将返回结果显示到TFT屏上。已更
整个计划三帖更完,废话不多说,第二帖参上!
无图无真相,先上一个效果图!OV7670采集图像➡LPC55S69处理➡1.77寸串口屏显示,此处图像处理指裁剪工作。图中拍摄的是mbed NXP LPC11U24。
本次使用的是OV7670摄像头,很常见的一个模块,如下图。模块自带一个可变焦距的镜头,逆时针旋转拉近,顺时针旋转拉远。摄像头牵扯的基础知识有点多,说实话本人也是第一次搞,前前后后用了三个整天,肝出这么个结果来。以下是福利时间,本贴15分钟包上手。要是没学会,多半是跟OV7670不投缘,多肝几天就会了。
首先是摄像头相关的基础介绍。OV7670使用8线并口传输数据,通信协议SCCB,据说类似I2C。淘宝店家给的驱动比较老了,又去网上找了几套驱动,对比着看,一边琢磨一边学习。摸出点门路来,现做以下总结(看完约需4分钟): 1.几套不同的驱动,大都一个路数。先写SCCB接口,清一色全是模拟的。刚说了这个SCCB类似于I2C,需要两根线。一根时钟一根数据,数据在一根线上双向走,所以需要实现改变IO方向的接口函数; 2.OV7670驱动去调用刚写好的SCCB接口,实现一个通信功能。当然两根线肯定不够,还得带上好些个外部信号线。本次使用的OV7670带FIFO,据说是因为OV7670刷太快,MCU跟不上?说实话我对这个结论持怀疑态度,欢迎大家在下面留言讨论。外部模块基本都得初始化,这个摄像头,初始化有两个部分:初始化7670、初始化FIFO。 3.初始化7670可以参考现成的寄存器配置,各家特色不太一样,注释有多有少,我找到有一家通篇全是“//锟斤拷锟矫讹拷锟斤拷锟斤拷时锟接低碉拷平”,VS Code都无法识别。这样的驱动也敢拿出来给人用,是真的牛批。 4.初始化FIFO,要理解FIFO的作用。之前说了,7670本身刷写数据好像是很快的,单片机好像跟不上,于是加个FIFO,夹在二者之间,做个缓冲。那这个FIFO是怎么工作的呢?OV7670每准备要刷一帧图像,它会通过VSYNC这个同步信号,告诉外部设备,它要刷数据了。通过单片机的中断接收这个信号,复位FIFO的写指针,且调整FIFO到可写入状态,FIFO就可以存储7670写入的数据。如何判断数据写入完毕,可以读取呢?一帧数据写完后,7670会自动写下一帧,此时第二个VSYNC信号会到达。这个信号就标志着上一帧已写完,所以此时将FIFO设置为禁止写入,再复位FIFO的读指针,通过上述的8位数据线,将数据从头至尾依次读出即可。 5.FIFO好像可以存不止一帧。之前买模块时候,店家说FIFO大,可以存好几帧呢。但是我看到的几个驱动,全是一帧就锁了往外搬的,大FIFO没用上。 6.VSYNC信号是一个正脉冲,建议使用外部中断引脚配置为上拉+上升沿触发的方法。其它方法不一定不行,这个是我试出来的。写驱动有时候就很玄学,可能是我水平不够,也可能7670驱动能力不够,下拉就花屏,很气。 7.图片刷出来糊的,啥都看不清楚,可能不是程序的问题,拧一下焦距试试,别问我为什么知道。 8.画面拖曳抖动,模糊不清?查一下寄存器,改变工作频率,频率越高刷写越快,动态画面也支持的更好。高频率也要求更好的数据传输质量,频率太高可能会出现雪花,具体情况请具体分析。
这次的例程是在上一帖的例程上增加了内容,先上一个GPIO和PINT的初始化截图。
这个配置工具似乎有点Bug,我的引脚都是默认输出低电平的,Config自动生成代码,出现了两个高电平。这块浪费了我一个小时的时间。我使用的这个SDK,外部中断的驱动名为PINT,猜测是Pin Interrupt的意思。注意它这个风格,中断处理函数要注册回调函数来用,这个是真·回调函数了,如下图。 函数的外部声明extern void OV7670_Vsync(pint_pin_int_t pintr ,uint32_t pmatch_status);已经在/board/peripherals.h中自动生成了,非常贴心! 驱动还没有整理好,部分寄存器参数也没有完全理解,就这么放出来不负责任,待我整理好了会在本贴更新。 最后出一个最新的成果展示,小猫识别!敬请期待物趣系列之三-物体识别!国庆快乐!
|