我是靠谱客的博主 仁爱钢笔,最近开发中收集的这篇文章主要介绍Camera SPI协议讲解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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线。
Camera SPI连接示例图
  各种配置序列如下,MSB先发送,LSB类似。
在这里插入图片描述
  SPI不像DVP一样有HSYNC、VSYNC用来做行同步和帧同步,为标记行头行尾、帧头帧尾,定义了一个24bit的Sync code和8bit的Packet ID,定义了四种Packet ID分别表示Frame Start、Frame End、Line Start和Line End。

  展讯平台的定义如下:

Sync CodePacket IDDescription
24’hff00008’hb6Frame Start Packet (VSYNC)
24’hff00008’hb6Frame End Packet
24’hff00008’h80Line Start Packet (HSYNC)
24’hff00008’h9dLine End Packet

  帧数据结构如下:
在这里插入图片描述

  MTK平台对Sync Code和Packet ID的定义有所差别,如下:

Sync CodePacket IDDescription
24’hffffff8’h01Frame Start Packet(VSYNC)
24’hffffff8’h00Frame End Packet
24’hffffff8’h02Line Start Packet (HSYNC)
24’hffffff8’h40Data Packet

  帧结构如下:在这里插入图片描述
  其中DATA_ID定义了数据类型,如下表:

图形格式DATA_ID[7:6](CRC enable)DATA_ID[5:0]
YUV4222’h0 or 2’h16’h0
RGB5652’h0 or 2’h16’h1
RAW82’h0 or 2’h16’h2
JPEG2’h0 or 2’h16’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协议讲解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部