MIPI扫盲——CSI-2介绍(二)

在前面的文章中介绍过D-PHY的分层结构图,而基于D-PHY的CSI-2协议主要定义的是Lane Management Layer、Low Level Protocol和像素与字节格式转换(Pixel to Byte和Byte to Pixel)部分。严格来说,可以将像素与字节转换层划分到应用层中去,但是考虑到MIPI CSI-2的应用场合相对固定,很多情况下像素与字节转换层都是由硬件来实现的(以获得更高的效率)。至于Lane Management Layer和Low Level Protocol则是DSI和CSI-2所共有的特性(基本上是一致的),所以也有的MIPI参考资料将这两层放在了D-PHY那部分进行了介绍。 一个简化的CSI-2的接口模型如下图所示: 可以发现,CSI-2无论是Data Lane还是Clock Lane都是非双向的(Unidirectional),同时CSI-2协议还囊括了CCI(Camera Control Interface)协议。不过这也很容易理解,CSI-2定义的是摄像头和图像处理器或者应用处理器之间的接口协议,此时摄像头为Transmitter,而应用处理器为Receiver,只需要进行单向的图像数据传输即可了,而应用处理器可以通过CCI接口来对摄像头进行配置。为什么要用CCI呢?主要是为了保持良好的兼容性,因为CCI已经被行业所认可和接受,并被广泛应用于多家公司的产品中。 那么CCI又是什么鬼呢?你可以这么理解,它就是I2C的一个变种,或者说CCI是I2C协议的一个子集。因此,使用I2C接口就可以直接与CCI接口互联,以实现通信。 需要注意的是,在MIPI CSI-2的协议规范中明确的对摄像头的CCI地址做出了规定,具体如下: 对于那些只支持RAW Bayer输出格式的摄像头,其CCI地址必须为011011xb(x=0,1);对于其他的摄像头,其CCI地址必须为011110xb。 对于CCI协议的具体内容,这里就不详细介绍了,大家可以去参考I2C协议规范或者CSI-2协议规范的对应章节就可以了。 在前面介绍D-PHY的文章中有提到过,当系统进入LP模式时,Clock Lane上的差分时钟可以设置为关闭,或者继续运行。对于那些在LP模式下(换一种说法就是,在两次HS模式之间),差分时钟信号仍然有效的系统,称之为持续时钟行为(Continuous Clock Behavior);而对于那些在LP模式下,将差分时钟信号切断的系统,则称之为非持续时钟行为(Non-Continuous Clock Behavior)。 MIPI CSI-2协议支持多种Lane的配置方式,最小仅仅需要一个Clock Lane和一个Data Lane,而最大则支持一个Clock Lane和多大4个Data Lane。其中,4个Data Lane由Clock Lane进行同步传输数据,显然,这需要在传输数据之前对数据进行分配(或者合并),具体如下图所示: 显然CSI-2每个Data Lane的最小传输内容为一个字节。同时,这会带来一个问题(以2个Data Lane)为例,当所传送字节数为偶数时,Lane1和Lane2可以同时结束,当所传送的字节数为奇数时,Lane1和Lane2将不再是同时结束了!具体如下图所示: 对于3个Lane,也有类似的情况: 4个Lane的情况也是类似的,这里就不详细描述了。综上所述,不管是何种情况(Lane的配置方式),每个Lane都同时开始SoT,并开始发送第一个字节,但是每个Lane的结束时间可能会相差一个字节的传输时间。

MIPI扫盲——CSI-2介绍(一)

CSI旨在为高清摄像头和应用处理器之间提供一个高速的串行接口,举例来说,在目前的智能手机中的摄像头和CPU之间采用的就是CSI协议。目前来说,广泛使用的是其第二个版本CSI-2,最新的版本则是CSI-3。置于CSI-1是否存在,亦或是曾经是否存在暂时无从考证,至少在MIPI的官网是找不到CSI-1的身影了。 CSI-2协议既可以使用与DSI一致的D-PHY物理层协议,也可以使用C-PHY作为物理层协议。而CSI-3则只能使用M-PHY作为物理层协议,也就是说CSI-2和CSI-3之间是不兼容的!具体如下图: 需要注意的是,C-PHY和D-PHY在物理连接上存在多处不同,因此必须保证主机和从机同时使用C-PHY和D-PHY之间的一种作为物理层才能进行有效地通信。具体的差别,参见下图: 差别主要体现在时钟机制上。 显然,采用C-PHY可以获得更高的速率,这也是C-PHY的优势。但是,换一个角度思考,C-PHY只支持CSI-2,而D-PHY同时支持CSI-2和DSI,因此,从设备兼容性,硬件设计成本和灵活性等多个角度来看的话,D-PHY还是具有相当大的优势的。所以目前来说,D-PHY要用的更多一点。 举例来说,Lattice的CrossLink系列器件内部集成了两个D-PHY Harden Core,可以根据实际的需求灵活配置为CSI-2或者DSI,同时也可以使用LUT设计一个Soft Core的D-PHY。从而轻松的完成视频桥接、视频拼接等功能。具体如下: 基于D-PHY v1.1版本的CSI-2不同版本的性能差别如下:

MIPI扫盲——D-PHY介绍(一) 

D-PHY种的PHY是物理层(Physical)的意思,那么D是什么意思呢?在MIPI D-PHY的文档中有提到过,D-PHY的最初版本的设计目标是500Mbits/s,而D是罗马数字(拉丁文数字)中500 。同理C和M分别是罗马数字中的100和1000,也就是C-PHY和M-PHY中C和M的意思了。 D-PHY是一种高速、低功耗的源同步物理层,由于采用了高功效设计,因此非常适合功耗大的电池供电设备使用。它里面同时包含了有助于实现高功效的高速模块和低功耗模块。载荷数据(图像数据)使用高速模块,控制和状态信息的发送(在照相机/显示器和应用处理器之间)使用的是低功耗模块(利用低频信号)。它具有在单个数据包脉冲中发送高速和低功耗数据的特殊能力。低功耗模块有助于节省功耗,高速模块则有助于实现高清晰度照片质量数据信号要求的较高带宽。 如下图所示,MIPI信号(HS模式下)相对于传统的TMDS信号、LVDS信号等,具有低电压摆幅,低功耗的优势。 MIPI D-PHY协议定义了两种传输模式:高速模式(High Speed,HS)和低功耗模式(Low Power,LP),两种模式使用不同的传输电平和传输机制。HS模式和LP模式的电平如下图所示: 使用示波器测量获得的HS波形如下图所示: 其中,HS模式下,为差分信号传输,信号电平在100mV~300mV(200mV的压摆);LP模式下,为单端信号传输,信号电平在0~1.2V(1.2V压摆)。HS模式下,信号传输速度可达80Mbps~1Gbps(v1.0)或80Mbps~1.5Gbps(v1.1),采用源同步的传输方式,由主机(Master)设备向从机(Slave)设备提供DDR时钟。LP模式下,信号传输速度为10Mbps,此时传输通道的差分线(HS模式下的)是两根独立的信号线。无论是HS模式还是LP模式,都采用LSB fisrt,MSB last的传输方式。 【注】为什么要这样设计?我个人的理解是这样的:HS模式下,信号传输速度较快,较低的压摆有利于提升传输速度,同时降低功耗和EMI;那么为什么LP模式下不用HS的传输机制呢?是因为LP模式下,传输的信号速度较慢,较低的压摆不利于系统的稳定(此时可能会有比较严重的过冲,如果采用100mV~300mV的电平的话)。 一个完整的MIPI传输系统结构图如下: 其中PHY Layer为物理层,如D-PHY,Low Level Protocol和Lane Management为中间层,如DSI和CSI,Application为应用层,可由软件或者硬件实现,以DSI系统为例,其中所有的命令需要符合MIPI的DCS(Display Command Set)规范。 D-PHY协议最多支持5个Lane(通道)(一个时钟Lane,4个数据Lane),最少需要两个Lane(一个时钟Lane,一个数据Lane)。 如上图所示,一个通用的Lane中包含LP-TX、LP-RX、HS-TX、HS-RX和LP-CD模块,所有收发模块均共用同一个差分线Dp,Dn(在LP模式下,为两根单独的信号线)。整个Lane通过PPI接口(PHY Protocol Interface)与系统的其他部分连接。 其中,LP-CD模块仅在存在于需要双向通信(Bidirectional)的系统中,对于不需要双向通信(Unidirectional)的系统,如CSI协议,则不需要LP-CD模块。显然,在Unidirectional系统中,主机(一般固定为Transmitter)则不需要RX模块,从机(一般固定为Receiver)则不需要TX模块。在需要双向通信的系统中,如DSI(当然,在特定的系统中,DSI也可以是Unidirectional的),一般只需要一个Data Lane具有双向收发的能力,其他的Data Lane和Clock Lane则可以根据实际需求,去除RX或者TX模块。需要注意的是,即使是在Bidirectional的系统中,Clock Lane也不需要反向传输,即当从机向主机发送数据时(反向传输),此时的时钟仍然是由主机提供(HS模式下,LP模式下则不需要时钟)。 比较有意思的地方是,在LP模式下(包括Control Mode和Escape Mode),采用的是Spaced-One-Hot Coding机制。在该机制下,时钟可以从传输的数据中得以体现,因此不需要传输时钟。此时,用户可以根据实际需求,设置Clock Lane继续运行或者关闭以降低功耗。关于Spaced-One-Hot Coding会在后面的博文中详细介绍。【注】我们常听到的LPDT模式(Low-Power Data Transmission)和ULPS模式(Ultra-Low Power State)都是Escape Mode的一种。 综上所述,也就是说,D-PHY中一共有三种Lane,Unidirectional Clock Lane 、Unidirectional Data Lane以及Bi-directional Data Lane。 需要注意的是,D-PHY的Bidirectional通信是一种半双工的双向通信模式,同时,反向传输的速度只有正向传输的1/4。 MIPI-Physical-Layers-M-PHY-D-PHY-C-PHY下载

W800芯片平台进OpenHarmony主干,润和软件与联盛德携手共拓智能家居市场

开源项目 OpenHarmony 是每个人的 OpenHarmony 近日,江苏润和软件股份有限公司与北京联盛德微电子有限责任公司联合宣布:W800 芯片平台正式合入 OpenAtom OpenHarmony(简称“OpenHarmony”)主干,标志着双方将基于开源操作系统 OpenHarmony 联手深耕智能家居市场,为用户提供万物智联时代的全新体验。W800 芯片是由联盛德微电子(Winner Micro)打造的一款高安全  IoT Wi-Fi/ 蓝牙双模 SoC 芯片,支持标准 IEEE 802.11 b/g/n Wi-Fi 协议,内置完整 TCP/IP 协议栈,集成蓝牙基带处理器,支持 BT/BLE4.2 协议,采用 QFN32 4mm*4mm 封装,可通过标准 SMT 设备实现产品快速生产,为客户提供高可靠性连接方式。 基于 W800 芯片,润和软件推出了 OpenHarmony 模组和开发板海王星系列 HH-SLNPT10x:具备丰富的数字接口,内置 QFlash、SPI、UART、GPIO、I2C、I2S、7816 等。HH-SLNPT100 开发板已顺利通过 OpenHarmony 3.1 Release 版本兼容性测评,获得 OpenHarmony 生态产品兼容性证书,普适千行百业各类 IoT 场景的产品开发。 W800 芯片具有多样的片上资源以及丰富的外设接口,润和海王星系列模组/开发板 HH-SLNPT10x 的推出,扩充了 OpenHarmony 芯片平台多样化,同时具备高性价比优势,降低了...

W80X/W60X 联盛德WIFI芯片烧录工具Upgrade Tools

联盛德W800、W600、W100系列芯片烧录工具,同时也是一个多功能串口助手,平时我自己开发过程也在用该工具,如果大家使用过程遇到问题或者BUG,以及好的功能建议,都可在评论区域留言,同时该工具还支持一些开发过程中实用的小功能,例如固件可以拖拽到地址栏、远程下载...,下面会一一介绍。 一.首先介绍固件下载 联盛德标准固件默认下载波特率为115200,芯片下载时一般会用到BootLoad脚和Reset脚,固件下载时需要让芯片进入烧录模式(Secboot或者ROM里面,该模式会不停地打印CCC...)。 ①. 进入烧录模式方法有两种,一种是芯片上电前下拉BootLoad脚(或者先按住BootLoad按键再按一下Reset也能达到同样的效果),此时打开串口就能看的芯片在打印CCC,表明芯片已经进入烧录模式,此时再点击下载。 ②. 还有一些模块的BootLoad并没有引出,所以只能通过第二种方式进入烧录模式,那就是芯片上电瞬间,通过串口给芯片发送ESC(ASCII码为0x1B),芯片也能够进入烧录模式,该功能在串口助手上面已经实现,所以下载固件,仅需115200波特率,打开串口后点击下载按钮,然后软件会提示芯片需要复位,此时点击复位按键,芯片就能进入烧录模式,进行固件更新升级。 ③. 在此我还给工具增加了一个远程下载的小功能(适合喜欢折腾的玩家),平时我在服务器端编译固件,编译时将方便在本地电脑下载烧录,我在固件编译脚本,编译完成后加一条cp固件可被公网访问的Web地址,在固件地址栏目填该URL地址,即可从云端下载工具进行固件升级。结合起来就是编译下载一条龙服务,可以极大的提高开发效率。 二.搜索功能 平时开发过程中发现,log信息比较多少时,很难找到自己想要的信息,于是就加了这个一个小功能,效果还是不错。可以通过菜单栏或者快捷键Ctrl+F打开和关闭。 三.扩展面板 平时用AT指令是有很多指令,又记不住,就弄了个小功能,很多串口助手上都有,就不详细介绍了。可通过菜单栏或快捷键Ctrl+E打开或关闭改功能。 烧录常见问题: 1.进度条不动,卡在Wait for the chip to be ready...。 答:这种情况多半为所使用的USB转串口驱动设备所支持的最大波特率,达不到工具设置的波特率导致的,可以通过工具左上角"设置/下载波特率",调低后再次尝试下载即可。(下载波特率越高下载耗时越短,工具默认为2M下载波特率) 版本更新记录: =======V1.4.5更新说明======= 1、将串口收发编码改为UTF-8格式,解决AT指令配网时,路由器SSID不能包含中文字符问题。 =======V1.4.8更新说明======= 1、将配置文件改为json格式存储,记忆checkbox选中状态及扩展面板配置最后选中文件。 =======V1.4.10更新说明======= 1、修复打开串口助手失败后占用CPU资源问题。 2、修复某些情况下,强行中断导致的无效线程id问题。 =======V1.4.11更新说明======= 1、增加W80X 1M Flash擦除功能。 2、增加W80X 下载固件完成后复位功能。 =======V1.4.12更新说明======= 1、串口接收部分逻辑优化,增强对UTF8编码支持,同时兼容GB2312汉字编码。 =======V1.4.15更新说明======= 1、将W80X系列芯片.fls格式固件分解为多个.img格式固件下载,解决固件未完整校验问题。 =======V1.4.18更新说明======= 1、W80X擦除Flash失败后终止继续下载固件。 2、W80X擦除Flash指令改为block擦除,提高效率。 3、增加固件下载失败返回错误码。 4、解决Flash上锁后,下载固件仍升级成功的错误提示。 下载链接: upgrade_tools_v1.4.15 upgrade_tools_v1.4.18