v3s 荔枝派zero开发板 添加 ov2640 摄像头(一)

1、准备

储备知识

1)DVP是并口传输,速度较慢,传输的带宽低,使用需要PCLK\sensor输出时钟、MCLK(XCLK)\外部时钟输入、VSYNC\场同步、HSYNC\行同步、D[0:11]\并口数据——可以是8/10/12bit数据位数大小。DVP摄像头电源和MIPI一样。

2)熟悉linux 摄像头架构,了解数据流向以及原理,需要用到的模块等。

硬件:

荔枝派 zero 带底座 版本 主控v3s

官方淘宝店买的 ov2640 dvp接口摄像头

一般CMOS摄像头模块的接口分为两类:
(1).控制类(I2C总线)
– 初始化:对摄像头模块进行相应的初始化操作
,让摄像头模块能够正常的输出摄像头数据
– 控制: 设置亮度、旋转、缩放等等的操作

(2).数据传输类
与LCD的接口完全一样。

这里是控制类

软件

buildroot 2023.05-30

kernel 版本 5.10.2

v3s的csi驱动(soc自身的)

ov2640驱动(设备驱动)

步骤

  • 配置环境 
  • 修改设备树
  • 修改内核配置
  • 重新构建一个buildroot文件系统,增加需要使用的工具等内容
  • 测试

2、硬件分析

因为购买的是dvp接口的摄像头,所以查看原理图可知,j5 部分就是dock板子上的dvp接口,另外一个是j8 部分 的mipi接口(这里不展开),dvp接口真多!

 24个排线

分别是D6、5、7、4、8、9、10、11,pclk,gnd ,mclk,DOVDD,DVDD,hsync,pwdn,vsync,reset,sck,avdd,sda,agnd,nc gnd,gnd

其中分三大类 1、数据管脚功能,2、时钟同步类管脚功能  3、电源地类

各信号脚定义:
PCLK:像素点同步时钟信号,每个PCLK对应一个像素点,可以为48MHz;对于时钟信号,一般做包地处理,减少对其他信号的干扰,还需要在源端加电阻和电容,减少过冲和振铃,从而减少对其他信号的干扰。
MCLK(XCLK):外部时钟输入,可由主控或晶振提供,由sensor规格书确定,可以为24MHZ;
VSYNC:帧同步信号,一帧一个信号,频率为几十Hz(30Hz)
HSYNC:行同步信号(频率为几十KHz)
例如:分别率 320×240的屏,每一行需要输入320个脉冲来依次移位、锁存这一行的数据,然后来个HSYNC 脉冲换一行;这样依次输入240行之后换行同时来个VSYNC脉冲把行计数器清零,又重新从第一行开始刷新显示。

由原理图可知,csi_sda和csi_sck对应i2c1 的管脚配置,分别是 pe22,pe21管脚

 找到这些后,下面就要通过设备数使能这些管脚的功能!

 3、设备树修改

简述DTS和DTSI

*.dts文件是一种ASCII文本对Device Tree的描述,放置在内核的/arch/arm/boot/dts目录。一般而言,一个*.dts文件对应一个ARM的machine。

*.dtsi文件作用:由于一个SOC可能有多个不同的电路板,而每个电路板拥有一个 *.dts。这些dts势必会存在许多共同部分,为了减少代码的冗余,设备树将这些共同部分提炼保存在*.dtsi文件中,供不同的dts共同使用。*.dtsi的使用方法,类似于C语言的头文件,在dts文件中需要进行include *.dtsi文件。当然,dtsi本身也支持include 另一个dtsi文件。

sun8i-v3s.dtsi 针对soc通用的设备树修改,首先通过pinctrl使能管脚:

pio: pinctrl@1c20800 ...

1、8位数据管脚

csi1_8bit: csi1-8bit@0 {
                   pins      = "PE8","PE9","PE10","PE11","PE12","PE13","PE14","PE15";
                   bias-disable;
                   function = "csi";
            };

网上很多都是配置10个管脚,不知道为啥?

2、时钟类管脚


 csi1_clk: csi1-clk@0 {
                pins = "PE0","PE2","PE3";
                bias-disable;
                function = "csi";
                };

 csi1_mclk: csi1-mclk@0 {
                pins = "PE1";
                bias-disable;
                function = "csi";
                 };

用于与摄像头芯片通讯,设置配置等信息的i2c1
i2c1_pins: i2c1 {

        pins = "PE21", "PE22";

        function = "i2c1";

                };
这里管脚配置算是完了,下一步是如何配置v3s的csi驱动

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值