- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在嵌入式系统,如手机等平台上使用的Camera sensor通常是由类似I2C这样的总线进行寄存器控制,由CPU端的Controller提供所需的驱动时序,通常支持YUV和RGB等数据格式。有的Sensor需要由CPU进行图像处理工作,有的Sensor自己会集成图像处理芯片,完成一些基础的图像处理工作,还有些高像素的Sensor甚至自己完成JPEG的编码工作。因为硬件的多样性,我所遇到的问题可能和你的原因现象都不尽相同,分析内容仅供参考。Sensor端I2C总线没有响应, V; I?m) S) ?. m- O% h4 T症状. C6 Q, p7 T3 S3 y+ I+ @% v8 R `) b$ O? 所有输入电压和时钟信号都正常,往I2C总线上写入读取寄存器数据的命令后,sensor没有响应,没有数据从I2C总线上输出。0 q( B3 K# ?$ c3 S??e# ~- s; Y0 [) I8 P: E* ^0 n! o* W e$ B$ [6 Q( ?# \分析7 a% U( L/ s5 |# ~, ] r. [5 [! c3 p. ~( {7 y# O _9 }3 { 因为测量发现一切输出信号都正常,所以往往都会怀疑Sensor硬件存在问题,不过99%的情况,实际的原因总是因为I2C总线的ID值没有设置对,导致设备不响应命令。据我的观察,每次一个新的工程师在调试Sensor的时候几乎都会遇上这个问题。5 U _4 W+ r T# R9 q) |- i; ?, _( K1 a/ T1 I 之所以这么容易设置错误的原因,是因为通常Camera Sensor的Spec上所写的I2C ID号,还包含了最后一位读写方向位。而这一位在I2C总线的定义中,严格来说,不属于ID的一部分,所以Linux I2C的驱动API中的调用参数里的ID号,通常是不考虑这一位的,读写方向位会在具体的读写操作中,在寄存器中进行设置。: M. `9 l! K x6 {, q% y! B0 l5 q+ o3 b: O; n* U解决; t. A T+ v$ F6 l) V% z9 ]6 p3 ^4 m9 b. g1 d) z 例如Spec上会写 读写寄存器操作 I2C ID 分别为 0x64和0x65,实际调用API时应该使用0x32作为该设备的I2C ID3 O1 H* q+ C! O* T图像中有不断变化的细密的水平条纹症状/ G0 j3 f$ D# J7 [1 L9 i( [* j# ]7 ]: }5 v, w 与荧光灯的频闪造成的大面积的滚动水平条纹不同,表现出来的是一个像素高的水平条纹状躁点,位置不固定,数量比较多,而且随光线强弱有一定的变化* u( ] s+ Z2 u$ U# ?3 S+ c* v: l j; J: v分析2 H) I# s8 n??q- C+ k+ p 因为设置某些sensor寄存器的时候,会影响到这些水平条纹的颜色,所以基本上排除是在数据传输过程中板子对数据造成的干扰,也排除接触不良的可能性,应该是数据在sensor内部已经存在这些水平条纹。 此外相同的初始化序列,相同的sensor,在厂商的demo版上也没有发生这种情况,所以也基本排除软件的问题。 最后,发现原先为了节省硬件成本,将sensor的两个电压相同的模拟电和数字电由同一芯片输出供给,导致两者之间互相干扰,影响了sensor的正常工作) n1 z8 }1 M; t- x2 j8 |: F. b/ x??R# h. s$ k??f( p/ X1 @解决( `/ L4 X* P# _- m0 F5 r* }- N* p 将模拟电和数字电分离单独供电0 C j; z0 ], R3 T??p+ E% H5 @; B$ ~ R2 e* q, Z! S9 R) B7 o6 ?图像上有固定的锯齿状垂直条纹症状8 ? n, q% _+ K5 c. f; I) S4 X! ^; v) w( r( D 图像上有明显的垂直条纹,全屏分布,非常细密,好像百叶窗一样。?I x9 Y?h?v/ n; T分析; c! f7 N1 S: \0 V0 s z7 |$ h [; G) y ^( q; v5 |% ^ 仔细看可以发觉该垂直条纹实际上是由于图像上相邻的两两像素互相错位造成的锯齿状条纹% a q d4 _( z 仔细分析spec可以看到,由于sensor是按字节送出图像数据,在RGB565模式下,两个字节表示一个像素。而在我所使用的CPU的Camera控制器中,数据是按4个字节也就是一个字为单位处理的,由于CPU这端是按LSB方式处理数据的,所以在一个字内部,未经调整的话,两个像素的顺序是颠倒过来的。也就是最终由DMA将数据送到内存的连续buffer中时,像素的顺序是:像素2,像素1,像素
文档评论(0)