一、SPI接口4线转3线的连接方式
- 国宇测试盒
1、SPI接口端口连接方式
2、SPI接口书写格式
3、SPI接口读的格式
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Write_LCD_REG(0x0000,0x00ee);
Write_LCD_REG(0x0000,0x0001); //READ
Set_RESET(1,1);
Delay(2);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0002);
Write_LCD_REG(0x0000,0x00ea);
Write_LCD_REG(0x0000,0x007A);
Set_RESET(1,1);
Delay(2);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Write_LCD_REG(0x0000,0x00eb);
Write_LCD_REG(0x0000,0x00aa); //READ
Set_RESET(1,1);
Delay(2);
Set_SPI(8,8);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F2);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Set_SPI(8,16);
Write_LCD_REG(0x0000,0x0a00);
Read_SSPI_DAT(1, BUFFER+1); // read vcom
Set_RESET(1,1); //READ
Delay(2);
Set_SPI(8,8);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Write_LCD_REG(0x0000,0x00ee);
Write_LCD_REG(0x0000,0x0000); //PAGE0
Set_RESET(1,1);
Delay(2);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Write_LCD_REG(0x0000,0x00ea);
Write_LCD_REG(0x0000,0x0000); //
Set_RESET(1,1);
Delay(2);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Write_LCD_REG(0x0000,0x00eb);
Write_LCD_REG(0x0000,0x0000);
Set_RESET(1,1);
Delay(2);
国宇测试盒,SPI读ID的DB返回05, data电平会被拉低,波形如下图。
4、SPI接口按键烧录
在正常点亮的函数后增加:
Get_BurnKey();
if(memcmp("0x01"))
{
Set_SPI(8,8);
//*******OTP***////////////////
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Write_LCD_REG(0x0000,0x0028);
Write_LCD_REG(0x0000,0x0000);
Set_RESET(1,1);
Delay(2);
。。。。。。。。 OTP 代码。。。。。。。。
Delay(150);
Set_GPIO2(0); // GPIO2 SET STBYB low
Delay(150);
Set_POWER(1,1,0,1);//1.8V ON, 2.8V ON, 5V OFF, BL ON
Delay(150);
Set_POWER(1,0,0,1);//1.8V ON, 2.8V OFF, 5V OFF, BL ON
Delay(150);
Set_POWER(0,0,0,0);//1.8V OFF, 2.8V OFF, 5V OFF, BL OFF
Set_RESET(1,0);//MIPI RESET 1, LCD RESET 0
Delay(50);
Set_RESET(0,0);//MIPI RESET 0, LCD RESET 0
Delay(50);
Set_GPIO2(0); // GPIO2 SET STBYB low
Delay(50);
Set_POWER(1,0,0,0);//1.8V ON, 2.8V OFF, 5V OFF, BL OFF
Delay(50);
Set_POWER(1,1,0,0);//1.8V ON, 2.8V ON, 5V ON, BL OFF
Delay(50);
Set_RESET(1,1);//MIPI RESET 1, LCD RESET 1
Delay(50);
Set_RESET(1,0);//MIPI RESET 0, LCD RESET 0
Delay(50);
Set_RESET(1,1);//MIPI RESET 1, LCD RESET 1
Delay(50);
Set_GPIO2(1); // GPIO2 SET STBYB H
Delay(200);
}
按键烧录后STBYB,VGH 的状态测量:
5、I2C接口
(1)连接方式
(2)I2C书写格式
(3)I2C读的格式
读page7的00,设置值0X00=3C, 返回值也为3C。
三、逍客测试盒
1、端口连接方式
2、SPI接口书写格式
注意:先将测试盒系统升级,目的可识别SPI函数。
函数格式:SetSpiSckIdleSta(0);
3、SPI接口读的格式
当bit0为1,读返回都正确;
- SPI读page7页的01,读5个参数,返回值为02-00-14-14-16;
当bit0不为1,会出现读返回错误的现象;
(1)SPI读DCS页的04,读3个参数,理论返回值为70-03-0A,实际返回值为00-03-0A;
(2)SPI读page7页的00,读5个参数,理论返回值为10-12-3C-3F-3F,实际返回值为12-12-3C-3F-3F;
5、SPI接口按键烧录
函数:SetOtpDoneCheckType (type)
[功能]:OTP完成检测类别,用于设置OTP完成后检测OTP次数还是OTP值来判断OTP是否成功。
[格式]:SetOtpDoneCheckType (<检测类型>),0表示OTP完成检测烧录次数是否增加一次表示烧录成功,默认值;1表示OTP完成后,读取烧录值是否一致来判断是否烧录成功,2表示同时检测VCOM是否一致以及烧录次数是否增加,3表示不做任何检测,由用于自行在程序中判断。
函数:SetFindVcomEn (ctrl)
[功能]:用于设置VCOM查询使能,比如需要烧全代码而不需要对VCOM查询时,可以禁止VCOM查询。
[格式]:SetFindVcomEn (<开启或关闭>),ON表示开启VCOM搜寻,默认是开启的,只要使能OTP烧录,按OTP按键则进行VCOM查询;OFF表示关闭VCOM搜寻。
[例子] :SetFindVcomEn (OFF); //关闭VCOM搜寻。
void BurnOtp():实现vcom烧录流程;
5、I2C接口书写格式
6、I2C接口读的格式
I2C读DCS页的0C,读1个参数, 返回值70H。
四、GH7009国宇测试盒使用以及文档转换
1. SPI接线
针对7009:
针对其他700x:
2. 国宇上位机代码准备
在主函数首尾两端加入IO2时序控制的代码、以及国语SPI有效位控制的代码(请注意7009和其他700x使用的有效位控制不一致,需要用哪一款加入哪一行即可):
三、国宇SPI读的使用方式
1. 7009读
7009国宇SPI读接线:
7009国语SPI读CODE:
Write_LCD_REG(0x0000, 0x00ee);
Write_LCD_REG(0x0000, 0x0101); // ENTER PAGE1
Write_LCD_REG(0x0000, 0x00ea);
Write_LCD_REG(0x0000, 0x017a); // Read enable
Write_LCD_REG(0x0000, 0x00eb);
Write_LCD_REG(0x0000, 0x01aa);
Set_SPI(16,25,0);
Write_LCD_REG(0x000a, 0x0000); //读地址0a vcom
Read_SSPI_DAT(2,BUFFER+0); // 返回两个参数
Set_SPI(8,9,0);
2. 700x读
700X国语SPI读CODE:
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Write_LCD_REG(0x0000,0x00ee);
Write_LCD_REG(0x0000,0x0001); //page 1
Set_RESET(1,1);
Delay(2);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0002);
Write_LCD_REG(0x0000,0x00ea);
Write_LCD_REG(0x0000,0x007A); //Read enable
Set_RESET(1,1);
Delay(2);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F1);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Write_LCD_REG(0x0000,0x00eb);
Write_LCD_REG(0x0000,0x00aa); //READ enable
Set_RESET(1,1);
Delay(2);
Set_SPI(8,8);
Set_RESET(0,1);
Write_LCD_REG(0x0000,0x00F2);
Write_LCD_REG(0x0000,0x004c);
Write_LCD_REG(0x0000,0x0001);
Set_SPI(8,16);
Write_LCD_REG(0x0000,0x0a00);
Read_SSPI_DAT(1, BUFFER+1); // read vcom
Set_RESET(1,1); //READ
Delay(2);
Set_SPI(8,8);