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.

DS90UB947-Q1: DS90UB947-Q1

Part Number: DS90UB947-Q1

Dear Team

我在做DS90UB947 与 948 的配对中遇到了问题。配置做gpio0 2 3的透传,gpio2 和3的电平可以过去到948,但是gpio0不行,示波器测量过947的gpio0输入是有的,读947的 0x1c,bit0也是会根据我输入的电平变化,
947 reg:0x1e val:0x1  948 reg:0x34 val:0x1,端口都是选择了port0,一直想不通同样的配置为什么gpio2 和3可以透传,gpio0不行,用的是dual link。

  • 如果配置GPIO0的话,serializer端需要配置寄存器0X0D,而deserializer端需要配置0x1D。

    947 reg:0x1e val:0x1  948 reg:0x34 val:0x1

    所以我看到您配置的是寄存器0X1E,所以我怀疑您这边是GPIO0的寄存器配置错了。

    GPIO0的配置是947这边应该配置0x0D,948这边应该配置0x1D。

  • 你好,在上面的基础我已经是配置947:0xd=0x3,948:0x1d=0x5,是不行的,datasheet已经看啦两遍,很多寄存器都配过一遍都不行,但是GPIO2 和GPIO3按照手册配,马上就透传到948输出了,所以想请问一下,GPIO0是不是有什么特殊的配置才能使用透传,我使用的是两路LVDS输入和两路LVDS输出的DUAL LINK

  • 你好,不生效的原因找到了,因为我还要使用I2S_DA,所以之前配置了947的0x12=0x2,所以控制不了GPIO0,但是声音如果0x12不等于0x2,我声音数据就过不去948的I2S_DA了,请问怎么解决这个冲突。

  • 您好,I2S_DA 和GPIO6_REG是共用一个引脚的, 和GPIO0不是共用一个引脚,是怎么和GPIO0冲突的? 

  • 当我设置947的0x12=0x2,(Enable I2S Data Forward Channel Frame transport.),这个时候GPIO0的透传就失效,然后声音的数据(DA,CLK,WS信号)可以过去到948,反之,GPIO0可以透传,但是声音数据过不去948,只有时钟信号I2S_CLK可以到948,DA和WS都没有信号到948.

  • 您好,看下948的寄存器0x28是不是配置的bit3=1 I2S的路径为GPIO0和GPIO1?

  • 948的datasheet也看了两遍,这里确实是0,所以想不明白,为什么设置一个I2S的传输模式会影响到GPIO0,目前没有解决方案

  • 还有一个问题想请教一下的是,如果是I2S Data Island transport的传输模式,我测了948的输出信号,I2S_WC的信号有很多杂乱的波形,导致声音播放不正常(DA和CLK的波形正常),

  • 948的datasheet也看了两遍,这里确实是0

    您好,这确实是一个奇怪的现象。

    I2S_DA是和GPIO6 引脚复用,既然0x28 bit3并没有使能I2S 输出在GPIO0上,但实际GPIO0不能透传确实很奇怪。

    您配置GPIO6的寄存器,0x20 bit5 是否配置为1?将GPIO 6 方向配置为输出,确认下?同时看下I2S_DA/GPIO6 引脚是否有输出?

  • 您好, 948的0x20=0。,使用功能模式输出。根据您的方式配置了GPIO6输出高低电平都是正常输出。

    目前我使用是GPIO0透传控制背光,I2S_DA ,CLK,WC,传输音频,给您整理一下我现在遇到的几个问题,

    1、947:0x12=0x2,GPIO0透传失效,948的I2S_DA ,CLK,WC,三个引脚信号输出正常,声音正常。948的0x28=0x10.

    2、947:0x12=0x0, 0x4=0x90,GPIO0透传成功,948的I2S_DA,CLK引脚输出正常,WC输出波形频率不等于我采样频率,声音异常。

    3、这个是最奇怪的,当947:0x54的bit0=1时,(手册上面该bit的描述是Reserved)GPIO0透传失败,0x12=0x0也没法透传成功,948的0x28=0x10.

  • 这样配置试试:

    947:

    0x0D=0x3(GPIO0 input),

    0x12=0x2( I2S Data Forward Channel Frame transport.)

    0x54=0x02

    0x1A=0x0或者0x3 (Enable 5.1- or 7.1-channel I2S audio transport:)

    948:

    0x1D =0x9(GPIO0 output high), 

    0x20=0x00,

    0x28=0x10 

  • 你好,这样的话,声音可以正常,背光GPIO0可以拉高拉低。显示OK。一旦1d配成0x5做PWM就黑掉不受控制。

  • 其实这个就是我一开始的配置,后面因为要透传GPIO0做PWM。才发现这些问题,而且看了几天也没看出来为什么声音和GPIO0冲突了。

  • 你好,这样的话,声音可以正常,背光GPIO0可以拉高拉低。显示OK。一旦1d配成0x5做PWM就黑掉不受控制。

    您好,再补充一下,947的GPIO0 配置为input,948的GPIO0配置为输出,即0x1D=0x5.

    此时PWM信号给GPIO0 输入,配置947的0x12 video mode,这将会自动加载到948端,配置完0x12后,这里看下GPIO0是否输出低电平?另外可以通过948的寄存器0x22 bit2 检查下是否已经自动加载到948端。

    这里加一个寄存器的配置,即947的0x20=0x8A (Forcing deserializer capabilities)

    948这边0x28 改成默认值0x20. 上面我看配置的都是0x10. 建议改成0x20.

    另外,948的寄存器0x34 bit6=1,RX_LOCK 为当948检测到和947连接时,即使没有video信号。 这时可以监测PWM信号了。

    以上就是完成的使用GPIO0 透传PWM信号的过程。麻烦验证下。

  • 你好,设置947的 0x12=0x6以后,使用18bitvideo mode 和I2S Data Forward Channel Frame transport再加上0x20=0x8A,确实可以透传和放声音一起了,我想请问下为什么是设置18bit video,原理是什么?这样会不会对视频数据有什么影响?

  • 你好,刚才做了测试发现,播放声音的时候948的GPIO0输出信号会有轻微震动,如果输出的PWM占空比在10%-20%左右(低亮度)时,播放声音时背光亮度就会微微的亮一下,播一下就亮一下~~~从现象看是GPIO0的输出信号还是受到了影响。

  • 好的,我这边会再看下您的问题。

  • 早上好朋友,我发现了比较严重的问题,如下:

    我反复开关机上电,按照上述的配置有大概出现异常,异常表现为:

    异常时:当947 的 0x1a=0x3,上电会闪屏幕,示波器检查GPIO0的信号输出已经是杂乱的波形

                  当947 的 0x1a=0x0,上电是黑屏,示波器检查GPIO0的信号输出的波形幅值是正常的一半不到,表现是黑屏(比如正常幅值占2示波器个方格,这时1格不到。

    正常时:GPIO0输出正常,播放声音时GPIO0波形会有轻微的跳动。

    (PS:由于我这边是dual link,所以如果948的0x20=0x20,整个屏幕会出现大量线条然后花屏)

  • 您好,按照上面的配置,如果不是频繁开关机反复上电,基本上正常的,只是播放声音时GPIO0的波形有轻微跳动是吗?

    反复开关机上电,出现了异常是吗?

    那应该是和寄存器的配置是无关的,反复上电,每次是否都是按照数据手册合理的上掉电时序?

  • 也不算是完全正常。比如放上6个小时第一次开机就会异常,正常情况下播放声音GPIO0会跳动。

    947的上电时序我有加,我不知道是否寄存器配置的先后顺序会不会有问题?

  • 我不知道是否寄存器配置的先后顺序会不会有问题?

    异常时候 可以通过读取寄存器0x50 bit4 看下是否初始化已经完成。

    另外,上电顺序以及上电完成后需要配置的寄存器datasheet中都有给出,建议示波器测量下是否符合时序要求:

  • 你好朋友,异常或者正常947的0x50=0x16。

    关于时序问题,我这边做了一个测试,947:0x12=0,0x4=0x90,(GPIO0透传正常,WC输出异常),这种情况下我反复上电几十次都不会有闪屏和黑屏的现象,想请教下,能否基于这种模式的配置下,怎么配置可以修正WC的输出?

    (PS:你给的配置上0x12=0x6,0x20=0x8A,我在代码做过各种delay,有US,MS,最长试过delay 1S,都会出现异常)

  • 您好,WC异常的波形可以看下吗?我去确认下这个问题。

    另外,您参考下这个帖子,是不是和您目前遇到的问题类似:

    https://e2e.ti.com/support/interface-group/interface/f/interface-forum/922304/ds90ub949-q1-i2s-and-gpio-conflict

  • 你好朋友;

    图一WC输入947,左右声道采样率一致。

    图二948输出,波形被改变。

    (PS:贴子问题类似,建议的是采用D_gpio,但是我这目前没使用到,没有看到比较明显的解决方案)

  • 好的,收到,我去确认一下。 如有收到回复会立即同通知您。

  • 你好朋友;

    谢谢,期待您的回复,搞了好久一直卡住在这声音和透传。

  • 好的,这边收到,一旦有收到回复,我也会立即通道到您。

  • 您好,下面是美国工程师的回复:

    GPIO0 pass through failed. But the I2S_DA ,CLK,WC of DS90UB948 output normally

    When Register 0x12 is set to 0x2, I2S is transported via forward channel frame. Because GPIO0 maps to the forward channel, GPIO0 will be occupied by I2S data.

    如果0x12=0x2的话,I2S信号是通过正向通道传输的,由于GPIO0 映射的是正向通道,GPIO0信号会被I2S信号占用,所以GPIO0 透传失败。

    if 0x54 bit0=1 of DS90UB947( datasheet described this bit is Reserved)

    If datasheet labels the bit as reserved, it is recommended to not drive any signal. 如果datasheet中标注这bit为Reserved,推荐是它不驱动任何信号。

    Can you explain what you mean by GPIO0 pass-through? Are you sending other information besides I2S through the forward channel?

    您能解释下为什么是GPIO0透传吗?I2S通过正向通道传输,还能分享些其他的信息吗?

    For the I2S connection, what pins are you using for using forward channel and data island mode? This will help me analyze the setup.

    您使用正向通道传输和data island传输都是使用哪几个引脚连接的I2S信号?这有助于帮助分析。

  • 你好朋友,感谢支持,目前使用的是SOC-》947-》948-》屏幕和背光芯片,使用GPIO0透传PWM,是因为客户的定制开发板所定义,使用的引脚如下:

    947:I2S_WC,I2S_CLK,I2S_DA用于音频输入,GPIO2,GPIO3控制屏幕和背光芯片的使能(直接在SOC由I2C Pass All拉高948本地输出,不需要透传),GPIO0必须做透传控制PWM输出;

    948:I2S_WC,I2S_CLK,I2S_DA用于音频输出,GPIO0由透传PWM控制输出到背光芯片;

    当我使用947:0x12=0,0x4=0x90时,GPIO0透传成功,I2S_CLK,I2S_DA输出也正常,但是I2S_WC输出波形混乱异常。

  • 您好,麻烦附上948和947的寄存器配置。

    另外,I2S_WC 多次操作也是这样输出频率不正确吗?

    另外,就是如果采用island transport 传输的话,可能会与 GPIO 2和3发生意外交互。GPIO 2和3与 I2S_DC 和 I2S_DD 共用。这可能是在 I2S 中使用正向通道传输时音频没有问题的原因。是否可以尝试使用其他未与 I2S 共享的 GPIO 引脚?

  • 你好,

    1、配置如下:

    947:

    0x17 = 0x9e;

    0x03 = 0xda;

    0x12 = 0x0;

    0x04 = 0x90;

    0x54 = 0x0;(上电默认是0x54 = 0x3,要手动配置bit0)

    0x4F = 0x80;

    0x5b = 0x23;

    0xc2 = 0x80;

    948:

    0x1d = 0x05;

    0x1e = 0x09<<4;

    0x1f = 0x09;

    0x49 = 0xe0;

    0x34 = 0x09;

    2、在此模式下,多次操作,WC波形都是混乱没有成功一次

    3、尝试其他引脚是指哪些?手册上面描述GPIO0-3是通用GPIO使用,所以客户定制板子是根据着来的

  • 是的,GPIO0-3是通用应用, 也与 I2S 共享。将 GPIO2-3用于正向通道应该不会出现任何问题,但我想看看是否发生了异常情况。

    您能否解释为什么启用0x54 bit0?为了传递来自 I2S 引脚的音频、bit1应该被启用。您是否尝试使用0x54 = 0x2进行测试?

    如何测量输出 I2S_WC?您是否在948上探测 GPIO7/I2S_WC?

  • 你好朋友,0x54=0x2和0x0的效果是一样的,这个我反复的做过测试没有太明显的变化,

    1、“将 GPIO2-3用于正向通道应该不会出现任何问题”您的意思是将GPIO0的PWM透传换过来GPIO2或者3透传使用吗?

    2、或者说要使用D_GPIO0 2 3来代替GPIO0 2 3?在现有基础上无法解决声音和透传吗?

    3、I2S_WC的测量就是上面给到的图片,第一张是947的WC输入,第二张不规则的就是948的WC输出(GPIO7);