查看: 2476|回复: 5

[原创] LPC55S69物趣系列之②:15分钟调通OV7670摄像头

[复制链接]
  • TA的每日心情
    奋斗
    2022-3-11 00:40
  • 签到天数: 272 天

    [LV.8]以坛为家I

    9

    主题

    334

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    1547
    最后登录
    2022-7-12
    发表于 2020-10-1 20:18:06 | 显示全部楼层 |阅读模式
    本帖最后由 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。

    物趣系列之二.jpg

            本次使用的是OV7670摄像头,很常见的一个模块,如下图。模块自带一个可变焦距的镜头,逆时针旋转拉近,顺时针旋转拉远。摄像头牵扯的基础知识有点多,说实话本人也是第一次搞,前前后后用了三个整天,肝出这么个结果来。以下是福利时间,本贴15分钟包上手。要是没学会,多半是跟OV7670不投缘,多肝几天就会了。
    OV7670摄像头.jpg

            首先是摄像头相关的基础介绍。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的初始化截图。
    引脚初始化.JPG

            这个配置工具似乎有点Bug,我的引脚都是默认输出低电平的,Config自动生成代码,出现了两个高电平。这块浪费了我一个小时的时间。我使用的这个SDK,外部中断的驱动名为PINT,猜测是Pin Interrupt的意思。注意它这个风格,中断处理函数要注册回调函数来用,这个是真·回调函数了,如下图。
    PINT.JPG
            函数的外部声明extern void OV7670_Vsync(pint_pin_int_t pintr ,uint32_t pmatch_status);已经在/board/peripherals.h中自动生成了,非常贴心!
    pint2.JPG
            驱动还没有整理好,部分寄存器参数也没有完全理解,就这么放出来不负责任,待我整理好了会在本贴更新。
            最后出一个最新的成果展示,小猫识别!敬请期待物趣系列之三-物体识别!国庆快乐!
    cat.JPG
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-3-11 00:40
  • 签到天数: 272 天

    [LV.8]以坛为家I

    9

    主题

    334

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    1547
    最后登录
    2022-7-12
     楼主| 发表于 2020-10-10 22:58:30 | 显示全部楼层

    过两天还会上传一个小视频,请关注
    该会员没有填写今日想说内容.
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-3-11 00:40
  • 签到天数: 272 天

    [LV.8]以坛为家I

    9

    主题

    334

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    1547
    最后登录
    2022-7-12
     楼主| 发表于 2020-10-9 20:30:09 | 显示全部楼层
    系统调试基本完成,照片为LPC55S69EVK+OV7670+ESP8266的人脸识别。
    thingfun.JPG
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-2 08:40
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    97

    主题

    836

    帖子

    7

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    3975
    最后登录
    2024-4-16
    发表于 2020-10-9 20:52:41 | 显示全部楼层
    wow! Cool!
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-3-11 00:40
  • 签到天数: 272 天

    [LV.8]以坛为家I

    9

    主题

    334

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    1547
    最后登录
    2022-7-12
     楼主| 发表于 2020-10-10 21:16:55 | 显示全部楼层
    物趣系列第一期3帖已更完。视频后两天上传。帖子传送方式如下:

    LPC55S69物趣系列之①:8分钟上手ST7735串口屏
    传送:https://www.nxpic.org.cn/module/forum/thread-620945-1-1.html
    LPC55S69物趣系列之②:15分钟调通OV7670
    传送:https://www.nxpic.org.cn/module/forum/thread-621071-1-1.html
    LPC55S69物趣系列之③:多物体识别!
    传送:https://www.nxpic.org.cn/module/forum/thread-621091-1-1.html

    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:32
  • 签到天数: 1279 天

    [LV.10]以坛为家III

    21

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13244
    最后登录
    2024-4-26
    发表于 2020-11-8 11:52:27 | 显示全部楼层
    学习了!
    跟着日天混 ,三天饱九顿!
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-27 09:03 , Processed in 0.132693 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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