downlink指的是相机传输到host采集卡的高速链路,其中包含了如下类型的数据:
1、Stream Data
2、Trigger Ack, Trigger;
3、Ack (reply data);
4、Event, Heartbeat
和uplink的低速数据一样,都使用packet的方式进行传输,以packet 作为最小单位,其中包含down link的所有数据类型indication
首先,packet会标识当前数据是否传输的是stream data数据,其次需要看stream data的传输方式。
下图标识了stream 图像数据的传输,可以看出,图像数据被截断成了若干个packet 进行传输,具体截断的方式由device 决定
这里2个地方要注意
1、stream ID指示当前packet数据应该缓存到哪一个buffer中去,实际应用中会很少见到,比如一个相机里面有2个传感器,每个传感器传输的数据占用1个stream id,用以区分数据来源;
2、CRC校验时,stream data中的K码 K28.3会用D28.3替代进行CRC校验,具体校验方法,参考我的另外一篇博客 https://www.cnblogs.com/xingce/p/17422472.html ;
通常的图像传输如下信息
1、header 图像尺寸,ROI区域,像素格式,扫描方式等信息;
2、line 图像数据;
packet中的stream 数据会以K28.3开头,然后加上传输类型信息
以area扫描图像的header为例,格式如下,只列出了部分信息:
根据上述信息,就可以知道当前图像的详细信息;
永远以第一条LANE 为起点,按照如下方式组织数据
这样HOST就可以正确的解析出各种数据了。
由此可见,downlink 接口的数据首先要根据packet类型做区分,然后不同类型的数据送到不同的逻辑完成进一步处理,比如control的ack回应信息,需要送给control channel完成处理,stream 数据则送给stream data channel完成处理,然后输出图像的信息和dma数据给到用户逻辑;