spi读ic识别lcd

采用himax8357creseaR61581b0

himax8357c

写时序图

spi读ic识别lcd_第1张图片

3-pin串行数据包包括一个控制位d/cx和一个传输字节。如果d/cx位是低电平,传输字节是命令字节,如果d/cx位是高电平,传输字节就存储在命令寄存器或者GRAM中。MSB位先传输。当csx为高时,串口初始化。这个状态下,时钟脉冲和串口输入输出数据(SDI/SDO)都不起作用的。Csx下降沿使能串口并且标示了数据传输的开始。

读时序图

 spi读ic识别lcd_第2张图片

在串口读模式下,主控制器首先得发一个命令字节,紧跟着通过SDA线读到的字节发送到主控制器。读模式有两种类型读数据和一种GRAM数据。

以上具体可参考规格书。

注意事项:

第一,   解释下3线和4线的区别。Option1是将dcx融入到sda中作为控制线。Option2是单独拉出一根dcx线,控制读写。

第二,   解释下SDA线的使用方法。 就主控制器而言,SDO是写操作线,SDI是读操作线。可以根据IM0,1,2设置读写方式(上升沿或者下降沿,具体和芯片有关)。需要注意的是slave也有操作线对应。具体到此芯片master SDO是可以支持复用的,同时slave SDI也支持复用。由于屏厂早起没有做SDO连接,因此可以通过master SDO复用来读取ic信息。

针对另外一款icR61581而言,该芯片不支持SDI复用位SDO,因此必须屏厂SDO连接出来才支持读取ic信息,其他读时序与himax8357一致。

下面主要阐述下读取id的注意事项:

对于8357c,读取ic

         WMLCDCOM(0xFE);

         WMLCDDATA(0xD0);

         ic_id = READLCDDATA(0xFF);

注意的是FE这个属于外部命令,使能的话需要芯片配置B9h

WMLCDCOM(0xB9); // Set EXTC

WMLCDDATA(0xFF);

WMLCDDATA(0x83);

WMLCDDATA(0x57);

对于R61581,读取ic.

BFh寄存器读到的第一个字节是无效的,随后4位是有效值,可以作为参考数据。实际可采用最后一位0x81

READLCDDATA(0xBF);

8357类似,读之前也必须使能外部命令,配置0xb0.

WMLCDCOM(0xB0); // Set EXTC

WMLCDDATA(0x00);

 spi读ic识别lcd_第3张图片

 

明白了读取ic的方法和注意事项,实际项目就比较容易操作了。注意读取时配置好上电顺序,需要再spi gpio配置成功和reset脚的复位后进行上述读写操作进行相关ic的识别。

你可能感兴趣的:(c,存储,IM)