硬件架构
F1C200S(全志,RGB666 18bit 并行输出)→ NCS8801S(RGB/LVDS转eDP桥片,QFN-56)→ BOE NT116WHM-N21(11.6寸 eDP屏)
屏规格:1366x768@60Hz,eDP 1 lane 2.7Gbps(HBR),6bit,DE-only 模式,板载EDID芯片
现象
NCS8801S 寄存器 0x80(eDP握手结果)= 0x01 恒定失败(00=握手无效 01=握手失败 10=成功),0x81=0x00(lane0 时钟恢复未完成)
接屏时 0x80=0x01,拔屏时 0x80=0x00(说明芯片能检测到屏的 AUX 终端电阻)
所有软件配置均无效,已试过:
数据手册 8.3 标准初始化流程
全志 T5 平台官方驱动初始化序列(含未公开寄存器:0x70的0x03/0x09/0x60/0x70/0x71/0x73/0x74,0x75的0x01/0x02/0x0b/0x23,TX终端0x11=0x88等,全部写齐并回读验证)
RBR(1.62G) 和 HBR(2.7G) 两种速率
TX 幅度、TX 终端、lane 使能、lane swap、P/N swap 全参数扫描
I2C 读写正常;NCS 输入时序检测正常(Htotal=1526,Hactive=1366,Vactive=768);实际像素时钟 72MHz(屏规格 67.5~76.3MHz 范围内)
HPD 实测为高电平(屏已上电,屏内 eDP Rx 逻辑在运行);该屏在其他开发板上点亮正常
示波器波形证据(SDS814X HD,2GHz采样)
差分测量(探头+接AUX_P,-接AUX_N):看到 ±0.28V 的 1MHz 曼彻斯特方波,以 226us 为周期重复(6段方波,每段7~40us,段间短间隙),但找不到完整的 AUX 帧结构(没有 SYNC_END/STOP 的 2us 稳定电平,解不出 CMD/ADDR/LEN 字段),拔掉屏幕后波形完全不变(说明信号源在 NCS 芯片侧,与屏无关)
单端测量(C1=AUX_P对GND,C2=AUX_N对GND):
AUX_N 空闲直流电平 = 0V(按 eDP 规范源侧应有 100kΩ 上拉到 3.3V;原理图上该电阻 R22 存在且阻值实测正常,但电压不对,怀疑虚焊或网络不通)
共模电压(P+N)摆动高达 ±0.9V(正常应恒定在 0~1.2V),差模(P-N)恒定 -0.12V
BIST 训练过程中抓 2ms 窗口:AUX 线上几乎没有差分信号,只有周期 15us(=1080个72MHz像素时钟)的共模串扰,怀疑是 LCD 行信号的耦合
已排除项
固件/寄存器配置:全部寄存器组合、厂商序列、速率、幅度、终端、lane/P/N swap 全部无效
屏幕本身:在他板正常、HPD 高、LCD_VCC 供电正常
输入信号:像素时钟 72MHz 合规、时序检测正确
供电/晶振:AVDD12/DVDD33 正常,晶振 24MHz(芯片支持 19~100MHz)
未完成的关键验证
NCS8801S 芯片引脚侧(Pin33 DPAUXP / Pin34 DPAUXN)是否有差分输出尚未测量——目前测量点在耦合电容的连接器侧,只看到共模串扰,无法判断是芯片没输出还是信号在耦合电容/走线处断了。
想请教的问题
NCS8801S 握手失败(0x80=0x01)的常见原因?有没有兄弟遇到过这个芯片类似问题?
AUX_N 缺少 100kΩ 上拉偏置(实测 DC=0V)会导致 AUX 握手失败吗?原理图上有 R22(100kΩ) 且电阻本体实测正常,但电压不对,可能是虚焊或网络不通,这种可能性大吗?
0x80=0x01 状态下,AUX 线上正常情况应该看到什么波形?(预充电脉冲?SYNC?完整帧?)我抓到的持续方波+共模串扰,是不是说明 NCS 的 AUX 引擎根本没有正常工作?
NCS8801S 是否必须在输入时钟(PCLK)存在时才执行 AUX 握手?我在 LCD 开启和关闭两种状态都测过,0x80 都是 0x01
谁有 NCS8801S 完整寄存器手册?现在只有 V0p93 版本(寄存器表不完整),I2C-AUX/DPCD 功能应该怎么用?
ncs8801s-blue-bist self-test: PASS
blue launcher: payloads installed and helper self-test passed
blue launcher: temporarily mounted debugfs
blue launcher: starting fixed ACK-gated blue BIST
1970-01-01T00:13:56+0000 session: command=run --confirm-fixed-blue-bist
1970-01-01T00:13:56+0000 preflight: read-only inspection using /sys/kernel/debug/pinctrl/1c20800.pinctrl/pinmux-pins
1970-01-01T00:13:56+0000 pinmux PE11: pin 139 (PE11): device 1c27000.i2c function i2c0 group PE11
1970-01-01T00:13:57+0000 pinmux PE12: pin 140 (PE12): device 1c27000.i2c function i2c0 group PE12
1970-01-01T00:13:57+0000 pinmux PE8: pin 136 (PE8): device 1c25800.serial function uart2 group PE8
1970-01-01T00:13:58+0000 I2C0 gate PASS: bound at /sys/bus/platform/drivers/mv64xxx_i2c with no process user
1970-01-01T00:14:02+0000 UART1 gate PASS: 1c25400.serial -> ttyS1; inspection only
1970-01-01T00:14:07+0000 UART2 gate PASS: bound at /sys/bus/platform/drivers/dw-apb-uart and safe to release
1970-01-01T00:14:07+0000 GPIO gate PASS: /sys/class/gpio/gpiochip0 covers PE8/gpio136
1970-01-01T00:14:08+0000 blue BIST helper self-test: ncs8801s-blue-bist self-test: PASS
1970-01-01T00:14:08+0000 preflight: PASS; I2C0 remains bound and UART1 remains untouched
1970-01-01T00:14:08+0000 run gate: fixed ACK-gated blue BIST accepted
1970-01-01T00:14:08+0000 mutation: temporarily releasing PE8 from UART2
1970-01-01T00:14:08+0000 mutation: NCS RSTB asserted
1970-01-01T00:14:09+0000 mutation: NCS RSTB released; waiting fixed 50 ms margin
1970-01-01T00:14:09+0000 helper: starting fixed /dev/i2c-0 blue BIST
ACK gates passed: 0x70:0x00=0x00 0x75:0x00=0xb1; no writes issued
HBR gate passed: 0x75:0x05=0xc1
0x70:0x0f datasheet conflict: following section 8.3 values 0x01 then 0x00
fixed mode: 1366x768 RGB666 one-lane HBR; blue R=00 G=00 B=ff
training poll 1/50: 0x80=0x00 0x81=0x00
training poll 2/50: 0x80=0x01 0x81=0x00
training poll 3/50: 0x80=0x01 0x81=0x00
training poll 4/50: 0x80=0x01 0x81=0x00
training poll 5/50: 0x80=0x01 0x81=0x00
training poll 6/50: 0x80=0x01 0x81=0x00
training poll 7/50: 0x80=0x01 0x81=0x00
training poll 8/50: 0x80=0x01 0x81=0x00
training poll 9/50: 0x80=0x01 0x81=0x00
training poll 10/50: 0x80=0x01 0x81=0x00
training poll 11/50: 0x80=0x01 0x81=0x00
training poll 12/50: 0x80=0x01 0x81=0x00
training poll 13/50: 0x80=0x01 0x81=0x00
training poll 14/50: 0x80=0x01 0x81=0x00
training poll 15/50: 0x80=0x01 0x81=0x00
training poll 16/50: 0x80=0x01 0x81=0x00
training poll 17/50: 0x80=0x01 0x81=0x00
training poll 18/50: 0x80=0x01 0x81=0x00
training poll 19/50: 0x80=0x01 0x81=0x00
training poll 20/50: 0x80=0x01 0x81=0x00
training poll 21/50: 0x80=0x01 0x81=0x00
training poll 22/50: 0x80=0x01 0x81=0x00
training poll 23/50: 0x80=0x01 0x81=0x00
training poll 24/50: 0x80=0x01 0x81=0x00
training poll 25/50: 0x80=0x01 0x81=0x00
training poll 26/50: 0x80=0x01 0x81=0x00
training poll 27/50: 0x80=0x01 0x81=0x00
training poll 28/50: 0x80=0x01 0x81=0x00
training poll 29/50: 0x80=0x01 0x81=0x00
training poll 30/50: 0x80=0x01 0x81=0x00
training poll 31/50: 0x80=0x01 0x81=0x00
training poll 32/50: 0x80=0x01 0x81=0x00
training poll 33/50: 0x80=0x01 0x81=0x00
training poll 34/50: 0x80=0x01 0x81=0x00
training poll 35/50: 0x80=0x01 0x81=0x00
training poll 36/50: 0x80=0x01 0x81=0x00
training poll 37/50: 0x80=0x01 0x81=0x00
training poll 38/50: 0x80=0x01 0x81=0x00
training poll 39/50: 0x80=0x01 0x81=0x00
training poll 40/50: 0x80=0x01 0x81=0x00
training poll 41/50: 0x80=0x01 0x81=0x00
training poll 42/50: 0x80=0x01 0x81=0x00
training poll 43/50: 0x80=0x01 0x81=0x00
training poll 44/50: 0x80=0x01 0x81=0x00
training poll 45/50: 0x80=0x01 0x81=0x00
training poll 46/50: 0x80=0x01 0x81=0x00
training poll 47/50: 0x80=0x01 0x81=0x00
training poll 48/50: 0x80=0x01 0x81=0x00
training poll 49/50: 0x80=0x01 0x81=0x00
training poll 50/50: 0x80=0x01 0x81=0x00
training failed after the fixed 50-poll software timeout: 0x80=0x01 0x81=0x00
training diagnostics:
address=0x70 register=0x80 value=0x01
address=0x70 register=0x81 value=0x00
address=0x70 register=0xe0 value=0x05
address=0x70 register=0xe1 value=0xf6
address=0x70 register=0xe2 value=0x00
address=0x70 register=0xe3 value=0x70
address=0x70 register=0xe4 value=0x05
address=0x70 register=0xe5 value=0x56
address=0x70 register=0xe6 value=0x03
address=0x70 register=0xe7 value=0x16
address=0x70 register=0xe8 value=0x00
address=0x70 register=0xe9 value=0x13
address=0x70 register=0xea value=0x03
address=0x70 register=0xeb value=0x00
address=0x70 register=0xec value=0x00
address=0x70 register=0xed value=0x20
address=0x70 register=0xee value=0x80
address=0x70 register=0xef value=0x06
1970-01-01T00:14:14+0000 helper: exited with status 1
1970-01-01T00:14:14+0000 cleanup: begins
1970-01-01T00:14:14+0000 cleanup: NCS reset asserted
1970-01-01T00:14:14+0000 cleanup: PE8/gpio136 released
[ 854.907916] 1c25800.serial: ttyS0 at MMIO 0x1c25800 (irq = 28, base_baud = 6250000) is a 16550A
1970-01-01T00:14:15+0000 cleanup: UART2 rebound
1970-01-01T00:14:15+0000 cleanup: I2C0 remained bound to its original driver
1970-01-01T00:14:15+0000 cleanup: ends
blue launcher: wrapper exited with status 1
blue launcher: removed its temporary debugfs mount
离线
我搞过,就是直接逻辑分析仪抓竞品的I2C数据,然后你知道的。
离线