1213 lines
29 KiB
C
1213 lines
29 KiB
C
#include "system/includes.h"
|
||
#include "typedef.h"
|
||
#include "asm/pap.h"
|
||
#include "lcd_drive.h"
|
||
#include "lcd_config.h"
|
||
#include "gpio.h"
|
||
/* HX9486驱动说明 该驱动测试时使用的 wl80 79系列
|
||
* 由于该IC推屏能力不够强 推屏的帧数较低 大概在25帧左右
|
||
* 在推屏过程中需要使用TE屏幕帧中断 不然会有条纹
|
||
* 由于HX9486横屏配置无法调出没有条纹的配置
|
||
* 所有只能使用竖屏加RGB旋转来实现UI横屏显示
|
||
*/
|
||
|
||
/* //pap的这个三个配置如下 在板级文件中进行修改
|
||
.timing_setup = 0, //具体看pap.h
|
||
.timing_hold = 0, //具体看pap.h
|
||
.timing_width = 1, //具体看pap.h
|
||
*/
|
||
|
||
#if TCFG_LCD_TM9486X_ENABLE
|
||
//版本号:图传:CS_16TC_TM9486X_38TND_230415A
|
||
// 对讲:CS_16DJ_TM9486X_38TND_230415A
|
||
//分辨率:320*480
|
||
//IC型号:68042-147/9481-147通用, 7916 新主控 TM9486新 金星壹
|
||
|
||
#define LCD_W 480
|
||
#define LCD_H 800
|
||
|
||
|
||
#define ROTATE_DEGREE_0 0
|
||
#define ROTATE_DEGREE_180 1
|
||
|
||
#define WHITE 0xFFFF
|
||
#define BLACK 0x0000
|
||
#define BLUE 0x001F
|
||
#define BRED 0XF81F
|
||
#define GRED 0XFFE0
|
||
#define GBLUE 0X07FF
|
||
#define RED 0xF800
|
||
#define MAGENTA 0xF81F
|
||
#define GREEN 0x07E0
|
||
#define CYAN 0x7FFF
|
||
#define YELLOW 0xFFE0
|
||
#define BROWN 0XBC40 //棕色
|
||
#define BRRED 0XFC07 //棕红色
|
||
#define GRAY 0X8430 //灰色i
|
||
|
||
#define READ_ID 0x04
|
||
#define REGFLAG_DELAY 0x45
|
||
|
||
#define DMA_DSPLY 1 //DMA operation
|
||
|
||
static u8 ui_data_ready = 0;
|
||
|
||
/*调用lcd_TE_driver完成数据发送*/
|
||
extern void send_date_ready();
|
||
void msleep(unsigned int ms);
|
||
|
||
#define lcd_delay(x) msleep(x)
|
||
|
||
static void WriteCOM_2bit(unsigned int cmd)
|
||
{
|
||
lcd_cs_pinstate(0);
|
||
lcd_rs_pinstate(0);//cmd
|
||
lcd_send_byte((cmd >> 8) & 0xff);
|
||
lcd_send_byte(cmd & 0xff);
|
||
lcd_cs_pinstate(1);
|
||
}
|
||
|
||
void WriteDAT_2bit(u16 dat)
|
||
{
|
||
lcd_cs_pinstate(0);
|
||
lcd_rs_pinstate(1);//dat
|
||
/* lcd_send_byte(dat); */
|
||
lcd_send_byte((dat >> 8) & 0xff);
|
||
lcd_send_byte(dat & 0xff);
|
||
lcd_cs_pinstate(1);
|
||
}
|
||
|
||
static u32 Read_ID(u8 index)
|
||
{
|
||
u32 id = 0;
|
||
WriteCOM_2bit(index);
|
||
/* id = ReadDAT_16() & 0xff00; */
|
||
id = ReadDAT_16();
|
||
id |= ReadDAT_16() << 16;
|
||
return id;
|
||
}
|
||
|
||
void HX8357_SetRange(u16 xs, u16 xe, u16 ys, u16 ye)
|
||
{
|
||
/******UI每次发送数据都会调用开窗告诉屏幕要刷新那个区域***********/
|
||
set_lcd_ui_x_y(xs, xe, ys, ye);
|
||
}
|
||
void HX8357_SetRange_1(u16 xs, u16 xe, u16 ys, u16 ye)
|
||
{
|
||
// WriteCOM_2bit(0x2A);
|
||
// WriteDAT_2bit(ys >> 8);
|
||
// WriteDAT_2bit(ys);
|
||
// WriteDAT_2bit(ye >> 8);
|
||
// WriteDAT_2bit(ye);
|
||
// WriteCOM_2bit(0x2B);
|
||
// WriteDAT_2bit(xs >> 8);
|
||
// WriteDAT_2bit(xs);
|
||
// WriteDAT_2bit(xe >> 8);
|
||
// WriteDAT_2bit(xe);
|
||
|
||
}
|
||
|
||
void HX8357_clear_screen(u32 color)
|
||
{
|
||
lcd_interface_non_block_wait();
|
||
WriteCOM_2bit(0x2c00);
|
||
|
||
u8 *buf = malloc(800 * 480 * 2);
|
||
if (!buf) {
|
||
printf("no men in %s \n", __func__);
|
||
return;
|
||
}
|
||
for (u32 i = 0; i < 800 * 480; i++) {
|
||
buf[2 * i] = (color >> 8) & 0xff;
|
||
buf[2 * i + 1] = color & 0xff;
|
||
}
|
||
WriteDAT_DMA(buf, 800 * 480 * 2);
|
||
free(buf);
|
||
}
|
||
|
||
void HX8357_Fill(u8 *img, u32 len)
|
||
{
|
||
lcd_interface_non_block_wait();
|
||
/* WriteCOM_2bit(0x2c00); */
|
||
WriteDAT_DMA(img, len);
|
||
}
|
||
|
||
void HX8357_SleepInMode(void)
|
||
{
|
||
// WriteCOM_2bit(0x10); //Sleep in
|
||
// lcd_delay(120); //Delay 120ms
|
||
}
|
||
|
||
void HX8357_SleepOutMode(void)
|
||
{
|
||
// WriteCOM_2bit(0x11); //Sleep out
|
||
// lcd_delay(120); //Delay 120ms
|
||
}
|
||
|
||
void st7789_shown_image(u8 *buff, u16 x_addr, u16 y_addr, u16 width, u16 height)
|
||
{
|
||
HX8357_SetRange(x_addr, y_addr, width, height);
|
||
WriteDAT_DMA(buff, width * height * 2);
|
||
}
|
||
|
||
static void HX8357_set_direction(u8 dir)
|
||
{
|
||
WriteCOM_2bit(0x36); //扫描方向控制
|
||
|
||
if (dir == ROTATE_DEGREE_0) { //正向
|
||
#if HORIZONTAL_SCREEN
|
||
WriteDAT_2bit(0x40);
|
||
#else
|
||
WriteDAT_2bit(0x00);
|
||
#endif
|
||
HX8357_SetRange(0, LCD_W - 1, 0, LCD_H - 1);
|
||
} else if (dir == ROTATE_DEGREE_180) { //翻转180
|
||
#if HORIZONTAL_SCREEN
|
||
WriteDAT_2bit(0xc0);
|
||
#else
|
||
WriteDAT_2bit(0x80);
|
||
#endif
|
||
}
|
||
}
|
||
|
||
static void HX8357_draw(u8 *map, u32 size)//获取Ui发送出来的数据
|
||
{
|
||
ui_send_data_ready(map, size);
|
||
}
|
||
|
||
static void HX8357_draw_1(u8 *buf, u32 size, int width, int height)//获取camera发送出来的数据 //数据帧数以camera为基准
|
||
{
|
||
camera_send_data_ready(buf, size, width, height);
|
||
}
|
||
|
||
static void HX8357_reset(void)
|
||
{
|
||
printf("reset \n");
|
||
lcd_rst_pinstate(1);
|
||
lcd_rs_pinstate(1);
|
||
lcd_cs_pinstate(1);
|
||
|
||
lcd_rst_pinstate(1);
|
||
lcd_delay(60);
|
||
lcd_rst_pinstate(0);
|
||
lcd_delay(10);
|
||
lcd_rst_pinstate(1);
|
||
lcd_delay(100);
|
||
}
|
||
|
||
typedef struct {
|
||
u8 cmd;
|
||
u8 cnt;
|
||
u8 dat[128];
|
||
} InitCode;
|
||
static void lcd_35510_init()
|
||
{
|
||
WriteCOM_2bit(0xF000);
|
||
WriteDAT_2bit(0xAA);
|
||
WriteCOM_2bit(0xF001);
|
||
WriteDAT_2bit(0x55);
|
||
WriteCOM_2bit(0xF002);
|
||
WriteDAT_2bit(0x52);
|
||
WriteCOM_2bit(0xF003);
|
||
WriteDAT_2bit(0x08);
|
||
WriteCOM_2bit(0xF004);
|
||
WriteDAT_2bit(0x01);
|
||
|
||
WriteCOM_2bit(0xB000);
|
||
WriteDAT_2bit(0x09);
|
||
WriteCOM_2bit(0xB001);
|
||
WriteDAT_2bit(0x09);
|
||
WriteCOM_2bit(0xB002);
|
||
WriteDAT_2bit(0x09);
|
||
|
||
WriteCOM_2bit(0xB600);
|
||
WriteDAT_2bit(0x34);
|
||
WriteCOM_2bit(0xB601);
|
||
WriteDAT_2bit(0x34);
|
||
WriteCOM_2bit(0xB602);
|
||
WriteDAT_2bit(0x34);
|
||
|
||
WriteCOM_2bit(0xB100);
|
||
WriteDAT_2bit(0x09);
|
||
WriteCOM_2bit(0xB101);
|
||
WriteDAT_2bit(0x09);
|
||
WriteCOM_2bit(0xB102);
|
||
WriteDAT_2bit(0x09);
|
||
|
||
WriteCOM_2bit(0xB700);
|
||
WriteDAT_2bit(0x24);
|
||
WriteCOM_2bit(0xB701);
|
||
WriteDAT_2bit(0x24);
|
||
WriteCOM_2bit(0xB702);
|
||
WriteDAT_2bit(0x24);
|
||
|
||
WriteCOM_2bit(0xBF00);
|
||
WriteDAT_2bit(0x01);
|
||
|
||
WriteCOM_2bit(0xB200);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xB201);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xB202);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xB300);
|
||
WriteDAT_2bit(0x05);
|
||
WriteCOM_2bit(0xB301);
|
||
WriteDAT_2bit(0x05);
|
||
WriteCOM_2bit(0xB302);
|
||
WriteDAT_2bit(0x05);
|
||
|
||
WriteCOM_2bit(0xB900);
|
||
WriteDAT_2bit(0x24);
|
||
WriteCOM_2bit(0xB901);
|
||
WriteDAT_2bit(0x24);
|
||
WriteCOM_2bit(0xB902);
|
||
WriteDAT_2bit(0x24);
|
||
|
||
WriteCOM_2bit(0xB500);
|
||
WriteDAT_2bit(0x0b);
|
||
WriteCOM_2bit(0xB501);
|
||
WriteDAT_2bit(0x0b);
|
||
WriteCOM_2bit(0xB502);
|
||
WriteDAT_2bit(0x0b);
|
||
|
||
WriteCOM_2bit(0xBA00);
|
||
WriteDAT_2bit(0x34);
|
||
WriteCOM_2bit(0xBA01);
|
||
WriteDAT_2bit(0x24);
|
||
WriteCOM_2bit(0xBA02);
|
||
WriteDAT_2bit(0x24);
|
||
|
||
WriteCOM_2bit(0xBC00);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xBC01);
|
||
WriteDAT_2bit(0xA3);
|
||
WriteCOM_2bit(0xBC02);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xBD00);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xBD01);
|
||
WriteDAT_2bit(0xa3);
|
||
WriteCOM_2bit(0xBD02);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xBE00);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xBE01);
|
||
WriteDAT_2bit(0x40);
|
||
|
||
WriteCOM_2bit(0xD100);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD101);
|
||
WriteDAT_2bit(0x2D);
|
||
WriteCOM_2bit(0xD102);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD103);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD104);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD105);
|
||
WriteDAT_2bit(0x66);
|
||
WriteCOM_2bit(0xD106);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD107);
|
||
WriteDAT_2bit(0x7F);
|
||
WriteCOM_2bit(0xD108);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD109);
|
||
WriteDAT_2bit(0x94);
|
||
WriteCOM_2bit(0xD10A);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD10B);
|
||
WriteDAT_2bit(0xB4);
|
||
WriteCOM_2bit(0xD10C);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD10D);
|
||
WriteDAT_2bit(0xD0);
|
||
WriteCOM_2bit(0xD10E);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD10F);
|
||
WriteDAT_2bit(0xFE);
|
||
WriteCOM_2bit(0xD110);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD111);
|
||
WriteDAT_2bit(0x22);
|
||
WriteCOM_2bit(0xD112);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD113);
|
||
WriteDAT_2bit(0x59);
|
||
WriteCOM_2bit(0xD114);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD115);
|
||
WriteDAT_2bit(0x87);
|
||
WriteCOM_2bit(0xD116);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD117);
|
||
WriteDAT_2bit(0xD1);
|
||
WriteCOM_2bit(0xD118);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD119);
|
||
WriteDAT_2bit(0x0C);
|
||
WriteCOM_2bit(0xD11A);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD11B);
|
||
WriteDAT_2bit(0x0E);
|
||
WriteCOM_2bit(0xD11C);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD11D);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD11E);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD11F);
|
||
WriteDAT_2bit(0x7E);
|
||
WriteCOM_2bit(0xD120);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD121);
|
||
WriteDAT_2bit(0xA4);
|
||
WriteCOM_2bit(0xD122);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD123);
|
||
WriteDAT_2bit(0xD7);
|
||
WriteCOM_2bit(0xD124);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD125);
|
||
WriteDAT_2bit(0xFA);
|
||
WriteCOM_2bit(0xD126);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD127);
|
||
WriteDAT_2bit(0x28);
|
||
WriteCOM_2bit(0xD128);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD129);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD12A);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD12B);
|
||
WriteDAT_2bit(0x61);
|
||
WriteCOM_2bit(0xD12C);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD12D);
|
||
WriteDAT_2bit(0x6E);
|
||
WriteCOM_2bit(0xD12E);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD12F);
|
||
WriteDAT_2bit(0x78);
|
||
WriteCOM_2bit(0xD130);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD131);
|
||
WriteDAT_2bit(0x7E);
|
||
WriteCOM_2bit(0xD132);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD133);
|
||
WriteDAT_2bit(0x7F);
|
||
|
||
WriteCOM_2bit(0xD200);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD201);
|
||
WriteDAT_2bit(0x2D);
|
||
WriteCOM_2bit(0xD202);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD203);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD204);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD205);
|
||
WriteDAT_2bit(0x66);
|
||
WriteCOM_2bit(0xD206);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD207);
|
||
WriteDAT_2bit(0x7F);
|
||
WriteCOM_2bit(0xD208);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD209);
|
||
WriteDAT_2bit(0x94);
|
||
WriteCOM_2bit(0xD20A);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD20B);
|
||
WriteDAT_2bit(0xB4);
|
||
WriteCOM_2bit(0xD20C);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD20D);
|
||
WriteDAT_2bit(0xD0);
|
||
WriteCOM_2bit(0xD20E);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD20F);
|
||
WriteDAT_2bit(0xFE);
|
||
WriteCOM_2bit(0xD210);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD211);
|
||
WriteDAT_2bit(0x22);
|
||
WriteCOM_2bit(0xD212);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD213);
|
||
WriteDAT_2bit(0x59);
|
||
WriteCOM_2bit(0xD214);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD215);
|
||
WriteDAT_2bit(0x87);
|
||
WriteCOM_2bit(0xD216);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD217);
|
||
WriteDAT_2bit(0xD1);
|
||
WriteCOM_2bit(0xD218);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD219);
|
||
WriteDAT_2bit(0x0C);
|
||
WriteCOM_2bit(0xD21A);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD21B);
|
||
WriteDAT_2bit(0x0E);
|
||
WriteCOM_2bit(0xD21C);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD21D);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD21E);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD21F);
|
||
WriteDAT_2bit(0x7E);
|
||
WriteCOM_2bit(0xD220);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD221);
|
||
WriteDAT_2bit(0xA4);
|
||
WriteCOM_2bit(0xD222);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD223);
|
||
WriteDAT_2bit(0xD7);
|
||
WriteCOM_2bit(0xD224);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD225);
|
||
WriteDAT_2bit(0xFA);
|
||
WriteCOM_2bit(0xD226);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD227);
|
||
WriteDAT_2bit(0x28);
|
||
WriteCOM_2bit(0xD228);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD229);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD22A);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD22B);
|
||
WriteDAT_2bit(0x61);
|
||
WriteCOM_2bit(0xD22C);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD22D);
|
||
WriteDAT_2bit(0x6E);
|
||
WriteCOM_2bit(0xD22E);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD22F);
|
||
WriteDAT_2bit(0x78);
|
||
WriteCOM_2bit(0xD230);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD231);
|
||
WriteDAT_2bit(0x7E);
|
||
WriteCOM_2bit(0xD232);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD233);
|
||
WriteDAT_2bit(0x7F);
|
||
|
||
WriteCOM_2bit(0xD300);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD301);
|
||
WriteDAT_2bit(0x2D);
|
||
WriteCOM_2bit(0xD302);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD303);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD304);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD305);
|
||
WriteDAT_2bit(0x66);
|
||
WriteCOM_2bit(0xD306);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD307);
|
||
WriteDAT_2bit(0x7F);
|
||
WriteCOM_2bit(0xD308);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD309);
|
||
WriteDAT_2bit(0x94);
|
||
WriteCOM_2bit(0xD30A);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD30B);
|
||
WriteDAT_2bit(0xB4);
|
||
WriteCOM_2bit(0xD30C);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD30D);
|
||
WriteDAT_2bit(0xD0);
|
||
WriteCOM_2bit(0xD30E);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD30F);
|
||
WriteDAT_2bit(0xFE);
|
||
|
||
WriteCOM_2bit(0xD310);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD311);
|
||
WriteDAT_2bit(0x22);
|
||
WriteCOM_2bit(0xD312);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD313);
|
||
WriteDAT_2bit(0x59);
|
||
WriteCOM_2bit(0xD314);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD315);
|
||
WriteDAT_2bit(0x87);
|
||
WriteCOM_2bit(0xD316);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD317);
|
||
WriteDAT_2bit(0xD1);
|
||
WriteCOM_2bit(0xD318);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD319);
|
||
WriteDAT_2bit(0x0C);
|
||
WriteCOM_2bit(0xD31A);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD31B);
|
||
WriteDAT_2bit(0x0E);
|
||
WriteCOM_2bit(0xD31C);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD31D);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD31E);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD31F);
|
||
WriteDAT_2bit(0x7E);
|
||
|
||
WriteCOM_2bit(0xD320);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD321);
|
||
WriteDAT_2bit(0xA4);
|
||
WriteCOM_2bit(0xD322);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD323);
|
||
WriteDAT_2bit(0xD7);
|
||
WriteCOM_2bit(0xD324);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD325);
|
||
WriteDAT_2bit(0xFA);
|
||
WriteCOM_2bit(0xD326);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD327);
|
||
WriteDAT_2bit(0x28);
|
||
WriteCOM_2bit(0xD328);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD329);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD32A);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD32B);
|
||
WriteDAT_2bit(0x61);
|
||
WriteCOM_2bit(0xD32C);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD32D);
|
||
WriteDAT_2bit(0x6E);
|
||
WriteCOM_2bit(0xD32E);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD32F);
|
||
WriteDAT_2bit(0x78);
|
||
|
||
WriteCOM_2bit(0xD330);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD331);
|
||
WriteDAT_2bit(0x7E);
|
||
WriteCOM_2bit(0xD332);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD333);
|
||
WriteDAT_2bit(0x7F);
|
||
|
||
WriteCOM_2bit(0xD400);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD401);
|
||
WriteDAT_2bit(0x2D);
|
||
WriteCOM_2bit(0xD402);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD403);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD404);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD405);
|
||
WriteDAT_2bit(0x66);
|
||
WriteCOM_2bit(0xD406);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD407);
|
||
WriteDAT_2bit(0x7F);
|
||
WriteCOM_2bit(0xD408);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD409);
|
||
WriteDAT_2bit(0x94);
|
||
WriteCOM_2bit(0xD40A);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD40B);
|
||
WriteDAT_2bit(0xB4);
|
||
WriteCOM_2bit(0xD40C);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD40D);
|
||
WriteDAT_2bit(0xD0);
|
||
WriteCOM_2bit(0xD40E);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD40F);
|
||
WriteDAT_2bit(0xFE);
|
||
|
||
WriteCOM_2bit(0xD410);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD411);
|
||
WriteDAT_2bit(0x22);
|
||
WriteCOM_2bit(0xD412);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD413);
|
||
WriteDAT_2bit(0x59);
|
||
WriteCOM_2bit(0xD414);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD415);
|
||
WriteDAT_2bit(0x87);
|
||
WriteCOM_2bit(0xD416);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD417);
|
||
WriteDAT_2bit(0xD1);
|
||
WriteCOM_2bit(0xD418);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD419);
|
||
WriteDAT_2bit(0x0C);
|
||
WriteCOM_2bit(0xD41A);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD41B);
|
||
WriteDAT_2bit(0x0E);
|
||
WriteCOM_2bit(0xD41C);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD41D);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD41E);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD41F);
|
||
WriteDAT_2bit(0x7E);
|
||
|
||
WriteCOM_2bit(0xD420);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD421);
|
||
WriteDAT_2bit(0xA4);
|
||
WriteCOM_2bit(0xD422);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD423);
|
||
WriteDAT_2bit(0xD7);
|
||
WriteCOM_2bit(0xD424);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD425);
|
||
WriteDAT_2bit(0xFA);
|
||
WriteCOM_2bit(0xD426);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD427);
|
||
WriteDAT_2bit(0x28);
|
||
WriteCOM_2bit(0xD428);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD429);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD42A);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD42B);
|
||
WriteDAT_2bit(0x61);
|
||
WriteCOM_2bit(0xD42C);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD42D);
|
||
WriteDAT_2bit(0x6E);
|
||
WriteCOM_2bit(0xD42E);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD42F);
|
||
WriteDAT_2bit(0x78);
|
||
|
||
WriteCOM_2bit(0xD430);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD431);
|
||
WriteDAT_2bit(0x7E);
|
||
WriteCOM_2bit(0xD432);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD433);
|
||
WriteDAT_2bit(0x7F);
|
||
|
||
WriteCOM_2bit(0xD500);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD501);
|
||
WriteDAT_2bit(0x2D);
|
||
WriteCOM_2bit(0xD502);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD503);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD504);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD505);
|
||
WriteDAT_2bit(0x66);
|
||
WriteCOM_2bit(0xD506);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD507);
|
||
WriteDAT_2bit(0x7F);
|
||
WriteCOM_2bit(0xD508);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD509);
|
||
WriteDAT_2bit(0x94);
|
||
WriteCOM_2bit(0xD50A);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD50B);
|
||
WriteDAT_2bit(0xB4);
|
||
WriteCOM_2bit(0xD50C);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD50D);
|
||
WriteDAT_2bit(0xD0);
|
||
WriteCOM_2bit(0xD50E);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD50F);
|
||
WriteDAT_2bit(0xFE);
|
||
|
||
WriteCOM_2bit(0xD510);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD511);
|
||
WriteDAT_2bit(0x22);
|
||
WriteCOM_2bit(0xD512);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD513);
|
||
WriteDAT_2bit(0x59);
|
||
WriteCOM_2bit(0xD514);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD515);
|
||
WriteDAT_2bit(0x87);
|
||
WriteCOM_2bit(0xD516);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD517);
|
||
WriteDAT_2bit(0xD1);
|
||
WriteCOM_2bit(0xD518);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD519);
|
||
WriteDAT_2bit(0x0C);
|
||
WriteCOM_2bit(0xD51A);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD51B);
|
||
WriteDAT_2bit(0x0E);
|
||
WriteCOM_2bit(0xD51C);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD51D);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD51E);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD51F);
|
||
WriteDAT_2bit(0x7E);
|
||
|
||
WriteCOM_2bit(0xD520);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD521);
|
||
WriteDAT_2bit(0xA4);
|
||
WriteCOM_2bit(0xD522);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD523);
|
||
WriteDAT_2bit(0xD7);
|
||
WriteCOM_2bit(0xD524);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD525);
|
||
WriteDAT_2bit(0xFA);
|
||
WriteCOM_2bit(0xD526);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD527);
|
||
WriteDAT_2bit(0x28);
|
||
WriteCOM_2bit(0xD528);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD529);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD52A);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD52B);
|
||
WriteDAT_2bit(0x61);
|
||
WriteCOM_2bit(0xD52C);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD52D);
|
||
WriteDAT_2bit(0x6E);
|
||
WriteCOM_2bit(0xD52E);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD52F);
|
||
WriteDAT_2bit(0x78);
|
||
|
||
WriteCOM_2bit(0xD530);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD531);
|
||
WriteDAT_2bit(0x7E);
|
||
WriteCOM_2bit(0xD532);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD533);
|
||
WriteDAT_2bit(0x7F);
|
||
|
||
WriteCOM_2bit(0xD600);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD601);
|
||
WriteDAT_2bit(0x2D);
|
||
WriteCOM_2bit(0xD602);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD603);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD604);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD605);
|
||
WriteDAT_2bit(0x66);
|
||
WriteCOM_2bit(0xD606);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD608);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD609);
|
||
WriteDAT_2bit(0x94);
|
||
WriteCOM_2bit(0xD60A);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD60B);
|
||
WriteDAT_2bit(0xB4);
|
||
WriteCOM_2bit(0xD60C);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD60D);
|
||
WriteDAT_2bit(0xD0);
|
||
WriteCOM_2bit(0xD60E);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xD60F);
|
||
WriteDAT_2bit(0xFE);
|
||
|
||
WriteCOM_2bit(0xD610);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD612);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD613);
|
||
WriteDAT_2bit(0x59);
|
||
WriteCOM_2bit(0xD614);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD615);
|
||
WriteDAT_2bit(0x87);
|
||
WriteCOM_2bit(0xD616);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xD617);
|
||
WriteDAT_2bit(0xD1);
|
||
WriteCOM_2bit(0xD618);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD619);
|
||
WriteDAT_2bit(0x0C);
|
||
WriteCOM_2bit(0xD61A);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD61B);
|
||
WriteDAT_2bit(0x0E);
|
||
WriteCOM_2bit(0xD61C);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD61D);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD61E);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD61F);
|
||
WriteDAT_2bit(0x7E);
|
||
|
||
WriteCOM_2bit(0xD620);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD621);
|
||
WriteDAT_2bit(0xA4);
|
||
WriteCOM_2bit(0xD622);
|
||
WriteDAT_2bit(0x02);
|
||
WriteCOM_2bit(0xD623);
|
||
WriteDAT_2bit(0xD7);
|
||
WriteCOM_2bit(0xD624);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD625);
|
||
WriteDAT_2bit(0xFA);
|
||
WriteCOM_2bit(0xD626);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD627);
|
||
WriteDAT_2bit(0x28);
|
||
WriteCOM_2bit(0xD628);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD629);
|
||
WriteDAT_2bit(0x45);
|
||
WriteCOM_2bit(0xD62A);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD62B);
|
||
WriteDAT_2bit(0x61);
|
||
WriteCOM_2bit(0xD62C);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD62D);
|
||
WriteDAT_2bit(0x6E);
|
||
WriteCOM_2bit(0xD62E);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD62F);
|
||
WriteDAT_2bit(0x78);
|
||
|
||
WriteCOM_2bit(0xD630);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD631);
|
||
WriteDAT_2bit(0x7E);
|
||
WriteCOM_2bit(0xD632);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xD633);
|
||
WriteDAT_2bit(0x7F);
|
||
|
||
WriteCOM_2bit(0xF000);
|
||
WriteDAT_2bit(0x55);
|
||
WriteCOM_2bit(0xF001);
|
||
WriteDAT_2bit(0xAA);
|
||
WriteCOM_2bit(0xF003);
|
||
WriteDAT_2bit(0x08);
|
||
WriteCOM_2bit(0xF004);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xB600);
|
||
WriteDAT_2bit(0x0A);
|
||
WriteCOM_2bit(0xB700);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xB701);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xB800);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xB801);
|
||
WriteDAT_2bit(0x05);
|
||
WriteCOM_2bit(0xB802);
|
||
WriteDAT_2bit(0x05);
|
||
WriteCOM_2bit(0xB803);
|
||
WriteDAT_2bit(0x05);
|
||
|
||
//WriteCOM_2bit(0xBA00 ); //WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xBC00);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xBC01);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xBC02);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xBD00);
|
||
WriteDAT_2bit(0x02);/////////////////////////////////fps
|
||
WriteCOM_2bit(0xBD01);
|
||
WriteDAT_2bit(0x90);
|
||
WriteCOM_2bit(0xBD02);
|
||
WriteDAT_2bit(0x07);
|
||
WriteCOM_2bit(0xBD03);
|
||
WriteDAT_2bit(0x31);
|
||
WriteCOM_2bit(0xBD04);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xBE00);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xBE01);
|
||
WriteDAT_2bit(0x84);
|
||
WriteCOM_2bit(0xBE02);
|
||
WriteDAT_2bit(0x07);
|
||
WriteCOM_2bit(0xBE03);
|
||
WriteDAT_2bit(0x31);
|
||
WriteCOM_2bit(0xBE04);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xBF00);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xBF01);
|
||
WriteDAT_2bit(0x84);
|
||
WriteCOM_2bit(0xBF02);
|
||
WriteDAT_2bit(0x07);
|
||
WriteCOM_2bit(0xBF03);
|
||
WriteDAT_2bit(0x31);
|
||
WriteCOM_2bit(0xBF04);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xCC00);
|
||
WriteDAT_2bit(0x03);
|
||
WriteCOM_2bit(0xCC01);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xCC02);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xB100);
|
||
WriteDAT_2bit(0xF8);
|
||
WriteCOM_2bit(0xB101);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xF000);
|
||
WriteDAT_2bit(0x55);
|
||
WriteCOM_2bit(0xF001);
|
||
WriteDAT_2bit(0xAA);
|
||
WriteCOM_2bit(0xF002);
|
||
WriteDAT_2bit(0x52);
|
||
WriteCOM_2bit(0xF003);
|
||
WriteDAT_2bit(0x08);
|
||
WriteCOM_2bit(0xF004);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xB400);
|
||
WriteDAT_2bit(0x10);
|
||
|
||
WriteCOM_2bit(0xF000);
|
||
WriteDAT_2bit(0xAA);
|
||
|
||
WriteCOM_2bit(0xFF01);
|
||
WriteDAT_2bit(0x55);
|
||
WriteCOM_2bit(0xFF02);
|
||
WriteDAT_2bit(0x25);
|
||
WriteCOM_2bit(0xFF03);
|
||
WriteDAT_2bit(0x01);
|
||
WriteCOM_2bit(0xFF04);
|
||
WriteDAT_2bit(0x00);
|
||
|
||
WriteCOM_2bit(0xF901);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0xF902);
|
||
WriteDAT_2bit(0x0F);
|
||
WriteCOM_2bit(0xF903);
|
||
WriteDAT_2bit(0x23);
|
||
WriteCOM_2bit(0xF904);
|
||
WriteDAT_2bit(0x37);
|
||
WriteCOM_2bit(0xF905);
|
||
WriteDAT_2bit(0x4B);
|
||
WriteCOM_2bit(0xF906);
|
||
WriteDAT_2bit(0x5F);
|
||
WriteCOM_2bit(0xF907);
|
||
WriteDAT_2bit(0x73);
|
||
WriteCOM_2bit(0xF908);
|
||
WriteDAT_2bit(0x87);
|
||
WriteCOM_2bit(0xF909);
|
||
WriteDAT_2bit(0x98);
|
||
|
||
WriteCOM_2bit(0xF90A);
|
||
WriteDAT_2bit(0xAF);
|
||
|
||
WriteCOM_2bit(0x2A00);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0x2A01);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0x2A02);
|
||
WriteDAT_2bit(0x01);//01
|
||
WriteCOM_2bit(0x2A03);
|
||
WriteDAT_2bit(0xDF);//DF
|
||
|
||
WriteCOM_2bit(0x2B00);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0x2B01);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0x2B02);
|
||
WriteDAT_2bit(0x03);//03
|
||
WriteCOM_2bit(0x2B03);
|
||
WriteDAT_2bit(0x1F);//1F
|
||
|
||
/* WriteCOM_2bit(0x3600); WriteDAT_2bit(0x00); */
|
||
/* WriteCOM_2bit(0x4400); WriteDAT_2bit(0x04); */
|
||
/* WriteCOM_2bit(0x4401); WriteDAT_2bit(0x1f); */
|
||
|
||
/* WriteCOM_2bit(0xb200); WriteDAT_2bit(0xff); */
|
||
/* WriteCOM_2bit(0xb201); WriteDAT_2bit(0x01); */
|
||
/* WriteCOM_2bit(0xb202); WriteDAT_2bit(0x00); */
|
||
/* WriteCOM_2bit(0xb203); WriteDAT_2bit(0xff); */
|
||
/* WriteCOM_2bit(0xb204); WriteDAT_2bit(0xff); */
|
||
|
||
/* {0xB2, 5, {0x7f, 0x01, 0x00, 0xff, 0xff}},//有关TE时间控制 */
|
||
|
||
WriteCOM_2bit(0x3500);
|
||
WriteDAT_2bit(0x00);
|
||
WriteCOM_2bit(0x3A00);
|
||
WriteDAT_2bit(0x55);
|
||
//
|
||
//
|
||
//
|
||
WriteCOM_2bit(0x1100);
|
||
delay_2ms(20);
|
||
WriteCOM_2bit(0x2900);
|
||
delay_2ms(10);
|
||
WriteCOM_2bit(0x2C00);
|
||
//delay_2ms(60);
|
||
}
|
||
|
||
static void HX8357_init_code(const InitCode *code, u8 cnt)
|
||
{
|
||
for (u8 i = 0; i < cnt; i++) {
|
||
if (code[i].cmd == REGFLAG_DELAY) {
|
||
lcd_delay(code[i].cnt);
|
||
} else {
|
||
WriteCOM_2bit(code[i].cmd);
|
||
for (u8 j = 0; j < code[i].cnt; j++) {
|
||
WriteDAT_2bit(code[i].dat[j]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void HX8357_lvgl_Fill(u16 xs, u16 xe, u16 ys, u16 ye, u8 *img)
|
||
{
|
||
u32 len = 0;
|
||
/* lcd_interface_non_block_wait(); */
|
||
len = (xe + 1 - xs) * (ye + 1 - ys) * 2;
|
||
WriteCOM_2bit(0x2A00);
|
||
WriteDAT_2bit(xs >> 8);
|
||
WriteCOM_2bit(0x2A01);
|
||
WriteDAT_2bit(xs);
|
||
WriteCOM_2bit(0x2A02);
|
||
WriteDAT_2bit(xe >> 8);
|
||
WriteCOM_2bit(0x2A03);
|
||
WriteDAT_2bit(xe);
|
||
|
||
WriteCOM_2bit(0x2B00);
|
||
WriteDAT_2bit(ys >> 8);
|
||
WriteCOM_2bit(0x2B01);
|
||
WriteDAT_2bit(ys);
|
||
WriteCOM_2bit(0x2B02);
|
||
WriteDAT_2bit(ye >> 8);
|
||
WriteCOM_2bit(0x2B03);
|
||
WriteDAT_2bit(ye);
|
||
|
||
WriteCOM_2bit(0x2C00);
|
||
WriteDAT_DMA(img, len);
|
||
}
|
||
|
||
static void HX8357_led_ctrl(u8 status)
|
||
{
|
||
//背光控制以及放在//lcd_te_driver.c 优化开机显示
|
||
/*lcd_bl_pinstate(status);*/
|
||
}
|
||
|
||
void HX8357_test(void)
|
||
{
|
||
lcd_bl_pinstate(BL_ON);
|
||
while (1) {
|
||
os_time_dly(100);
|
||
HX8357_clear_screen(BLUE);
|
||
printf("LCD_HX8357_TSET_BLUE\n");
|
||
os_time_dly(100);
|
||
HX8357_clear_screen(GRED);
|
||
printf("LCD_HX8357_TSET_GRED\n");
|
||
os_time_dly(100);
|
||
HX8357_clear_screen(BRRED);
|
||
printf("LCD_HX8357_TSET_BRRED\n");
|
||
os_time_dly(100);
|
||
HX8357_clear_screen(YELLOW);
|
||
printf("LCD_HX8357_TSET_YELLOW\n");
|
||
}
|
||
}
|
||
|
||
static int HX8357_init(void)
|
||
{
|
||
printf("LCD_HX8357 init_start\n");
|
||
gpio_direction_output(IO_PORTC_09, 1);
|
||
gpio_direction_output(IO_PORTH_00, 0);
|
||
HX8357_reset();
|
||
//HX8357_set_direction(ROTATE_DEGREE_0);
|
||
lcd_35510_init();
|
||
init_TE(HX8357_Fill);
|
||
/* HX8357_test(); */
|
||
printf("LCD_HX8357 config succes\n");
|
||
return 0;
|
||
}
|
||
|
||
|
||
REGISTER_LCD_DEV(LCD_HX8357) = {
|
||
.name = "HX8357",
|
||
.lcd_width = LCD_W,
|
||
.lcd_height = LCD_H,
|
||
.color_format = LCD_COLOR_RGB565,
|
||
.column_addr_align = 1,
|
||
.row_addr_align = 1,
|
||
.LCD_Init = HX8357_init,
|
||
.SetDrawArea = HX8357_SetRange,
|
||
.LCD_Draw = HX8357_draw,
|
||
.LCD_Draw_1 = HX8357_draw_1,
|
||
.LCD_DrawToDev = HX8357_Fill,//应用层直接到设备接口层,需要做好缓冲区共用互斥,慎用!
|
||
.LCD_Lvgl_Full = HX8357_lvgl_Fill,//LVGL发送数据接口
|
||
.LCD_ClearScreen = HX8357_clear_screen,
|
||
.Reset = HX8357_reset,
|
||
.BackLightCtrl = HX8357_led_ctrl,
|
||
};
|
||
|
||
#endif
|
||
|
||
|
||
|