ti ds90ub954 的调试总结

ti的954与953是很好用的进行图像传输的芯片,它们可以通过外部的mode管脚进行模式配置,然后进行寄存器的配置就可以进行图像传输。还可以通过954的i2c去配置953的寄存器,甚至通过954的i2c去控制953的i2c来配置与953相连的sensor的初始化。

以下是参考的ti官网上面的datasheet
http://www.ti.com/lit/ds/symlink/ds90ub953a-q1.pdf
http://www.ti.com/lit/ds/symlink/ds90ub954-q1.pdf
http://www.ti.com/lit/an/snla267a/snla267a.pdf

串行器搭配使用场景

场景一: 954+ 单路953/913a/933串行器

场景二: 954+ 两路953/913a/933串行器

1.   913a/933和953带宽对比

   (1)953

          正向速率可达4Gbps,所以理论上使用4K30fps是没问题的;

          我这边使用的主要是1080p30fps。

   (2)913a&933

       正向速率可达1.9Gbps,由于913a和933解串器带宽限制,所以传输的图像有所限制,

        理论1080p30fps,720p60fps是没问题的;

        目前我这边使用最高的1080p目前只能达到20fps,720p使用30fps没问题。

2. 933和913a差异

        目前933串行器用起来和913a几乎是一样。

首先配置iic的slave addr 这个是通过外部管脚IDX进行配置的如下图

ti ds90ub954 的调试总结

 ds90ub953 954之间图像进行传输的时候要选择传输模式,两个模式要一致才可以进行传输,

模式的选择默认是通过外部管脚mode in进行配置的,但也可以通过设置寄存器来进行选择。

模式的选择分为两大类,csi模式和raw模式。953 954在这两个模式下都可以进行图像的传输,同时954的raw模式可以与913,933进行进行传输,953的raw模式是dvp模式她还可以和934, 914进行图像传输。
953模式配置管脚如下图
ti ds90ub954 的调试总结

954模式配置管脚如下图

ti ds90ub954 的调试总结

在csi模式下分为同步模式(synchronous)和非同步模式(non synchronous),

在non synchronous模式下有分外部时钟输入给953的模式和953内部时钟模式。

在synchronous模式下是954的外部时钟提供给953 954工作使用。

ti ds90ub954 的调试总结

在non synchronous 模式下是953的外部时钟或者内部产生时钟提供给954使用。

对于mode管脚的配置:

953如上图的table 8选择mode2,使用外部时钟,选择mode 3,内部时钟。

对于954如上图的table 2 选择mode 0.使用外部时钟输入给ds90ub953如下图

ti ds90ub954 的调试总结

使用953内部时钟如下图

ti ds90ub954 的调试总结

在raw模式下我选择的是raw10模式,953mode管脚配置为上图table 8的mode 5,954mode管脚配置为上图table 2的mode 3. 953配置为dvp模式时必须使用外部时钟,并且外部时钟必须与 csi输入数据同步。这里我给953的时钟频率与csi输入的数据pix clk一致。

 对于寄存器的配置
对于954的寄存器配置在不同模式下都是一样的如下:
iic_writeByte(ds90ub954_addr, 0x4c, 0x01);
iic_writeByte(ds90ub954_addr, 0x32, 0x01);
iic_writeByte(ds90ub954_addr, 0x33, 0x33);
iic_writeByte(ds90ub954_addr, 0x20, 0x20);
输出模式配置为1 lane 持续时钟模式

对于953的寄存器配置在csi 模式下如下:
iic_writeByte(ds90ub953_addr, 0x02, 0x03);
输入为1 lane模式,默认的是4 lane csi模式

对于953的寄存器配置在dvp模式下如下:
iic_writeByte(ds90ub953_addr, 0x02, 0x03);
iic_writeByte(ds90ub953_addr, 0x03, 0x15);//该寄存器可以配置953的输出模式
iic_writeByte(ds90ub953_addr, 0x04, 0x05);//该寄存器配置dvp的模式,raw10
iic_writeByte(ds90ub953_addr, 0x05, 0x1b);//dvp模式下,clk_div 必须为 1
iic_writeByte(ds90ub953_addr, 0x10, 0x18);
iic_writeByte(ds90ub953_addr, 0x11, 0x2b);

4:调试过程中的一些确认方式。
首先是要确保953 954两块芯片link上了,也就是 954的pass 管脚和lock管脚输出高电平。
如果link上了,读取954的0x5b寄存器的值应该是953的slave addr的值。

可以读取954的 0x73 0x74 line count 寄存器和0x75 0x76 line len寄存器来确认接收到的数据的大小是否与953发送过来的是否一致。

 

5:在调试ds90ub925 ,ds90ub926的时候,只需要外部配置管脚配置好后,不需要对925 926进行初始化就可以进行数据的传输


 

上一篇:TI杯2021年全国大学生电子设计竞赛仪器设备和主要元器件清单


下一篇:【洛谷5052】[COCI2017-2018#7] Go(区间DP)