当前位置:网站首页>Sensor bringup 中的一些问题总结
Sensor bringup 中的一些问题总结
2022-06-12 06:04:00 【一只特立独行的zhu..】
1、背景:
一般我们在调试一款sensor 的效果时,首先要先把他点亮,也叫 sensor bringup,这部分工作大都由驱动工程师来完成,但有时也是需要tuning 工程师来做的,但其实如果顺利的化,在sensor驱动中配置好sensor setting,、i2c地址、sensor的chip_id,就可以出图了,但大多数情况下,往往不会那么顺利,会遇到很多的问题,这里总结一下,整个sensor bringup的流程,以及遇到的一些问题;
2、Sensor bringup 流程:
- 向 sensor 原厂申请所需规格的Sensor setting,如分辨率、平台的Mclk、帧率、输出raw图的位宽、mipi_lane数,必要时说明下不能超过平台所能支持的最大mipi速率;
- 拿到setting后,进行sensor 驱动的配置,先配置好sensor setting、I2C地址、chip_id;
- 拿到主板的原理图,确认硬件相关配置,根据主板原理图在dts中配置mclk、reset、pwrdn、i2c 的引脚控制;
- 如上步骤完成后,硬件没啥问题的话,基本就可以点亮出图了,接着再根据sensor datasheet,详细配置sensor 的曝光时间,模拟增益等寄存器就可以了 ;
3、问题总结:
a、怎么确定 reset、pwrdn、i2c、mclk的引脚 ?
首先得学会看原理图,一开始拿到图看我是很懵的,乱七八糟感觉东西太多了,不知道从哪里看起,其实要关注的地方不是很多,不需要把整张图看懂,因为我们主要就是配置camera,所以找到MIPI_CSI接口部分,如下图a,只关注CM_RST_L (reset)、CM_PWRDN (pwrdn)、CM_I2C_SCL(i2c_clk)、CM_I2C_SDA( i2c_data )、CM_MCLK (mclk)几个控制引脚就可以了,以mclk为例,我们先找到图a的mipi_csi部分的CM_MCLK ——> 图b MCLK_0 ——>图c的 MCLK_0——> 主控的GPIOA_0 ,实际就是依次往上查找,直到主控的引脚上。
b、I2C不通 ?
- i2c地址配的不对:一般i2c有两个地址,电平拉高拉低是不同的,如下图是sc4335p的I2C地址说明,还有如下地址是7bit地址,一般驱动默认配置是8bit地址,所以驱动中配置时要左移1位,变成0x60。

- 查看硬件 电源的问题 AVDD,DVDD,IOVDD,有的硬件的三个电源是常供电,有的三个电源是用软件来控制的 如果是用软件控制的,需要在驱动中添加这个三个电源的控制引脚。
- mclk 引脚配置的不对:可以用示波器量下提供给sensor的时钟是否有,或者时钟是否对,如:24MHz、27MHz。
- i2c引脚配置的不对:一般可查看主控相应 pinmux-pins文件,确认相应的GPIO是否已经定义对了;

- reset、pwrdn引脚控制的不对:首先dts中要配置好相应的reset、pwrdn的引脚,接着sensor 驱动中去控制拉低、拉高,具体根据sensor datasheet的时序图来确认,如下是ov02k10的时序图,只有reset拉高的操作,就可以了,没有pwrdn的操作;

c、不出图或者出图异常;
- ISP这边输指令查下mipi的传输是否有err。
- 可以用示波器量下mipi信号。
- 抓raw图看下是否有异常,如果raw图也有异常一般都是sensor setting的问题,找sensor原厂的人去看。
- 提高增益后有竖条纹(也叫FPN),和sensor相关,一般找sensor 原厂处理;

- 低照度下有横条纹,一般和硬件相关,电源噪声或者器件的干扰;

边栏推荐
- 数据库为什么不使用hash表?
- jpg格式与xml格式文件分离到不同的文件夹
- Poisson disk sampling for procedural placement
- What is the lszrz protocol used at ordinary times? Talk about xmodem/ymodem/zmodem
- Why don't databases use hash tables?
- Leetcode-1552. Magnetic force between two balls
- Unity vscode cannot jump to definition
- EBook list page
- Guns框架多数据源配置,不修改配置文件
- Mysql笔记
猜你喜欢
![[PowerShell] command line output and adding system environment variables](/img/49/b92175181aa4a3fddfa3adcacf1d72.jpg)
[PowerShell] command line output and adding system environment variables

Who is more fierce in network acceleration? New king reappeared in CDN field

The application could not be installed: INSTALL_FAILED_TEST_ONLY

Redis transaction

数据集成框架SeaTunnel学习笔记

Directx11 advanced tutorial cluster based deffered shading
![[untitled]](/img/75/599c5b13dd483fad50f73ddb431989.jpg)
[untitled]

Redis memory obsolescence strategy

Front desk display LED number (number type on calculator)

Quickly master makefile file writing
随机推荐
Leetcode-1604. Warning people who use the same employee card more than or equal to three times within one hour
Data integration framework seatunnel learning notes
jpg格式与xml格式文件分离到不同的文件夹
Automatic annotation of target detection based on lffd model to generate XML file
数据库实验二:数据更新
Json-c common APIs
Leetcode sword finger offer II 033 Modified phrase
SQLite cross compile dynamic library
Execute sh script to prompt "[[: not found" solution. The difference between Bash and sh
EBook upload
Tabulation skills and matrix processing skills
数据库实验三:数据查询
C WMI query remote Win32_ Operatingsystem class
三年磨一剑:蚂蚁金服的研发效能洞察实践
为什么联合索引是最左匹配原则?
Who is more fierce in network acceleration? New king reappeared in CDN field
[untitled]
Poisson disk sampling for procedural placement
Review notes of naturallanguageprocessing based on deep learning
线程有哪些状态?