diff --git a/src/epd/epd.c b/src/epd/epd.c index c48d384..56e79a8 100644 --- a/src/epd/epd.c +++ b/src/epd/epd.c @@ -5,7 +5,7 @@ /******************************************************************************/ -// 硬件参数 +// 纭欢鍙傛暟 int scr_w; int scr_h; int scr_mode; @@ -13,12 +13,12 @@ int line_bytes; int scr_padding; -// 窗口参数 +// 绐楀彛鍙傛暟 int win_w; int win_h; -// x必须是8的倍数,且x2>x1, Y2>y1 +// x蹇呴』鏄8鐨勫嶆暟锛屼笖x2>x1, Y2>y1 void epd_window(int x1, int y1, int x2, int y2) { int tmp; @@ -218,16 +218,11 @@ int epd_lut_size(void) return i; } -void epd_init(int w, int h, int mode) +void epd_init(void) { epd_hw_open(); - scr_w = w; - scr_h = h; - scr_mode = mode; - line_bytes = (scr_w+7)>>3; - scr_padding = line_bytes*8-scr_w; - printk("epd_init: scr: %d x %d\n", scr_w, scr_h); + printk("epd_init: %dx%d\n", scr_w, scr_h); epd_power(1); epd_reset(); diff --git a/src/epd/epd.h b/src/epd/epd.h index 1882338..7929e56 100644 --- a/src/epd/epd.h +++ b/src/epd/epd.h @@ -28,11 +28,12 @@ int sf_read(int addr, int len, u8 *buf); int selflash(int otp_boot); // epd_hw -void epd_hw_init(u32 config0, u32 config1); +void epd_hw_init(u32 config0, u32 config1, int w, int h, int mode); void epd_hw_open(void); void epd_hw_close(void); void epd_reset(void); void epd_wait(void); +int epd_busy(void); void epd_power(int on); void epd_cmd(int cmd); @@ -46,8 +47,7 @@ void epd_read(u8 *data, int len); void epd_cmd_read(int cmd, u8 *data, int len); // epd_xxx - -void epd_init(int x, int y, int mode); +void epd_init(void); void epd_load_lut(u8 *lut); void epd_update(int mode); void epd_sleep(void); diff --git a/src/epd/epd_hw.c b/src/epd/epd_hw.c index e37793d..014dd42 100644 --- a/src/epd/epd_hw.c +++ b/src/epd/epd_hw.c @@ -71,7 +71,7 @@ void delay_ms(int ms) /******************************************************************************/ -void epd_hw_init(u32 config0, u32 config1) +void epd_hw_init(u32 config0, u32 config1, int w, int h, int mode) { epio_pwr = (config0>>24)&0xff; epio_busy = (config0>>16)&0xff; @@ -80,6 +80,12 @@ void epd_hw_init(u32 config0, u32 config1) epio_cs = (config1>>16)&0xff; epio_clk = (config1>> 8)&0xff; epio_sdi = (config1>> 0)&0xff; + + scr_w = w; + scr_h = h; + scr_mode = mode; + line_bytes = (scr_w+7)>>3; + scr_padding = line_bytes*8-scr_w; } void epd_hw_open(void) @@ -147,6 +153,12 @@ void epd_wait(void) } +int epd_busy(void) +{ + return EPD_BUSY(); +} + + void epd_power(int on) { EPD_PWR(on); diff --git a/src/user_custs1_impl.c b/src/user_custs1_impl.c index 32f9492..52a6bbe 100644 --- a/src/user_custs1_impl.c +++ b/src/user_custs1_impl.c @@ -228,7 +228,7 @@ void clock_draw(int full) { char tbuf[64]; - epd_init(104, 212, EPD_BWR|ROTATE_3); + epd_init(); memset(fb_bw, 0xff, scr_h*line_bytes); memset(fb_rr, 0x00, scr_h*line_bytes); diff --git a/src/user_peripheral.c b/src/user_peripheral.c index 3ef6fff..1682f1d 100644 --- a/src/user_peripheral.c +++ b/src/user_peripheral.c @@ -183,7 +183,7 @@ void user_app_init(void) adv_count = 0; fspi_config(0x00030605); - epd_hw_init(0x23200700, 0x05210006); // for 2.13 board BW + epd_hw_init(0x23200700, 0x05210006, 104, 212, EPD_BWR|ROTATE_3); // for 2.13 board BW selflash(otp_boot);