ILI9488,ILI9486,ILI9481,ST7796S,HX8357D 3W-SPI读ID
0赞一、HX8357D:
先下指令:
write_cmd(0xB9);
write_para(0xFF);
write_para(0x83);
write_para(0x57);
write_cmd(0xFE );
write_para(0xD0);
read_data(0xFF,one_byte_return);
//Read HX8357-D ID=99h 读0XFF返回0x99刚是HX8357D
二、ILI9488与ILI9486读ID流程一样
void DispRegValue(void)
{
unsigned char i=0;
unsigned char id1,id2,id3,id4;
SPI_CS=0;
SPI_RES=1;
Delay(160); // delay 40 ms
SPI_RES=0;
Delay(160); // delay 40 ms
SPI_RES=1;
Delay(480); // delay 120 ms
//Adjust Control 3
SPI_WriteComm(0XF7);
SPI_WriteData(0xA9);
SPI_WriteData(0x51);
SPI_WriteData(0x2C);
SPI_WriteData(0x82);
//3W-SDA read id
SPI_WriteComm(0XB0);
SPI_WriteData(0X80); //byte1
SPI_WriteComm(0XFB);
SPI_WriteData(0X80);
id1=Read_chipID(0xd3); //Parameter1=DUMMY 无效
SPI_WriteComm(0X2E);
SPI_WriteData(0X81); //Parameter2=0X88 无效
id2=Read_chipID(0xd3);
SPI_WriteComm(0XFB);
SPI_WriteData(0X82); //Parameter3=0X94 有用
id3=Read_chipID(0xd3);
SPI_WriteComm(0XFB);
SPI_WriteData(0X83);//Parameter4=0X88 ,9486为0X86
id4=Read_chipID(0xd3);
}
unsigned int Read_chipID(unsigned char regist)
{
unsigned char i,dat=0x00;
DIR=0; //MCU send data to driver ic
SPI_CS=0;
SPI_DI=0;
SPI_CLK=0;
SPI_CLK=1; //写0XD3
for(i=8;i>0;i--)
{
regist<<=1;
SPI_DI=CY;
SPI_CLK=0;
_nop_();_nop_();_nop_();_nop_();
SPI_CLK=1;
}
SPI_DI=1; //读之前将SDA拉高
Delay(80); //延时20ms
for(i=8;i>0;i--)
{
SPI_CLK=0;
Delay(4); //1ms
SPI_CLK=1;
dat<<=1; //MCU read data from driver ic
if(SPI_DI)
{
dat++;
}
}
DIR=0; //MCU send data to driver ic
CS0=1;
DIR=0;
return dat;
}
三、ILI9481读BF寄存器,可以读到ID,第四,第五个字节为需要的ID
复位过后写C6H再去读BFH
void DispRegValue(void)
{
unsigned char i=0, id1,id2,id3,id4;
SPI_CS=0;
SPI_RES=1;
Delay(160); // delay 40 ms
SPI_RES=0;
Delay(160); // delay 40 ms
SPI_RES=1;
Delay(480); // delay 120 ms
//3W-SDA read id
SPI_WriteComm(0xC6);
SPI_WriteData(0X80); //SDA读使能
id1=Read_chipID(0XBF); //byte1=0X02
id2=Read_chipID(0XBF); //byte2=0x04有用
id3=Read_chipID(0XBF); //byte3=0X94 有用
id4=Read_chipID(0XBF); //byte4=0X81 有用
id5=Read_chipID(0XBF); //byte5=0XFF 有用
}
unsigned int Read_chipID(unsigned char regist)
{
unsigned char i,dat=0x00;
DIR=0; //MCU send data to driver ic
SPI_CS=0;
SPI_DI=0;
SPI_CLK=0;
SPI_CLK=1; //写0XBF
for(i=8;i>0;i--)
{
regist<<=1;
SPI_DI=CY;
SPI_CLK=0;
_nop_();_nop_();_nop_();_nop_();
SPI_CLK=1;
}
SPI_DI=1; //读之前将SDA拉高
Delay(80); //延时20ms
for(i=8;i>0;i--)
{
SPI_CLK=0;
Delay(4); //1ms
SPI_CLK=1;
dat<<=1;
DIR=1; //MCU read data from driver ic
if(SPI_DI)
{
dat++;
}
}
DIR=0; //MCU send data to driver ic
CS0=1;
DIR=0;
return dat;
}
送完初始化后先下以下指令
write_cmd(0xc6);
write_dat(0x82);
四、ST7796S读BF寄存器,可以读到ID,第三,第四个字节为需要的ID值
复位过后:FBH送偏移量,再读D3H
void DispRegValue(void)
{
unsigned char i=0;
unsigned char id1,id2,id3,id4;
SPI_CS=0;
SPI_RES=1;
Delay(160); // delay 40 ms
SPI_RES=0;
Delay(160); // delay 40 ms
SPI_RES=1;
Delay(480); // delay 120 ms
SPI_WriteComm(0XFB);
SPI_WriteData(0X10);
id1=Read_chipID(0xd3); //Parameter1=0x00无效
SPI_WriteComm(0XFB);
SPI_WriteData(0X11); //Parameter2=0X77 有用
id2=Read_chipID(0xd3);
SPI_WriteComm(0XFB);
SPI_WriteData(0X12); //Parameter3=0X96 有用
id3=Read_chipID(0xd3);
SPI_WriteComm(0XFB);
SPI_WriteData(0X13); //Parameter3=0X00 有用
id3=Read_chipID(0xd3);
}
unsigned int Read_chipID(unsigned char regist)
{
unsigned char i,dat=0x00;
DIR=0; //MCU send data to driver ic
SPI_CS=0;
SPI_DI=0;
SPI_CLK=0;
SPI_CLK=1; //写0xd3
for(i=8;i>0;i--)
{
regist<<=1;
SPI_DI=CY;
SPI_CLK=0;
_nop_();_nop_();_nop_();_nop_();
SPI_CLK=1;
}
SPI_DI=1;//读之前将SDA拉高
Delay(80);//延时20ms
for(i=8;i>0;i--)
{
SPI_CLK=0;
Delay(4); //1ms
SPI_CLK=1;
dat<<=1;
DIR=1; //MCU read data from driver ic
if(SPI_DI)
{
dat++;
}
}
DIR=0; //MCU send data to driver ic
CS0=1;
DIR=0;
return dat;
}
以上读代码都是基于51单片机实现,仅供参考