ti ds90ub953 与ds90ub954 的调试总结

ti的953与954是很好用的进行图像传输的芯片,它们可以通过外部的mode管脚进行模式配置,然后只需要简单的几个寄存器的配置就可以进行图像传输。还可以通过954的iic去配置953的寄存器,甚至通过954的iic去控制953的iic来配置与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

接下来开始调试:
1:首先配置iic的slave addr 这个是通过外部管脚IDX进行配置的如下图

红色框是我的选择地址0x30

2:953 954之间图像进行传输的时候要选择传输模式,两个模式要一致才可以进行传输,模式的选择默认是通过外部管脚mode in进行配置的,但也可以通过设置寄存器来进行选择。模式的选择分为两大类,csi模式和raw模式。953 954在这两个模式下都可以进行图像的传输,同时954的raw模式可以与913,933进行进行传输,953的raw模式是dvp模式她还可以和943, 914进行图像传输。
953模式配置管脚如下图

954模式配置管脚如下图

在csi模式下分为同步模式(synchronous)和非同步模式(non synchronous),在non synchronous模式下有分外部时钟输入给953的模式和953内部时钟模式。

在synchronous模式下是954的外部时钟提供给953 954工作使用。对于mode 管脚的配置953如上图的table 8选择 mode 0,对于954如上图table 2 选择 mode 4。时钟的提供如下图

在non synchronous 模式下是953的外部时钟或者内部产生时钟提供给954使用。对于mode管脚的配置,953如上图的table 8选择mode2,使用外部时钟,选择mode 3,内部时钟。对于954如上图的table 2 选择mode 0.
使用外部时钟如下图

使用内部时钟如下图

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

3: 对于寄存器的配置
对于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发送过来的是否一致。

在调试过程中在csi synchronous模式下调通了,但是后面增加了953 954之间连线的长度后,953 954又link不上了,后面改为了non-synchoronous模式后又可以了。不知道为什么会出现这样的现象,初步怀疑是两种模式的时钟频率的原因。

调试时953是与fpga连接的,所以没有设置sensor的初始化部分

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

以上部分照搬作者:https://blog.csdn.net/qq_30320423/article/details/101159808十分感谢

ds90ub954、ds90ub953,ds90ub923补充:

1.ds90ub954、ds90ub953都有内部图形生成器,可直接输出自定义颜色的图像。

2.ds90ub954支持dvp模式可以传输10bit和12bit的数据。可直接和ds90ub933对接,目前调试的时候发现不需要设置ds90ub933的寄存器,我的理解是ds90ub954设置好了会反馈到ds90ub933进行配置,配置的寄存器基于上面的修改了954dvp模式选择raw10,

设置数据高低8位,修改了输出的数据类型为0x1e-yuv422,修改了954 fv lv的输入极性,目前933输入接入了行场信号,看手册好像说可以不需要(欢迎指导)。

3.ds90ub954、ds90ub953貌似也可以支持dvp模式。但是我们在调试的时候没有调通(可能当时我没太搞懂造成的,没有设置对fv lv的极性,高低8位953没看到哪里可以设置,感觉按照现在的配置应该也可以接入(欢迎指导交流))。

附1:926 输出默认图像

i2c_write 0x02 0x58 0x66 0x03
i2c_write 0x02 0x58 0x67 0x06
i2c_write 0x02 0x58 0x66 0x07
i2c_write 0x02 0x58 0x67 0x20
i2c_write 0x02 0x58 0x66 0x08
i2c_write 0x02 0x58 0x67 0x03
i2c_write 0x02 0x58 0x66 0x09
i2c_write 0x02 0x58 0x67 0x1e

i2c_write 0x02 0x58 0x66 0x04
i2c_write 0x02 0x58 0x67 0x98
i2c_write 0x02 0x58 0x66 0x05
i2c_write 0x02 0x58 0x67 0xd4
i2c_write 0x02 0x58 0x66 0x06
i2c_write 0x02 0x58 0x67 0x20

i2c_write 0x02 0x58 0x66 0x0c
i2c_write 0x02 0x58 0x67 0xd8
i2c_write 0x02 0x58 0x66 0x0d
i2c_write 0x02 0x58 0x67 0x23

i2c_write 0x02 0x58 0x66 0x0a
i2c_write 0x02 0x58 0x67 0x0a
i2c_write 0x02 0x58 0x66 0x0b
i2c_write 0x02 0x58 0x67 0x02

i2c_write 0x02 0x58 0x66 0x0e
i2c_write 0x02 0x58 0x67 0x03

i2c_write 0x02 0x58 0x65 0x03
i2c_write 0x02 0x58 0x39 0x02
i2c_write 0x02 0x58 0x64 0x11

附1:953 输出默认图像

IN=$1
#board.devAddr = 0x30
# # CSI sel and CSI enable
# i2c_write   0x02 0x30 0x32 0x01
# time.sleep(0.5
# i2c_write   0x02 0x30 0x33 0x01
# time.sleep(0.5
# enable pat gen
#i2c_write   0x02 0x30
i2c_write   0x02 0x30 0xB0 0x00
i2c_write   0x02 0x30 0xB1 0x01
i2c_write   0x02 0x30 0xB2 $IN   #enable pattern generator
i2c_write   0x02 0x30 0xB1 0x02
i2c_write   0x02 0x30 0xB2 0x37   #fixed color pattern 8 color bars block size of 5
i2c_write   0x02 0x30 0xB1 0x03
i2c_write   0x02 0x30 0xB2 0x1e   #CSI Data Identifier (0x24 = RGB888 0x2C = RAW12 0x2B = RAW10)
i2c_write   0x02 0x30 0xB1 0x04
i2c_write   0x02 0x30 0xB2 0x16   #line size (15:8)
i2c_write   0x02 0x30 0xB1 0x05
i2c_write   0x02 0x30 0xB2 0x80   #line size (7:0)
i2c_write   0x02 0x30 0xB1 0x06
i2c_write   0x02 0x30 0xB2 0x02   #bar size (15:8)
i2c_write   0x02 0x30 0xB1 0x07
i2c_write   0x02 0x30 0xB2 0xd0   #bar size (7:0)
i2c_write   0x02 0x30 0xB1 0x08
i2c_write   0x02 0x30 0xB2 0x02   #active lines per frame (15:8)
i2c_write   0x02 0x30 0xB1 0x09
i2c_write   0x02 0x30 0xB2 0xd0   #active lines per frame (7:0)
i2c_write   0x02 0x30 0xB1 0x0a
i2c_write   0x02 0x30 0xB2 0x04   #total lines per frame (15:8)
i2c_write   0x02 0x30 0xB1 0x0b
i2c_write   0x02 0x30 0xB2 0x1a   #total lines per frame (7:0)
i2c_write   0x02 0x30 0xB1 0x0c
i2c_write   0x02 0x30 0xB2 0x0c   #line period (15:8)
i2c_write   0x02 0x30 0xB1 0x0d
i2c_write   0x02 0x30 0xB2 0x67   #line period (7:0)
i2c_write   0x02 0x30 0xB1 0x0e
i2c_write   0x02 0x30 0xB2 0x21   #vertical back porch
i2c_write   0x02 0x30 0xB1 0x0f
i2c_write   0x02 0x30 0xB2 0x0a   #vertical front porch
#
i2c_write   0x02 0x30 0xB1 0x10
i2c_write   0x02 0x30 0xB2 0x11   #1st byte of fixed color
i2c_write   0x02 0x30 0xB1 0x11
i2c_write   0x02 0x30 0xB2 0x22   #2nd byte of fixed color
i2c_write   0x02 0x30 0xB1 0x12

i2c_write   0x02 0x30 0xB2 0x33   #3rd byte of fixed color
i2c_write   0x02 0x30 0xB1 0x13
i2c_write   0x02 0x30 0xB2 0x44   #4th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x14
i2c_write   0x02 0x30 0xB2 0x55   #5th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x15
i2c_write   0x02 0x30 0xB2 0x66   #6th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x16
i2c_write   0x02 0x30 0xB2 0x77   #7th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x17
i2c_write   0x02 0x30 0xB2 0x88   #8th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x18
i2c_write   0x02 0x30 0xB2 0x88   #9th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x19
i2c_write   0x02 0x30 0xB2 0x99   #10th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x1A
i2c_write   0x02 0x30 0xB2 0xaa   #11th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x1B
i2c_write   0x02 0x30 0xB1 0xbb   #12th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x1C
i2c_write   0x02 0x30 0xB2 0xcc   #13th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x1D
i2c_write   0x02 0x30 0xB2 0xdd   #14th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x1E
i2c_write   0x02 0x30 0xB2 0xee   #15th byte of fixed color
i2c_write   0x02 0x30 0xB1 0x1F
i2c_write   0x02 0x30 0xB2 0xff   #16th byte of fixed color

以上为个人的理解与调试总结,如有错误欢迎指正。

ti ds90ub953 与ds90ub954 、ds90ub933的调试总结相关推荐

  1. ti ds90ub953 与ds90ub954 的调试总结

    ti ds90ub953 与ds90ub954 的调试总结 ti的953与954是很好用的进行图像传输的芯片,它们可以通过外部的mode管脚进行模式配置,然后只需要简单的几个寄存器的配置就可以进行图像 ...

  2. [TI TDA4 J721E]开发板网络调试功能及开机自动配置网络

              首先感谢阅读,如果您也对TDA4相关的开发感兴趣,我们这边有个学习交流微信群,可以入群和大家一起交流学习. 资历较浅,水平有限,如遇错误,请大家多指正! 保持开源精神,共同分享.进 ...

  3. [TI TDA4 J721E] TDA4平台 相关技术文章 汇总

            首先感谢阅读,如果您也对TDA4相关的开发感兴趣,我们这边有个学习交流微信群,可以入群和大家一起交流学习. 资历较浅,水平有限,如遇错误,请大家多指正! 保持开源精神,共同分享.进步! ...

  4. DS90UB953-Q1-DS90UB954-Q1调试记录

    1,拓扑图 2.sensor 输出图像: 格式:1080P 25fps 27MHz  GRBG 12bit 输出:接口MIPI CSI-2 lanes:    2lanes MIPI CSI-2 Cl ...

  5. ARMCortex系列仿真调试器

    主流的调试工具 1. J-Link J-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产.提供对市面上几乎所有ARM内核芯片的支持.目前最新版本的J-Link产品为V8,支持J ...

  6. TI CC32XX SDA中SimpleLink Academy教程翻译(RTOS部分的基础介绍非常易懂)

    SimpleLink MCU平台是业界最广泛的基于ARM Cortex-M的有线和无线微控制器组合. 目录 一.Debug Printing 1.printf 2.Display_printf 3.S ...

  7. [TI TDA4 J721E]基于TDA4平台 FFmpeg / X264 的ARM平台移植

            大家好,首先感谢阅读,如果您也对TDA4相关的开发感兴趣,可以私信联系博主,我们这边有个学习交流群,可以入群和大家一起交流学习.         也可以加博主WX :AIR_12 我会 ...

  8. ARMCortex系列主流的仿真调试器

    1.  J-Link J-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产.提供对市面上几乎所有ARM内核芯片的支持.目前最新版本的J-Link产品为V8,支持JTAG和SWD ...

  9. 数据结构线性表博客作业总结

    作业总结 一.基本要求与评分要求 1.1 基本要求 按时交 - 有分 未交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 0分 博客作业不规范,没有Markdown语法 - 扣分 泛泛而谈( ...

最新文章

  1. php 前端控制器,前端控制器模式
  2. 官方乌镇定调互联网金融,P2P、众筹专项对待
  3. 复工之后,如何让自己的时间更值钱
  4. linux下邮件查看命令
  5. 生成的数据库脚本没有注释?
  6. 中文转数字 java_java将阿拉伯数字转换为中文数字
  7. tcping在linux用法,tcping的安装和使用
  8. Qt5 开发 iOS 应用之访问 SQLite 数据库
  9. dom4j Document的基本操作
  10. 用SpringMVC参数传递时,解决get请求时中文乱码的问题
  11. ‘chromedriver.exe‘ executable needs to be in PATH.解决办法
  12. Spring Boot入门HelloWorld
  13. day2 craps赌博游戏
  14. 春日游湖不易,但居家聊聊数据湖还是可以的……
  15. CSU 1256 天朝的单行道 最短路问题
  16. 一年级计算c语言编程,用C语言switch语句做一年级算术题。
  17. SWT定位– setBounds()或setLocation()
  18. 3D万花筒无限延伸动画特效(源码)
  19. 怎么在12306上选择上中下卧铺
  20. JVM参数 KV设值类型

热门文章

  1. MySQL提权——udf提权
  2. 用excel做机器学习
  3. folium,绘制线段,连接成多边形
  4. 一种三分频电路的实现与仿真
  5. 互联网创业必备工具盘点
  6. 君士坦丁堡升级要点详解
  7. TB-RK3399Pro 找不到网络图标,如何连wifi呢?
  8. 一切归零,一切从这里开始
  9. 共享汽车管理系统设计软便件研究
  10. tomcat一次升级后启动报错的解决,IllegalArgumentException: AJP连接器配置secretRequired=“true“