Hi3518EV300 OV5640 mipi YUV 调试记录

Hi3518EV300 OV5640 mipi YUV 调试记录

Hi3518EV300 mipi接口,海思得文档上说是不支持YUV数据输入的,只支持raw数据。
但是我为了偷懒,愣是把他给调通了。
如果您可以把OV5640配置成raw数据,并且在海思这边自己调ISP,可以忽略本文。

需求

我们需要开发一款摄像机,其中有一个自动对焦的拍照功能。
而海思的SDK中并不支持自动对焦的相关算法。
只是提供了一些统计值,需要自己按照统计值来开发算法。
为了偷懒,也担心自己做不好算法,所以选型的时候就算了OV5640,它本身就支持自动对焦的算法。

原理

1.原理很简单,就是Hi3518EV300通过mipi接口和OV5640进行对接。原理图很简单
Hi3518EV300 OV5640 mipi YUV 调试记录_第1张图片
2.配置管脚复用
把复用的管脚,配置成您需要的。同时把和sensor相关的pwdn和reset的gpio配置好
在目录ReleaseDoc\zh\00.hardware\chip\Hi3518EV300下,有一个excel文档,专门讲管脚的
根据这个文档来配置。
这个是我的配置Hi3518EV300 OV5640 mipi YUV 调试记录_第2张图片
3.和sensor有关的修改
由于海思的SDK不直接支持这一款sensor,所以使用sampe code 的时候,和sensor相关的地方都需要修改。这里不贴代码了
4.sensor的初始化。
mipi yuv的初始化,OV原厂提供,正常来说直接写I2C就可以了。
Hi3518EV300 OV5640 mipi YUV 调试记录_第3张图片
可以就有关OV5640的相关文档,初始化的代码和博主切磋,水平有限,讨论提高哈。

踩坑

1.海思的文档很多,需要找到对应的知识点不容易
寄存器文档
mpp文档
mipi文档
mpp FAQ
这几个文档,我是看来看去的
2.根据海思的建议配置以后,绿屏,效果是这样的
Hi3518EV300 OV5640 mipi YUV 调试记录_第4张图片

3.绿屏以后,没有怀疑海思的配置,找OV的配置,但是不管怎么修改OV的配置都解决问题
按照OV的datasheet,改过YUV的序列,改过clk,改过isp,OV直接发送color bar,都没有效果
4.继续怀疑海思的配置
把这几个配置翻过来覆过去的看,改,但是木有效果
这里贴的配置是正确的,根据mpp FAQ的文档做的配置。
Hi3518EV300 OV5640 mipi YUV 调试记录_第5张图片
Hi3518EV300 OV5640 mipi YUV 调试记录_第6张图片
Hi3518EV300 OV5640 mipi YUV 调试记录_第7张图片
4.最大的坑是,海思的文档上说,3518EV300 mipi 接口不支持直接的YUV数据进来
只支持raw数据进来
Hi3518EV300 OV5640 mipi YUV 调试记录_第8张图片
5.OV的初始化,手上只有YUV格式的,raw格式自己配置不了
尝试着自己去把OV配置成raw的,但是OV说,如果配置成raw,那自动对焦也没有了。
6.在海思端抓图
计划是在vi和vpss端都抓图看看,OV过来的数据对了没
sdk的sample code,默认VI和vpss都是在线的,在线模式不能抓图
强制改成离线模式,但是离线模式下,VI不能抓YUV数据
所以只能抓vpss的图,抓出来的,就是绿色的图
7.没有办法,只能怀疑是海思的问题
正常来说OV的配置应该是没有问题的,所以搞来搞去还是怀疑海思的问题。
把mipi和viproc的寄存器dump给海思的fae看,fae反馈需要和原厂沟通

解决办法

原厂告诉改两个寄存器
改了以后果然搞定了,至于为什么要这么改,原厂没说。。。
把pt_offset0的低8位改成0
把pt_offset1的低8位改成8
在这里插入图片描述
Hi3518EV300 OV5640 mipi YUV 调试记录_第9张图片

你可能感兴趣的:(海思,嵌入式,图像处理,linux,交叉编译)