)
用的之前看过的IMX219链接是https://www.opensourceinstruments.com/Electronics/Data/IMX219PQ.pdf1 整体介绍首先还是介绍了基本情况整体说明就是采用了索尼经典的 Exmor R™ Back-illuminated (BSI) CMOS 架构。相比传统前照式它在暗光下的感光度更高、噪声Dark Current更低并且具备优秀的抗溢流Anti-blooming和无拖影No smear特性。800总像素约为 8.28M (3296 * 2512)实际有效活动像素为 8.08M (3280 * 2464)。靶面尺寸为 Type 1/4.0。集成了片上RGB原色马赛克滤镜Bayer 阵列。全像素全扫描模式 (All-pixel scan) 最高支持30frame/s此时的像素速率Pixel rate高达 280 Mpixel/s。1080p 模式下支持 60 frame/s。720p 模式下 支持高达180frame/s。具备变速电子快门功能最小调节步长为1H。片上集成 2线串行通信电路2-wire serial communication即我们常说的I2C总线。采用CSI-2 串行数据输出接口可以在设备树中选择配置为4 Lane或2 Lane。配置为4 Lane时每条Lane最大数据速率为 755 Mbps。配置为2 Lane时每条Lane最大数据速率可压榨至912Mbps。这部分是对于软件驱动要了解的最后是传感器内部集成了大量的模拟与数字前端处理单元极大减轻了外部 ISP 的负担时钟与驱动信号调理数模转换黑电平校准。2 框图和引脚核心就是两个图。Pins脚很多一共66个就不完整截图了。大部分应该都是硬件工程师关心的。还有引脚的硬件处理像GPIOI2C的这些接口照例说硬件工程师都应该很熟但是还列出来。对于初学者也可以用来学习。下面主要就是尺寸这部分主要还是给硬件工程师做layout用。3 信号输出用的是MIPI-CSI接口这里主要说明了怎么接线。但是看起来都是很明显的。。。4 控制接口对于软件工程师来说这部分就是重点了首先还是I2C。关于这个可以参考我之前写的https://blog.csdn.net/fanged/article/details/140860652首先还是I2C的硬件接口当然对于嵌入式的人来说这部分真的是基础中的基础了。后面介绍了通讯协议这部分也是I2C的基础。然后介绍了I2C的起始结束标志。。。这部分也是基础中的基础。然后介绍了CCI这部分虽然叫做CCI(Camera Control Interface)但是实际上就是I2C。所以这部分是要重点关注。MIPI 组织为摄像头定义了两个完全不同的接口。MIPI CSI (Camera Serial Interface):职责负责传输海量的图像数据高分辨率、高帧率的视频流。MIPI CCI (Camera Control Interface): 职责负责传输控制命令比如初始化寄存器、曝光控制、白平衡调节、对焦控制等。就是I2C的简单扩展传统I2C是8位地址因为现代高像素摄像头内部的寄存器极其庞大8 位地址不够用了。所以 CCI 规范强制或者推荐使用16 位寄存器地址。首先是说了地址的范围。后面详细说明了各个指令。有如下指令CCI single read from random location 任意指定位置的单字节读取CCI single read from current location 当前指针位置的单字节读取CCI sequential read starting from random location 从任意指定位置开始的连续顺序读取CCI sequential read starting from current location 从当前指针位置开始的连续顺序读取CCI single write to random location 向任意指定位置写入单字节CCI sequential write starting from random location 从任意指定位置开始连续顺序写入举例第一个可以看到是先发送客户端地址再分两次发送寄存器地址。然后还要发一次客户端地址并打开读开关才能收到数据。这里的地址是[15:8][7:0]。就是先发高位再发地位换成代码如下uint16_t reg_addr 0x301A; uint8_t buf[2]; buf[0] (reg_addr 8) 0xFF; // 右移 8 位取出高 8 位 [15:8]即 0x30 buf[1] reg_addr 0xFF; // 直接取掩码取出低 8 位 [7:0]即 0x1A其它的过程类似。只是如果是读当前位置不用前面的步骤就是发客户端地址和寄存器地址。后面还介绍了I2C的时序什么的。不过这部分一般是硬件控制的软件基本上不用操心。后面一部分是介绍Register Synchronization (Frame Bank)就是传输帧中的一些机制不过是传感器本身的实现机制可能3A算法才会接触到这块。之后就是具体的寄存器地址这部分的数量就非常多了占了差不多1/3的内容。5 输出格式主要是CSI的格式这部分一般是硬件处理就像TCP/IP里面的MACIP这些部分。这里就不多写了。6 成像设置这部分主要是描述了传上来的图像数据里面包含了什么内容。可以看到里面包含了非常多的区域。不是所有的区域都需要很多可能都是用不到的。后面还讲了Pixel Binning Mode大概就是如何压缩分辨率的。预览阶段据说分辨率还是不同我一直以为就是摄像和拍照的区别。后面还有图像大小翻转帧率黑电平控制保存时间计算Gain计算等内容。7 片上图片处理流程这部分感觉只用知道就可以了吧。。。这里说了一个测试模式。8 NVM Memory Map非易丢内存表。就是是一块硬件只读的 OTPOne-Time Programmable一次性可编程存储器。存储了包括MGC/AWB 镜头校准数据 (White Balance Calibration)LSC镜头阴影校正数据 (Lens Shading Correction)Module Info Serial Number (身份铭牌)。这些数据都要在驱动中读出来或者直接通知后面给ISP作为画面较准用。这一篇的部分就主要是描述数据怎么存储的然后怎么读。9 具体操作这里就很多干货了。包括启动时序关闭时序这些部分都要严格在驱动代码中体现。10 其它功能这里包括了时钟设置温度传感器等。11 电流特性主要就是说了各个电源相关引脚能承受的高低电压时序等。12 传感器特性描述了传感器本身的一些特点参数13 其它最后还说了几个部分但是都不算多。主要是测量设置怎么测试出图的质量坏点规格坏点测量连接图等。最后还给了个友情提示