主题中讨论的其他器件:TIDA-00455、 TDA2、 DS90UB953-Q1、DS90UB913A-Q1、 DS90UB933-Q1、 DS90UB934-Q1、 DS90UB935-Q1、DS90UB960-Q1
我们正在使用此设计中的器件 OV01640传感器和 DS90UB913/914串行器/解串器芯片开发产品。 我的问题:您能否告诉我如何对这些器件中的寄存器映射进行编程? 串行器和解串器? 您使用什么值对寄存器进行编程? 我在该应用手册页面上找不到任何文档或软件链接。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我们正在使用此设计中的器件 OV01640传感器和 DS90UB913/914串行器/解串器芯片开发产品。 我的问题:您能否告诉我如何对这些器件中的寄存器映射进行编程? 串行器和解串器? 您使用什么值对寄存器进行编程? 我在该应用手册页面上找不到任何文档或软件链接。
您好、Brian、
TIDA-00421与 TIDA-00455一起开发。 https://www.ti.com/tool/TIDA-00455 TIDA-00455是4摄像头集线器、采用了连接到 TDA2x EVM 的 DS90UB960。 该系统的最终配置是从 EVM 上的 TDA2 SoC 完成的、当时在 SDK 中受到支持。
OV10640配置文件由 Omnivision 提供。 这已经加载到与 OV490 ISP 关联的闪存中、但也可以通过 I2C 通过 SERDES 链路从处理器加载。 TIDA-00455设计指南介绍了此过程。 https://www.ti.com/lit/pdf/tiducb9
下面是用于设置 DS90UB960和 DS90UB13中寄存器的部分代码。 DS90UB914的设置将非常类似。 您不需要执行任何页寄存器写入、因为 UB914是单个通道部分。 请注意在尝试写入之前释放解串器上的 PDB 后的延迟。 这使得 ADC 有时间读取 IDX 引脚并设置相应的 I2C 地址。
void init_UB960 (void)
{
无符号字符 readVal;
P1OUT |= BIT5; //将 P1.5设置为1 (I2C_SW_UB960)、将开关设置在位置2D+/2D-
P4OUT |= BIT0; //将 PDB_UB960设置为1 ,释放 RESET UB960
__delay_cycles (200000); //等待10ms 的监控器延迟
TSC_WriteI2CReg (UB960_i2c_Address、0x0C、0xCF); //将 FPD-Link 控制通道0+1映射到 I2C 端口0、将2+3映射到 I2C 端口1
TSC_WriteI2CReg (UB960_i2c_Address、0x1F、0x05); // CSI TX 频率800Mbps (400Mbit VCO)
TSC_WriteI2CReg (UB960_i2c_Address、0x10、0x11); //GPIO 0设置为显示输出值= 0;驱动输出低电平
TSC_WriteI2CReg (UB960_i2c_Address、0x11、0x85); //GPIO 1 RX 端口1锁定指示
TSC_WriteI2CReg (UB960_i2c_Address、0x13、0x89); //GPIO 3 RX 端口3锁定指示
TSC_WriteI2CReg (UB960_i2c_Address、0x14、0x8D); //GPIO 4 RX 端口4锁定指示
TSC_WriteI2CReg (UB960_i2c_Address、0x19、0x01); //FS_HIGH_TIME_1
TSC_WriteI2CReg (UB960_i2c_Address、0x1A、0x15); //FS_HIGH_TIME_0
TSC_WriteI2CReg (UB960_i2c_Address、0x1B、0x14); //FS_LOW_TIME_1
TSC_WriteI2CReg (UB960_i2c_Address、0x1C、0x9C); //FS_LOW_TIME_0
TSC_WriteI2CReg (UB960_i2c_Address、0x18、0x01); //启用帧同步
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x01); //页 FPD3端口 RX0寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x58、0x58); //将反向通道速率设置为2.5Mbit/启用 I2C 直通
TSC_WriteI2CReg (UB960_i2c_Address、0x5D、0x60); //成像仪从设备 ID = 0x60
TSC_WriteI2CReg (UB960_i2c_Address、0x65、0x60); //成像仪从别名= 0x60
TSC_WriteI2CReg (UB960_i2c_Address、0x5E、0x51); //EEPROM 从器件 ID = 0x51
TSC_WriteI2CReg (UB960_i2c_Address、0x66、0x51); //EEPROM 从别名、端口0
TSC_WriteI2CReg (UB960_i2c_Address、0x7C、0x01); //在活动视频持续时间内设置帧有效极性低
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x12); //页 FPD3端口 RX1寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x58、0x58); //将反向通道速率设置为2.5Mbit/启用 I2C 直通
TSC_WriteI2CReg (UB960_i2c_Address、0x5D、0x60); //成像仪从设备 ID = 0x60
TSC_WriteI2CReg (UB960_i2c_Address、0x65、0x62); //成像仪从别名= 0x62
TSC_WriteI2CReg (UB960_i2c_Address、0x5E、0x51); //EEPROM 从器件 ID = 0x51
TSC_WriteI2CReg (UB960_i2c_Address、0x66、0x53); //EEPROM 从别名、端口1
TSC_WriteI2CReg (UB960_i2c_Address、0x7C、0x01); //在活动视频持续时间内设置帧有效极性低
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x24); //页 FPD3端口 RX2寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x58、0x58); //将反向通道速率设置为2.5Mbit/启用 I2C 直通
TSC_WriteI2CReg (UB960_i2c_Address、0x5D、0x60); //成像仪从设备 ID = 0x60
TSC_WriteI2CReg (UB960_i2c_Address、0x65、0x64); //成像仪从别名= 0x64
TSC_WriteI2CReg (UB960_i2c_Address、0x5E、0x51); //EEPROM 从器件 ID = 0x51
TSC_WriteI2CReg (UB960_i2c_Address、0x66、0x55); //EEPROM 从别名、端口2
TSC_WriteI2CReg (UB960_i2c_Address、0x7C、0x01); //在活动视频持续时间内设置帧有效极性低
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x38); //页 FPD3端口 RX3寄存器、可读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x58、0x58); //将反向通道速率设置为2.5Mbit/启用 I2C 直通
TSC_WriteI2CReg (UB960_i2c_Address、0x5D、0x60); //成像仪从设备 ID = 0x60
TSC_WriteI2CReg (UB960_i2c_Address、0x65、0x66); //成像仪从别名= 0x66
TSC_WriteI2CReg (UB960_i2c_Address、0x5E、0x51); //EEPROM 从器件 ID = 0x51
TSC_WriteI2CReg (UB960_i2c_Address、0x66、0x57); //EEPROM 从别名、端口3
TSC_WriteI2CReg (UB960_i2c_Address、0x7C、0x01); //在活动视频持续时间内设置帧有效极性低
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x0F); //所有端口均写使能
TSC_WriteI2CReg (UB960_i2c_Address、0x0F、0x00); //禁用所有 GPIO 输入
TSC_WriteI2CReg (UB960_i2c_Address、0x6E、0x88); //对于全部四个摄像头、将 GPIO1 (nReset)和 GPIO0 (fsin)设置为0
TSC_WriteI2CReg (UB960_i2c_Address、0x6f、0x88); // 对全部四个摄像头将 GPIO3和 GPIO2设置为0
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x01); //页 FPD3端口 RX0寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x70、0x2B); //RAW10_ID:MSB:00:将 VC 0分配给 RX0 CSI 数据类型:(0x2B 与 CSI 规范匹配)
TSC_WriteI2CReg (UB960_i2c_Address、0x71、0x2C); //RAW12_ID:MSB:00:将 VC 0分配给 RX0 CSI 数据类型:(0x2C 与 CSI 规范匹配)
TSC_WriteI2CReg (UB960_i2c_Address、0x72、0x00); // CSI_VC_MAP:将所有输入数据包从 RX0重新映射到 VC_ID0
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x12); //页 FPD3端口 RX1寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x70、0x6B); //RAW10_ID:MSB:01:将 VC 1分配给 RX1 CSI 数据类型:(0x2B 与 CSI 规范匹配)
TSC_WriteI2CReg (UB960_i2c_Address、0x71、0x6C); //RAW12_ID:MSB:01:将 VC 1分配给 RX1 CSI 数据类型:(0x2C 与 CSI 规范匹配)
TSC_WriteI2CReg (UB960_i2c_Address、0x72、0x01); //CSI_VC_MAP:将所有输入数据包从 RX1重新映射到 VC_ID1
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x24); //页 FPD3端口 RX2寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x70、0x2B); //RAW10_ID:MSB:00:将 VC 0分配给 RX2 CSI 数据类型:(0x2B 与 CSI 规范匹配)
TSC_WriteI2CReg (UB960_i2c_Address、0x71、0x2C); //RAW12_ID:MSB:00:将 VC 0分配给 RX2 CSI 数据类型:(0x2C 与 CSI 规范匹配)
TSC_WriteI2CReg (UB960_i2c_Address、0x72、0x00); // CSI_VC_MAP:将所有输入数据包从 RX2重新映射到 VC_ID0
TSC_WriteI2CReg (UB960_i2c_Address、0x4C、0x38); //页 FPD3端口 RX3寄存器、可读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x70、0x6B); //RAW10_ID:MSB:01:将 VC 1分配给 RX3 CSI 数据类型:(0x2B 与 CSI 规范匹配)
TSC_WriteI2CReg (UB960_i2c_Address、0x71、0x6C); //RAW12_ID:MSB:01:将 VC 1分配给 RX3 CSI 数据类型:(0x2C 与 CSI 规范匹配)
TSC_WriteI2CReg (UB960_i2c_Address、0x72、0x01); // CSI_VC_MAP:将所有输入数据包从 RX3重新映射到 VC_ID1
TSC_WriteI2CReg (UB960_i2c_Address、0x32、0x01); //从 CSI 端口0读取,向 CSI 端口0写入
TSC_WriteI2CReg (UB960_i2c_Address、0x33、0x01); //启用 CSI 端口0、4通道、 正常工作
TSC_WriteI2CReg (UB960_i2c_Address、0x32、0x12); //从 CSI 端口1读取,向 CSI 端口1写入
TSC_WriteI2CReg (UB960_i2c_Address、0x33、0x01); //启用 CSI 端口1、4通道、 正常工作
TSC_WriteI2CReg (UB960_i2c_Address、0x20、0x0C); //VC 0+1路由到 CSI 端口0、VC 2+3路由到 CSI 端口1
P1OUT &=~BIT5; //将 P1.5设置为0 (I2C_SW_UB960)、将开关设置在位置1D+/1D-
}
void ENABLE_fsin (void)
{
P1OUT |= BIT5;
TSC_WriteI2CReg (UB960_i2c_Address、0x4c、0x01); //页 FPD3端口 RX0寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x6e、0x9a); //保持摄像头0的 GPIO1为1;GPIO0上的输出帧同步
TSC_WriteI2CReg (UB960_i2c_Address、0x4c、0x12); //页 FPD3端口 RX1寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x6e、0x9a); //保持摄像头0的 GPIO1为1;GPIO0上的输出帧同步
TSC_WriteI2CReg (UB960_i2c_Address、0x4c、0x24); //页 FPD3端口 RX2寄存器、用于读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x6e、0x9a); //保持摄像头0的 GPIO1为1;GPIO0上的输出帧同步
TSC_WriteI2CReg (UB960_i2c_Address、0x4c、0x38); //页 FPD3端口 RX3寄存器、可读/写
TSC_WriteI2CReg (UB960_i2c_Address、0x6e、0x9a); //保持摄像头0的 GPIO1为1;GPIO0上的输出帧同步
TSC_WriteI2CReg (UB960_i2c_Address、0x10、0x91); //GPIO 0设置为传递生成的帧同步信号
P1OUT &=~BIT5;
}
感谢 Brian 这可以提供帮助。 我还有一个关于模式引脚在'914上设置10/12位和 hi/lo freq 的问题。 它由电阻器值设置、但在寄存器映射寄存器0x1F 中。 MODE 和 OSS 选择、意味着 MODE 设置来自反向通道上的远程 SER。 如果是这样、那么914上的 MODE 引脚电阻值是否重要? 如果模式设置是由"913决定的、它是否可以保持悬空?
此致、Brian
感谢 Brian 这可以提供帮助。 我还有一个关于模式引脚在'914上设置10/12位和 hi/lo freq 的问题。 它由电阻器值设置、但在寄存器映射寄存器0x1F 中。 MODE 和 OSS 选择、意味着 MODE 设置来自反向通道上的远程 SER。 如果是这样、那么914上的 MODE 引脚电阻值是否重要? 如果模式设置是由"913决定的、它是否可以保持悬空?
此致、Brian
您好、Brian、
我认为此处的最佳实践是使用电阻分压器设置引脚的值、如数据表中所示。 您可以在引导购买更改寄存器后覆盖此设置。
顺便说一下、您是否见过有关迁移到较新部件集的应用手册? https://www.ti.com/lit/pdf/snla286
此致、
布赖恩
Brian、您好!
DS90UB960-Q1兼容所有其他 FPD-Link III 摄像头、包括 DS90UB913A-Q1、DS90UB933-Q1、DS90UB935-Q1或 DS90UB953-Q1串行器。 此时、具有像素总线(DVP)接口的解串器被视为是传统器件、因此我们的产品系列中仅包含 DS90UB14A-Q1或 DS90UB934-Q1解串器、没有计划使用该接口的下一代解串器。 从技术上讲、也可以将这些器件与 DS90UB935-Q1或 DS90UB953-Q1链接、但有特定的时钟要求。 有关信息、请访问: https://www.ti.com/lit/pdf/snla270#:~:text=The%20DS90UB953%2DQ1%20is%20capable,previous%20generation%20DS90UB914A%2DQ1%20deserializers。
此致、
Casey