RK3588 HDMI 不能获取EDID

目录

命令获取EDID信息

默认地址0x50

I2C 协议分析

正常端口读取0x0

正常端口读取0x50

正常端口读取0x55

异常端口读取0x0

异常端口读取0x50

异常端口读取0x55

总结

3588 官方设计参考

单板设计

结论


命令获取EDID信息

主要方便测量信号

两个DDC ,分别为i2c-9和i2c-10,对应两个HDMI 控制器。

i2cdetect -l
i2c-3   i2c             rk3x-i2c                                I2C adapter
i2c-10  i2c             ddc                                     I2C adapter
i2c-1   i2c             rk3x-i2c                                I2C adapter
i2c-8   i2c             rk3x-i2c                                I2C adapter
i2c-6   i2c             rk3x-i2c                                I2C adapter
i2c-13  i2c             igb BB                                  I2C adapter
i2c-4   i2c             rk3x-i2c                                I2C adapter
i2c-11  i2c             igb BB                                  I2C adapter
i2c-2   i2c             rk3x-i2c                                I2C adapter
i2c-0   i2c             rk3x-i2c                                I2C adapter
i2c-9   i2c             ddc                                     I2C adapter
i2c-7   i2c             rk3x-i2c                                I2C adapter
i2c-14  i2c             igb BB                                  I2C adapter
i2c-12  i2c             igb BB                                  I2C adapter
i2cdetect -y 9
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 31 -- 33 -- 35 -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- 52 -- 54 55 -- 57 -- 59 -- 5b 5c -- 5e --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@kylin:~# i2cdetect -y 10
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 31 32 33 34 35 36 -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

默认地址0x50

I2C 总线10下的设备不能读到,即存在故障。

i2ctransfer -y 9  w1@0x50 0x00 r128 | edid-decode

 i2ctransfer -y 10 w1@0x50 0x00 r128 | edid-decode
Error: Sending messages failed: Input/output error
EDID extract of 'stdin' failed
root@kylin:~# i2ctransfer -y 9  w1@0x50 0x00 r128 | edid-decode
edid-decode (hex):

00 ff ff ff ff ff ff 00 05 e3 79 28 2a 04 00 00
01 1b 01 03 80 3e 22 78 2a 08 a5 a2 57 4f a2 28
0f 50 54 bf ef 00 d1 c0 b3 00 95 00 81 80 81 40
81 c0 01 01 01 01 4d d0 00 a0 f0 70 3e 80 30 20
35 00 6d 55 21 00 00 1a a3 66 00 a0 f0 70 1f 80
30 20 35 00 6d 55 21 00 00 1a 00 00 00 fc 00 55
32 38 37 39 47 36 0a 20 20 20 20 20 00 00 00 fd
00 17 50 1e 8c 3c 00 0a 20 20 20 20 20 20 01 bf

----------------

EDID version: 1.3
Manufacturer: AOC Model 10361 Serial Number 1066
Made in week 1 of 2017
Digital display
Maximum image size: 62 cm x 34 cm
Gamma: 2.20
DPMS levels: Off
RGB color display
First detailed timing is preferred timing
Color Characteristics
  Red:   0.6328, 0.3398
  Green: 0.3105, 0.6328
  Blue:  0.1582, 0.0605
  White: 0.3134, 0.3291
Established Timings I & II
    720x400    70.082 Hz   9:5    31.467 kHz  28.320 MHz (IBM)
    640x480    59.940 Hz   4:3    31.469 kHz  25.175 MHz (DMT)
    640x480    66.667 Hz   4:3    35.000 kHz  30.240 MHz (Apple)
    640x480    72.809 Hz   4:3    37.861 kHz  31.500 MHz (DMT)
    640x480    75.000 Hz   4:3    37.500 kHz  31.500 MHz (DMT)
    800x600    56.250 Hz   4:3    35.156 kHz  36.000 MHz (DMT)
    800x600    60.317 Hz   4:3    37.879 kHz  40.000 MHz (DMT)
    800x600    72.188 Hz   4:3    48.077 kHz  50.000 MHz (DMT)
    800x600    75.000 Hz   4:3    46.875 kHz  49.500 MHz (DMT)
    832x624    74.551 Hz   4:3    49.726 kHz  57.284 MHz (Apple)
   1024x768    60.004 Hz   4:3    48.363 kHz  65.000 MHz (DMT)
   1024x768    70.069 Hz   4:3    56.476 kHz  75.000 MHz (DMT)
   1024x768    75.029 Hz   4:3    60.023 kHz  78.750 MHz (DMT)
   1280x1024   75.025 Hz   5:4    79.976 kHz 135.000 MHz (DMT)
Standard Timings
   1920x1080   60.000 Hz  16:9    67.500 kHz 148.500 MHz (DMT)
   1680x1050   59.954 Hz  16:10   65.290 kHz 146.250 MHz (DMT)
   1440x900    59.887 Hz  16:10   55.935 kHz 106.500 MHz (DMT)
   1280x1024   60.020 Hz   5:4    63.981 kHz 108.000 MHz (DMT)
   1280x960    60.000 Hz   4:3    60.000 kHz 108.000 MHz (DMT)
   1280x720    60.000 Hz  16:9    45.000 kHz  74.250 MHz (DMT)
Detailed mode: Clock 533.250 MHz, 621 mm x 341 mm
               3840 3888 3920 4000 ( 48  32  80)
               2160 2163 2168 2222 (  3   5  54)
               +hsync -vsync
               VertFreq: 59.997 Hz, HorFreq: 133.312 kHz
Detailed mode: Clock 262.750 MHz, 621 mm x 341 mm
               3840 3888 3920 4000 ( 48  32  80)
               2160 2163 2168 2191 (  3   5  23)
               +hsync -vsync
               VertFreq: 29.981 Hz, HorFreq: 65.688 kHz
Display Product Name: U2879G6
Display Range Limits
  Monitor ranges (GTF): 23-80 Hz V, 30-140 kHz H, max dotclock 600 MHz
Has 1 extension block
Checksum: 0xbf

I2C 协议分析

正常端口读取0x0

i2ctransfer -y 9 w1@0x50 0x00 r1

0x0

正常端口读取0x50

i2ctransfer -y 9 w1@0x50 0x50 r1

0x30

正常端口读取0x55

i2ctransfer -y 9 w1@0x50 0x55 r1

0x55

从图中可以看出从设备对信号的幅度控制更低。

阶段一:写操作(发送 0x55)
起始条件:SCL 高电平期间,SDA 从高电平跳变到低电平

第 1 个 SCL 周期:SDA 为高电平(地址 bit7 = 1)

第 2 个 SCL 周期:SDA 为低电平(地址 bit6 = 0)

第 3 个 SCL 周期:SDA 为高电平(地址 bit5 = 1)

第 4 个 SCL 周期:SDA 为低电平(地址 bit4 = 0)

第 5 个 SCL 周期:SDA 为低电平(地址 bit3 = 0)

第 6 个 SCL 周期:SDA 为低电平(地址 bit2 = 0)

第 7 个 SCL 周期:SDA 为低电平(地址 bit1 = 0)

第 8 个 SCL 周期:SDA 为低电平(地址 bit0 = 0,此时主设备发送的是 0xA0,即 0x50 地址加写位)

第 9 个 SCL 周期:从设备将 SDA 拉低(ACK 应答)

第 10 个 SCL 周期:SDA 为低电平(数据 bit7 = 0)

第 11 个 SCL 周期:SDA 为高电平(数据 bit6 = 1)

第 12 个 SCL 周期:SDA 为低电平(数据 bit5 = 0)

第 13 个 SCL 周期:SDA 为高电平(数据 bit4 = 1)

第 14 个 SCL 周期:SDA 为低电平(数据 bit3 = 0)

第 15 个 SCL 周期:SDA 为高电平(数据 bit2 = 1)

第 16 个 SCL 周期:SDA 为低电平(数据 bit1 = 0)

第 17 个 SCL 周期:SDA 为高电平(数据 bit0 = 1,主设备发送的数据是 0x55)

第 18 个 SCL 周期:从设备将 SDA 拉低(ACK 应答)

停止条件:SCL 高电平期间,SDA 从低电平跳变到高电平

阶段二:读操作(返回 0x55)
起始条件:SCL 高电平期间,SDA 从高电平跳变到低电平(重复起始)

第 19 个 SCL 周期:SDA 为高电平(地址 bit7 = 1)

第 20 个 SCL 周期:SDA 为低电平(地址 bit6 = 0)

第 21 个 SCL 周期:SDA 为高电平(地址 bit5 = 1)

第 22 个 SCL 周期:SDA 为低电平(地址 bit4 = 0)

第 23 个 SCL 周期:SDA 为低电平(地址 bit3 = 0)

第 24 个 SCL 周期:SDA 为低电平(地址 bit2 = 0)

第 25 个 SCL 周期:SDA 为低电平(地址 bit1 = 0)

第 26 个 SCL 周期:SDA 为高电平(地址 bit0 = 1,此时主设备发送的是 0xA1,即 0x50 地址加读位)

第 27 个 SCL 周期:从设备将 SDA 拉低(ACK 应答)

第 28 个 SCL 周期:从设备将 SDA 拉低(数据 bit7 = 0)

第 29 个 SCL 周期:从设备将 SDA 拉高(数据 bit6 = 1)

第 30 个 SCL 周期:从设备将 SDA 拉低(数据 bit5 = 0)

第 31 个 SCL 周期:从设备将 SDA 拉高(数据 bit4 = 1)

第 32 个 SCL 周期:从设备将 SDA 拉低(数据 bit3 = 0)

第 33 个 SCL 周期:从设备将 SDA 拉高(数据 bit2 = 1)

第 34 个 SCL 周期:从设备将 SDA 拉低(数据 bit1 = 0)

第 35 个 SCL 周期:从设备将 SDA 拉高(数据 bit0 = 1,从设备返回的数据是 0x55)

第 36 个 SCL 周期:主设备将 SDA 拉高(NACK,表示读取结束)

停止条件:SCL 高电平期间,SDA 从低电平跳变到高电平

异常端口读取0x0

i2ctransfer -y 10 w1@0x50 0x00 r1

异常端口读取0x50

i2ctransfer -y 10 w1@0x50 0x50 r1

异常端口读取0x55

i2ctransfer -y 10 w1@0x50 0x55 r1

Error: Sending messages failed: Input/output error

总结

异常端口时,在主发送完设备地址后,没有设备将SDA拉低进行响应。

3588 官方设计参考

3588 IO BANK的工作电压有1.8v、3.3v等。而HDMI I2C工作电源为5V。因而需要电平转换,官方给出的参考设计电路如下。电平转换前后的两个上拉电阻值,分别为10K和1.8K。

2SK3018 MOS管。

单板设计

   由于各个单板的接口差异,导致例如3V bank下的IO 管脚不够,进而采用其他电平的,例如1.8V等。这时候参考设计可能真的只能参考不能照抄。

  而实际这种情况在各个单板设计都会存在,例如某个器件选型,工作的电流、电压等参数值发生变化,或者电路路径发生变化,参考设计仅仅表示链路这样的,但是具体的阻值、电容容量、数目等需要具体情况具体分析

结论

      I2C 读写不通、拉死等很大比例都和上拉电阻相关。比如有的时候10K可以。有的时候需要改到4.7K才能正常通信。 2.2K的电阻值在很多产品中兼容良好,但只有改到4.7K后才兼容了更多产品。何种场景需要驱动能力强,何种场景需要驱动能力弱,这在硬件设计应该有个基本的套路吧,软件就不深入研究了。回到上述问题,我们在改电阻值的过程中,某些电阻值虽然可以读到EDID,但会报如下错误,此种场景下,换一跟短的HDMI线缆,则不会报如下错误,你觉得这种情况应该如何更改链路设计兼容之前长的HDMI线呢?

dwhdmi-rockchip fdea0000.hdmi: i2c write nack!

dwhdmi-rockchip fdea0000.hdmi: i2c write time out!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

proware

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值