请教OV9281摄像头在V851SE的Tinyvision板子上的移植。
-
我这边需要实现200帧以上的灰度图抓取,所以选用了OV9281摄像头。但是由于没买到引脚顺序一致的摄像头,所以自己用扩展板焊了一个,飞线确实可能影响信号完整性,正经的等长板子在打了,需要几天才能寄来。暂时先用这个测。
驱动的部分是用默认的GC2053改的,参考了Rockchip的OV9281驱动。附上DTS和驱动文件(没改完):目前/dev/video0出现了,使用camerademo也能看到I2C通讯和MIPI输出。
但是报错
[CAMERA_ERR] camera0 select timeout,end capture thread!
帧率显示为0我尝试观察了MIPI的输出,把逻辑分析仪挂到FPC连接器17,18脚,即DP0,DN0。能看到LP向HS转换时的LP01状态,所以正反应该没接错。另外通过修改传感器寄存器,可以让DP1,DN1不输出,也可以让CP和CN进入Gated clock观察到LP01。所以接线应该没有错。
我怀疑问题还是在时序上,目前寄存器配置PLL1 pix clk为800M,PLL1 sys clk为80M。所以我猜测像素时钟是80M,每lane的输出是800Mbps (初次调MIPI不一定对)。
Rockchip里对于1280x800x30fps的设置是:
#define OV9282_VTS_30_FPS 0xe48
#define OV9282_HTS_30_FPS 0x2d8
那3656(E48)*728(2D8)*30 = 79.84M,似乎和80M的时钟能对上。
只是728比800还少,不太明白为什么,但很多驱动都是用这个数。突发的数据传输每33.3ms一次,应该对应是30帧。
其中突发的传输是7.4ms,802个下降沿,应该对应800的分辨率。至于7.4ms,我实在算不出这个数据是和什么对应。进一步放大图像,这应该是每一行的传输。
空闲为14.3us,传输为8.4us。这两个数据我也没有算出对应的设置。另外摄像头卖家提供的驱动似乎来自君正,
hts 0x5b0=1456
vts 0x71c=1820
此时800个LP模式的空闲为14.56ms,占33.33ms的比例与800/1280基本一致。
但是每个LP为9.8us,后面高速数据为8.3us,这个数据我也没有算出对应的设置。这两种hts和vts设置都有camera0 select timeout错误。还烦请有经验的前辈分享一下经验和建议。
-
更新一下,
这两份教程对于驱动编写很有帮助Tina Linux Camera开发指南
https://www.cnblogs.com/weidongshan/articles/17183702.html全志Linux Tina-SDK开发完全手册
https://tina.100ask.net/SdkModule/Linux_MIPI_CSI_DevelopmentGuide-05/我的配置里没有 info->time_hs 项。加入后调为0x30,仍然不出图。但是改为0x20,就可以出图了。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号