|
切记要读取两次才可以,这个地方一定要改,要不使用emWin或UCGUI的时候有问题的。
因为这里没有读取两次,不能正确的区分5420的屏和4001的屏。
- void SPFD5420_InitHard(void)
- {
- uint16_t id;
- id = SPFD5420_ReadReg(0x0000); /* 读取LCD驱动芯片ID */
- if ((id == 0x5420) || (id == 0x5520)) /* 4001屏和5420相同,4001屏读回显存RGB时,需要进行转换,5420无需 */
- {
- Init_5420_4001(); /* 初始化5420和4001屏硬件 */
- /* 下面这段代码用于识别是4001屏还是5420屏 */
- {
- uint16_t dummy;
- SPFD5420_WriteReg(0x0200, 0);
- SPFD5420_WriteReg(0x0201, 0);
- SPFD5420_REG = 0x0202;
- SPFD5420_RAM = 0x1234; /* 写一个像素 */
- SPFD5420_WriteReg(0x0200, 0);
- SPFD5420_WriteReg(0x0201, 0);
- SPFD5420_REG = 0x0202;
- dummy = SPFD5420_RAM; /* 读回颜色值 */
- dummy = SPFD5420_RAM; /* 读回颜色值 */
- if (dummy == 0x1234)
- {
- s_RGBChgEn = 0;
- g_ChipID = IC_5420;
- }
- else
- {
- s_RGBChgEn = 1; /* 如果读回的和写入的不同,则需要RGB转换, 只影响读取像素的函数 */
- g_ChipID = IC_4001;
-
- }
- g_LcdHeight = LCD_30_HEIGHT;
- g_LcdWidth = LCD_30_WIDTH;
- }
- }
- else if (id == 0xB509)
- [color=#000000] {[/color]
- Init_61509(); /* 初始化61509屏硬件 */
- s_RGBChgEn = 1; /* 如果读回的和写入的不同,则需要RGB转换, 只影响读取像素的函数 */
- g_ChipID = IC_61509;
- g_LcdHeight = LCD_30_HEIGHT;
- g_LcdWidth = LCD_30_WIDTH;
- }
-
- }
复制代码 |
|