LcdTools如何编写EDP接口的AUX指令--DPCD、AuxIIC通信

在点EDP屏时,我们经常会碰到需要对通过AUX通道对屏进行参数读写,如读写EDID值,读写vcom值,读写EEPROM等;下面我们介绍怎么通过LcdTools编写AUX指令,如DPCD、AUXIIC通信。

可通过以下链接视频教程查看通过AUX来调EDP屏Flicker:PX01 EDP接口屏AUX调FLK_哔哩哔哩_bilibili

一、AUX信道电路
PHY层提供半双工双向AUX通道,用于链路配置或维护和EDID访问,使用1Mbps曼彻斯特-II编码。曼彻斯特编码(Manchester)又称裂相码、同步码、相位编码,是一种用电平跳变来表示1或0的编码方法,其变化规则很简单,即每个码元均用两个不同相位的电平信号表示,也就是一个周期的方波,但0码和1码的相位正好相反。由于曼切斯特编码在每个时钟位都必须有一次变化,因此,其编码的效率仅可达到50%左右。
a) 标准曼切斯特编码波形,电平从高到低代表逻辑1,电平从低到高代表0;
b) 差分曼彻斯特编码波形,电平没有跳变代表1(也就是说上一个波形图在高现在继续在高开始,上一波形图在低继续在低开始),电平有跳变代表0(也就是说上一个波形图在高位现在必须改在低开始,上一波形图在低位必须改在从高开始),注:第一个是0的从低到高,第一个是1的从高到低,后面的就看有没有跳变来决定了(差分曼彻斯特编码)。

 

EDP接口AUX通道一般使用的是标准曼切斯特编码方式。

 

二、AUX信道协议构成

AUX为半双工通信模式,通信为一问一答模式,通信由请求端发起,应答端接收后进行反馈。请求和应答协议格式都遵循:同步头(SYNC)+同步结束(SYNC END)+命令(CMD)+数据(DATA)+通信结束(STOP)。

同步头由16~32个连续逻辑0曼彻斯特-II编码构成,同步结束和通信结束为两个时钟周期高两个时钟周期低构成,如下图

命令(COMM3:0)由4位曼彻斯特-II组成,最高位bit3为1表示DP通信,最高位bit3为0表示IIC通信。DP通信时,bits2:0为000为DP写操作,bits2:0为001为DP读操作;IIC通信时bit2位表示中间状态,为1时表示启动通信,为0时表示通信中,bits1:0为IIC命令,为00时表示IIC 写,为01时表示IIC读,为10时表示写状态请求,11为保留。

COMM3:0->1000->8->DPCD Write

COMM3:0->1001->9->DPCD Read

COMM3:0->0100/0000->4/0->AUX IIC Write

COMM3:0->0101/0001->5/1->AUX IIC Read

1.  当通信为DP通信时,命令数据后面跟随的数据为20位地址码(ADDR19:0),显示接口AUX的操作功能、状态和控制方式直接映射在这个20位地址码上;

 当DP通信为写操作时,地址码后面跟随的时1字节(8bit)数据长度参数(LEN),实际的数据长度为LEN+1,数据支持burst连续模式,最大不多余16个数。

SYNC►COMM3:0|ADDR19:16►ADDR15:8◄ADDR7:0►LEN7:0►(DATA0-7:0►...)STOP

a) 接收端接收到完整写请求后则返回一个应答信号AUX ACK。

SYNC◄00|AUX ACK◄0000◄STOP

b) 如果接收端接收到的写请求不完整,则接收端返回非应答信号AUX NACK,并在NACK后跟随写数据个数。

SYNC◄00|NACK◄0000◄DATA0_7:0◄STOP

c) 如果接收端接收到写请求但是还没准备好接收请求时,就会返回延迟信号AUX_DEFER。

SYNC◄00|AUX_DEFER◄0000◄STOP

2. 当DP通信为读操作时,通信请求在长度数据之后就中止了,除了数据长度字节不需要发其他数据,读取数据的个数为LEN+1个。

SYNC◄COMM3:0|0000◄(DATA0-7:0)STOP

a) 当接收端收到读请求但是没有准备好返回数据,此时返回延迟信号AUX_DEFER。

SYNC◄00|AUX DEFER|0000◄STOP

b) 接收端接收读请求而且已经准备好,则返回ACK信号加N个字节读取数据。

SYNC◄00|AUX ACK|0000◄DATA0_7:0◄...DATAN-1_7:0◄STOP

3. 当通信为AUX IIC写时,数据格式以8bit字节格式发送,第一个数据为命令数据COMM3:0加低4位0构成命令字节,第二字节默认为0,第三个字节为IIC通信slave地址,7位模式,最高位为0;第四个字节为数据长度参数(LEN),实际的数据长度为LEN+1,后面的为数据。

SYNC► COM3:0 |0000► 0000|0000► 0|7-bit I2C address (the same as the last) ►LEN7:0 (Length byte) ►DATAN-7:0... ►STOP►

有两种通信方式,连续模式和非连续模式。

a) 连续模式

源端设备发起IIC通信,IIC数据可以连续发送到终端,终端接收完毕再做应答;流程如下图所示

源端:SYNC► 0100|0000►00000000► 0|1001000►STOP►(Address-only transaction,with MOT = 1 and I2Caddress = 1001000)

终端:SYNC◄0000|0000◄STOP◄(I2C ACK / AUX ACK)

源端:SYNC►0000|0000►00000000►0|1001000►0000|0011►Data0►Data1►Data2► Data3►STOP►(MOT = 0, the same I2Caddress, Length = 4 bytes,indicating I2C STOP to DPRx after 4 bytes of Write)

终端:SYNC◄0000|0000◄0000|0011◄ STOP◄(I2C ACK/AUX ACK,three bytes written to I2Cslave)

源端:SYNC►0010|0000►00000000►0|1001000►STOP►(Status Update Request withMOT = 0 and the same I2Caddress)

终端:SYNC◄0000|0000◄STOP◄(I2C ACK/AUX ACK,indicating DP Tx of thecompletion of the four byte

b) 非连续模式

源端设备发起IIC通信,IIC数据写每次操作需等终端应答才可以进行下一个操作;流程如下图所示

源端:SYNC► 0100|0000►00000000► 0|1001000►STOP►(Address-only transaction,with MOT = 1 and I2Caddress = 1001000)

终端:SYNC◄1000|0000◄STOP◄(I2C DEFER / AUX ACK)

源端:SYNC►0110|0000►00000000►0|1001000►STOP►(Status Update Request withMOT = 1 and the same I2Caddress)

终端:SYNC◄0000|0000◄STOP◄(I2C ACK / AUX ACK)

源端:SYNC►0100|0000►00000000►0|1001000►0000|0000►Data0►STOP►(MOT = 1, the same I2Caddress, Length = 1 byte)

终端:SYNC◄1000|0000◄STOP◄(I2C DEFER / AUX ACK)

源端:SYNC►0110|0000►00000000►0|1001000►STOP►(Status Update Request withMOT = 1 and the same I2Caddress)

终端:SYNC◄0000|0000◄STOP◄(I2C ACK / AUX ACK)

源端:SYNC►0100|0000►00000000►0|1001000►0000|0000►Data1►STOP►(MOT = 1, the same I2Caddress, Length = 1 byte)

终端:SYNC◄1000|0000◄STOP◄(I2C DEFER / AUX ACK)

源端:SYNC►0110|0000►00000000►0|1001000►STOP►(Status Update Request withMOT = 1 and the same I2Caddress)

终端:SYNC◄0000|0000◄STOP◄(I2C ACK / AUX ACK)

源端:SYNC►0100|0000►00000000►0|1001000►0000|0000►Data2►STOP►(MOT = 1, the same I2Caddress, Length = 1 byte)

终端:SYNC◄1000|0000◄STOP◄(I2C DEFER / AUX ACK)

。。。重复上述发送过程至完成。

4. 当通信为AUX IIC读时,数据格式以8bit字节格式发送,第一个数据为命令数据COMM3:0加低4位0构成命令字节,第二字节默认为0,第三个字节为IIC通信slave地址,7位模式,最高位为0;第四个字节为读数据长度参数(LEN),实际的数据长度为LEN+1。

SYNC► COM3:0 |0000► 0000|0000► 0|7-bit I2C address (the same as the last) ►LEN7:0 (Length byte) ►STOP►

读取模式也分几种,常见的有分次读取和预读取模式。

a) 分次读取模式,IIC从机地址发送后,每个数据读取都是单独通信完成。

START►1001000|1►ACK◄Data0◄ACK►Data1◄NACK►STOP►

b) 预取读模式,为了提高读取效率,DP TX预读取数据从IIC终端设备,这样可以提高读取效率。

START►1001000|1►ACK◄Data0◄ACK►Data1◄ACK►Data2◄ACK► Data3◄ACK►
Data4◄ACK► Data5◄ACK► Data6◄ACK► Data7◄ACK► Data8◄ACK►
Data9◄NACK►STOP►

 

下面进行举几个实例说明LcdTools怎么编写AUX DP和IIC指令。

先查看LcdTools帮助文档或从博客文章LcdTools指令集 - XKphone--15002088355 - 博客园 (cnblogs.com),了解AUX相关指令的构成和使用方法,需注意,AUX IIC操作指令中,sla地址需用8位地址模式;

 

 

【例程1】

实例中可以看出,指令数据构成和前面描述的AUX数据协议构成一致。命令参数为8表示DPCD写,命令参数为0表示AUX IIC写,命令参数为1表示AUX IIC读。LcdTools实现如下图

【例程2】

 

上述指令用LcdToos实现如下图:

 

【例程3】

 

 用LcdTools实现如下图

 

 

上面实例展示常见的几种AUX指令表述方式和LcdTools实现方法,做抛砖引玉之用,请根据实际需求去实现相关功能,欢迎交流!

深圳前海骁客影像科技设计有限公司
网址:www.xk-image.com
posted @ 2022-11-05 21:21  XKphone--15002088355  阅读(4300)  评论(3编辑  收藏  举报