TI中文支持网
TI专业的中文技术问题搜集分享网站

DS90UB941AS-Q1: 图形生成器使用外部时钟和外部时序的配置

Part Number:DS90UB941AS-Q1Other Parts Discussed in Thread:SN65DSI83

您好,前两天我们使用内部时钟和内部时序的图形生成器点亮了屏幕,应用简图如下:

然后按照启动指南手册里的:

1 下一步需要使用DSI 时钟和内部时序来使能图形生成器。

2 如果ok,那么再下一步需要使用DSI 时钟和DSI timing来使能图形生成器

我们将MIPI DSI源配置为视频模式,突发模式,连续时钟模式

——————————————————————————————-

对于寄存器的配置有些不确定的地方:

1. 使用DSI 时钟和内部时序这一步相对于内部时钟、内部时序图形生成器的寄存器配置,是不是仅需要将寄存器0x65的bit3 设为1就行了?还需要其他设置吗?

2. 再下一步使用DSI 时钟和DSI timing是不是也仅需要将寄存器0x65的bit2 设为0?还需要其他设置吗?

谢谢!

Kailyn Chen:

您好,关于内部pattern生成图形的配置,建议您可以参考这篇Exploring the Int Test Pattern Generation Feature of FPDLink III IVI Devices应用手册,其中第四章节给出了配置示例,可以参考下:

https://www.ti.com/lit/an/snla132g/snla132g.pdf

有任何问题,我们再讨论。

,

r m:

我将PGCFG register 0x65[3] 设为 1,使用内部时序,dsi时钟,使能图形生成器能正常输出图像,

然后将PGCFG register 0x65[2] 设为 0,使用dsi时序,dsi时钟,使能图形生成器此时屏幕没有任何显示。

此时按照手册中去建议排查寄存器DSI_VC_DTYPE (addr = 0x2a),value = 0x3e 

不知道是哪里有问题,可以给一些建议吗?谢谢

,

Kailyn Chen:

0x65[2] 设为 0,那么SER端有接外部视频原来提供控制信号(HS,VS,DE)吗?

下面是pattern的几种配置,比如第一种就是外部提供PCLK, 外部提供控制信号的例子。

,

r m:

是的,有连接,我们连接了SoC 的DSI,并且DSI源配置为视频模式,突发模式,连续时钟模式

,

Kailyn Chen:

您好,可以将您使用外部timing配置的寄存器附上,我这边看下。

,

r m:

外部timing,外部clock的配置如下

#!/bin/bash

# 800x480p60, Dual Link FPD III# PCLK = 33.264MHz# DSI clock = 99.792MHz# DSI Lane Speed = 199.584Mbps/lane# 4 Lanes DSI# DSI input port 0# Pattern Generator Mode# external clock and external timing# use i2c-tools to debug

set -e

I2C_BUS_NUMBER=1UB941AS_ADDR=0x12UB928_ADDR=0x2c

# Disable DSIi2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x01 0x08

# Select FPD-Link III Port 0 (default port0)i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x1E 0x01

# i2c pass throughi2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x03 0xba

# 1. Set Pixel Clock and Active Frame Size # pixe clock = 33.264MHz divider = 200/33.264 ≈ 6# hactive = 800 vactive = 480#

i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x03i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x06

i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x07i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x20

i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x08i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x03

i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x09i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x1E

# 2. Set Total Frame Size# Total H Width = 40(hback porch) + 800(hactive) + 40(hfront porch) + 48(hsync len)# = 928 = 0011 1010 0000# Total V Width = 31(vback porch) + 480(vactive) + 13(vfront porch) + 1(vsync len)# = 525 = 0010 0000 1101#i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x04i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0xA0

i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x05i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0xD3

i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x06i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x20

# 3. Set Back Porch# H Back Porch = 40 = 0010 1000# V Back Porch = 31 = 0001 1111i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x0Ci2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x28

i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x0Di2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x1F

# 4. Set Sync Widths# H Sync Width = 48 = 0011 0000# V Sync Width = 1 = 0000 0001i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x0Ai2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x30

i2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x0Bi2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x01

# 5. Set Sync Polaritiesi2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x66 0x0Ei2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x67 0x03

# 6. Enable Pattern Generation# reverse colori2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x65 0x02

# set color and enable Pattern Generatori2cset -y -f -r $I2C_BUS_NUMBER $UB941AS_ADDR 0x64 0xd1

,

Kailyn Chen:

你好,我看了下您的寄存器,前面分辨率都配置的没问题,

最后设置color的时候,0x64=0xD1,bit7:4=1101, 1101: Vertically Scaled Black to Blue/White to Yellow

我理解的这个是个color bar彩条,所以bit2我认为应该enable color bar。

我看您配置的是0XD1,建议配置为0xD5验证下。

,

r m:

您好,因为我们使用外部clcok和內部timing时,0x64也是设置的0xD1,能够正常显示。

然后彩条这个配置我在dsi clcok和內部timing刚也去试过了,配置bit2不影响最终是否有显示,只是显示条状的颜色柱或者是渐变颜色。

但在外部dsi timing,外部dsi clock时仍然没有显示。

感觉是dsi源有问题,但不知道问题在哪,或者有什么办法能确认dsi的哪里不满足要求?

,

Kailyn Chen:

是的,我认为也是DSI 源的时序不匹配,我看了下数据手册的寄存器,并没有发现能状态寄存器能说明DSI源有问题的。

在video timing mode中,有下面的介绍:如果 VS 上不存在垂直同步信号、则图形发生器会检测非活动像素时钟的数量(DE = 0)何时超过检测到的活动行长度的两倍来确定垂直消隐.  所以您确认下是不是这里的问题:

,

r m:

好的,我们先去检查一下看看。

另外有个问题不知道方便帮我们确认一下吗:

我们前一阵子调试过sn65dsi83芯片,sn65dsi83在linux内核中有现成的驱动程序,已经调通点亮屏幕。

由于941没有驱动,所以我们是修改sn65dsi83的驱动使得SoC输出了同样的dsi(dsi源为视频模式,突发模式,连续时钟模式)给到941使用。

也就是将sn65dsi83的dsi输入给到941使用,理论上是不是应该能直接使用而不需要额外修改dsi源?

,

Kailyn Chen:

您好,一般是视频源直接给941使用,修改的话是修改了哪些部分呢,另外,那DSI83的DSI输入是什么数据格式?是不是941的没有配置成对应的数据格式?

,

r m:

基本上修改的只是寄存器配置,dsi源保持和dsi83使用的是一致的,没有去改动。

dsi 输入配置如下:

         

          dsi lane =4

          dsi format = RGB888

          dsi mode = video mode,burst mode (默认是连续时钟模式,因为只有一个非连续时钟的标志位,所以不需要配)

上面之前回复的寄存器配置中,941我们也是按照dsi的格式去配的。

另外,以下是内核中dsi模式可配置的选项:

,

Kailyn Chen:

您好,关于您的这个问题,我再确认下,尽快给您答复。

,

r m:

您好,我们在941的驱动修改了一些内容,寄存器配置也修改了一些,使用dsi已经能够成功点亮屏幕了,谢谢!

,

Kailyn Chen:

非常感谢您的反馈,后续有其他问题,再讨论。

赞(0)
未经允许不得转载:TI中文支持网 » DS90UB941AS-Q1: 图形生成器使用外部时钟和外部时序的配置
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1