概述
Camera SPI协议讲解
- 该文章写于2016年,一直未发表。近期工作中又涉及到了Camera相关的内容,重新温习了下相关知识。决定把这篇文章发表出来,大家共同学习。
SPI(Serial Peripheral Interface)串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术,它是一种高速的,全双工,同步的通信总线。SPI的通信原理很简单,它以主从模式(Master-Slave)工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,如下:
(1)SDI–主设备数据输入,从设备数据输出;
(2)SDO–主设备数据输出,从设备数据输入;
(3)SCLK–时钟信号,由主设备产生;
(4)CS–从设备使能信号,由主设备控制。
如果只做单向传输,可以省掉一根数据线,主从设备一对一时,CS片选信号都可以省掉,从设备一直使能即可。最终只需要2根线即可以实现数据传输。
CPOL是用来决定 SCK 时钟信号空闲时的电平,CPOL=0,空闲电平为低电平,CPOL=1 时,空闲电平为高电平。CPHA 是用来决定采样时刻的,CPHA=0,在每个周期的第一个时钟沿采样,CPHA=1,在每个周期的第二个时钟沿采样。SPI输出数据可以高位优先(MSB),也可以低位优先(LSB)。如果数据宽度超过8bit,则高8bit先传输,如16位宽的一个数据,则先将高8位送出,再将低8位送出。
Sensor采用SPI输出图像数据时,Sensor是作为Master,产生SCK(Serial Clock)和SDO,SDO支持1bit、2bit、4bit传输模式,即需要1根、2根或4根Data线。
各种配置序列如下,MSB先发送,LSB类似。
SPI不像DVP一样有HSYNC、VSYNC用来做行同步和帧同步,为标记行头行尾、帧头帧尾,定义了一个24bit的Sync code和8bit的Packet ID,定义了四种Packet ID分别表示Frame Start、Frame End、Line Start和Line End。
展讯平台的定义如下:
Sync Code | Packet ID | Description |
---|---|---|
24’hff0000 | 8’hb6 | Frame Start Packet (VSYNC) |
24’hff0000 | 8’hb6 | Frame End Packet |
24’hff0000 | 8’h80 | Line Start Packet (HSYNC) |
24’hff0000 | 8’h9d | Line End Packet |
帧数据结构如下:
MTK平台对Sync Code和Packet ID的定义有所差别,如下:
Sync Code | Packet ID | Description |
---|---|---|
24’hffffff | 8’h01 | Frame Start Packet(VSYNC) |
24’hffffff | 8’h00 | Frame End Packet |
24’hffffff | 8’h02 | Line Start Packet (HSYNC) |
24’hffffff | 8’h40 | Data Packet |
帧结构如下:
其中DATA_ID定义了数据类型,如下表:
图形格式 | DATA_ID[7:6](CRC enable) | DATA_ID[5:0] |
---|---|---|
YUV422 | 2’h0 or 2’h1 | 6’h0 |
RGB565 | 2’h0 or 2’h1 | 6’h1 |
RAW8 | 2’h0 or 2’h1 | 6’h2 |
JPEG | 2’h0 or 2’h1 | 6’h4 |
Packet_Size是一行的数据量大小,如Image Width=240,YUV422的数据,Packet_Size=240x2=480Byte。只有当DATA_ID里CRC使能打开后才会在Line_Data之后镶嵌CRC校验码,且只能对Line_Data进行校验,不能校验同步头数据。
以上只是对展讯、MTK平台Camera SPI数据传输协议做了简单的介绍,更加详细的介绍请查看它们提供的相关文档。
Camera SPI除了上面所介绍的1wire、2wire模式外,还有一种1wire+1Vsync(SSN)模式,用一根数据线来输出Vsync帧同步信号,而SDO0上的数据包格式不会发生变化。
SPI接口既然有这么多种不同的模式选择,Sensor便都开放的有相关的寄存器用于设置,调试时搞清楚主控接收方的协议要求是怎样的,如LSB还是MSB、CPHA前沿还是后沿、CPOL高还是低、SCK连续还是非连续、多SDO数据分配方式、数据打包格式、需要几条SDO、硬件接线要求等等,按要求配置相关寄存器即可。目前SPI主要应用在低像素(8W,30W)Sensor上,如GC6123、GC6133、GC0310、BY3A01、SP0820、SP0A19等,支持SPI的平台基本上都是功能机,如SC6531、MT6261、RDA8851等。各平台支持模式如下:
SC6531:1wire、2wire、1wire+SSN;
MT6261:1wire、2wire;
RDA8851:1wire、2wire;
SPI接口没有指定的流控制,没有应答机制确认是否接收到数据。没有校验机制,串行数据流,一旦同步头受到干扰出错,便会引起黑屏。SCK、SDO都是高频线,Layout时不能相互或与其它高频线并排、重叠走线,远离高频信号线,最好用GND线保护起来。
Camera SPI输出波形在HB、VB空闲态时,SDO输出低电平,SCK可输出低电平,也可持续输出时钟信号。
最后
以上就是仁爱钢笔为你收集整理的Camera SPI协议讲解的全部内容,希望文章能够帮你解决Camera SPI协议讲解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复