home
recent changes
unmerged conflicts (0)
view
source
history
Projects/ES600/AUOK190x
Page source:
Collection of command functions of the AUOK190x epaper controllers. == Update modes - K1900 == |= bits |= Mode | 000 | Mode 0: gray refresh with flash, 4bit gray | 001 | Mode 1: gray refresh without flash, 4bit gray | 010 | Mode 2: text mode, 2bit gray | 011 | Mode 3: highlight mode, 1bit gray | 100 | Mode 4: handwriting mode, 1bit gray | 101 | Mode 5: auto select mode == Update modes - K1901 == |= bits |= Mode | 000 | Mode 0: gray refresh with flash, 16bit gray | 001 | Mode 1: gray refresh without flash, 16bit gray | 010 | Mode 2: text mode without flash, 4bit gray | 011 | Mode 3: text mode with flash, 4bit gray | 100 | Mode 4: high-speed mode without flash, 2bit gray, without LUT | 101 | Mode 5: high-speed mode with flash, 2bit gray | 111 | Mode 7: auto select mode == AUOK190X_CMD_INIT * command: 0x0000 * write-params: 1 * read-params: 0 === param 1 - K1900 === * bit13: temperature average function * bit12: data_filter_n for mode 2 and 3 (1: bypass data, 0: filter input data) * bit[11:10]: rotation setting * bit09: data inverse function (0: 0000 = black, 1111 = white; 1: 0000 = white, 1111 = black) * bit [8:6]: input data format * bit5: output data format * bit [4:2]: RES[2:0] * bit01: scan up/down (0: scan down, first line=Gm => Gm-1 => ... => G2 => G1=last line, 1: scan up, inverted) * bit00: shift left/right (0: shift left, first=Sn => Sn-1 => ... => S2 => S1=last, 1: shift right, inverted) === param 1 - K 1901 === * bit14: OEINV function (gate pulse, 0:low, 1:high) * bit13: CHDS function (0: single gate driver, 1: double gate driver) * bit12: data_filter_n (1: bypass data, 0: filter input data) * bit11: FIXME, seems to be used in conjunction with bit10 for rotation stuff, K1901 does not declare it * bit10: RES[4] - resolution setting * bit09: data inverse function (0: 0000 = black, 1111 = white; 1: 0000 = white, 1111 = black) * bit [8:6]: input data format * bit [5:2]: RES[3:0] * bit01: scan up/down (0: scan down, first line=Gm => Gm-1 => ... => G2 => G1=last line, 1: scan up, inverted) * bit00: shift left/right (0: shift left, first=Sn => Sn-1 => ... => S2 => S1=last, 1: shift right, inverted) === data filtering K1900 === * modes 2: 16-step gray to 4 step gray * modes 3: 16-step gray to 2-step gray === data filtering K1901 === * modes 2+3: 16-step gray to 4 step gray * modes 4+5: 16-step and 4-step gray to 2-step gray === rotation on K1900 === |= value |= rotation | 00 | normal | 01 | 90deg | 10 | 180deg | 11 | 270deg For mode 01 (90degree) screen resolution is 600x800 and trasmitted as such (i.e. all commands send use this dimension). The epd controller transforms everything to the real dimension of the display (i.e. 800x600). === data input format - K1900 === |= format |= D[15:12] |= D[11:08] |= D[07:04] |= D[03:00] | 0 | P4 | P3 | P2 | P1 | 1 | P3 | P4 | P1 | P2 === data output format - K1900 === |= format |= D[7:6] |= D[5:4] |= D[3:2] |= D[1:0] | 0 | P4 | P3 | P2 | P1 | 1 | P3 | P4 | P1 | P2 === data input format - K1901 === |= format |= D[15:12] |= D[11:08] |= D[07:04] |= D[03:00] | 0 | P4 | P3 | P2 | P1 | 1 | P3 | P4 | P1 | P2 | 2 | P2 | dummy | P1 | dummy | 3 | P1 | dummy | P2 | dummy | 4 | dummy | P2 | dummy | P1 | 5 | dummy | P1 | dummy | P2 | 6 | P2[15:12] | P2[11:8] | P1[7:4] | P1[3:0] | 7 | P1[15:12] | P1[11:8] | P2[7:4] | P2[3:0] === resolution - K1900 === |= RES[2:0] |= resolution |= orientation | 000 | 800 x 600 | landscape | 001 | 1024 x 768 | landscape | 100 | 600 x 800 | portrait | 101 | 768 x 1024 | portrait | everything else | 800 x 600 | landscape === resolution - K1901 === |= RES[4]+RES[3:0] |= resolution |= orientation |= IPL | 11000 | 600 x 800 | portrait | 1 | 11001 | 768 x 1024 | portrait | 1 | 11010 | reserved | 11011 | 600 x 1024 | portrait | 1 | 11100 | 825 x 1200 | portrait | 1 | 11101 | 1024 x 1280 | portrait | 1 | 11110 | 1200 x 1600 | portrait | 1 | 10000 | 800 x 1024 | portrait | 1 | 10001 | 825 x 1280 | portrait | 1 | 10010 | 800 x 1280 | portrait | 1 | 10011 | 768 x 1280 | portrait | 1 | 10100 | 960 x 1280 | portrait | 1 | 00000 | 800 x 600 | landscape | 1 | 00001 | 1024 x 768 | landscape | 0 | 00010 | reserved | 00011 | 1024 x 600 | landscape | 0 | 00100 | 1200 x 825 | landscape | 0 | 00101 | 1280 x 1024 | landscape | 0 | 00110 | 1600 x 1200 | landscape | 0 | 00111 | 1024 x 800 | landscape | 0 | 01000 | 1280 x 825 | landscape | 0 | 01001 | 1280 x 800 | landscape | 0 | 01010 | 1280 x 768 | landscape | 0 | 01011 | 1280 x 960 | landscape | 0 | everything else | 800 x 600 | landscape | 0 == AUOK190X_CMD_STANDBY * command: 0x0001 * write param: 0 * read param: 0 * enter standby mode == AUOK190X_CMD_WAKEUP * command: 0x0002 * write param: 0 * read param: 0 * exit standby mode * busy_n must be 0 and standby mode must be active == AUOK190X_CMD_TCON_RESET * command: 0x0003 * write param: 1 * read param: 0 === param 1 === * bit1: is power-on reset (0 / 1) * bit0: tcon reset (0: tcon reset, 1: normal reset) * MISSING additional documentation on the purpose of each option == AUOK1900_CMD_LUT_FREQUENCY * command: 0x0004 * undocumented == AUOK1901_CMD_LUT_INTERFACE * command: 0x0005 * undocumented == AUOK1900_CMD_FULLDISP * command: 0x1000 * undocumented == AUOK1900_CMD_PARTIALDISP and AUOK1901_CMD_DMA_START Update a region of the display area. * command: 0x1001 * write param: 4 + pixel data * read param: 0 === param 1 on K1900 === * bit15: 0 = flash / 1 = erase * bit[14:12]: update mode * bit[11:0]: x coordinate of start position - must be 2n + 1 Partial update mode could be the same as the mode selection for AUOK1901_DDMA_START. === param 1 on K1901 === * bit13: host-side orientation of image data (0: landscape, 1: portrait) * bit12: manual (K1901) says: 0 = keep foreground data in overlap area, 1 = keep background data in overlap area * bit[11:0]: x coordinate of start position === param 2 === * bit[11:0]: y coordiante of start position - must be 2n + 1 === param 3 === * bit[11:0]: width of update region must be 4n with n > 2 === param 4 === * bit[11:0]: height of update region - must be 2n === param above 4 === Pixel data according to the format selection set during init. == AUOK190X_CMD_DATA_STOP Stop receiving pixel data and start transmitting data to the panel. * command: 0x1002 * write param: 0 * read param: 0 == AUOK190X_CMD_LUT_START * command: 0x1003 == AUOK190X_CMD_DISP_REFRESH Refresh display from sdram data and mode 0 waveform. * command: 0x1004 * write param: 0 * read param: 0 == AUOK190X_CMD_DISP_RESET Reset display based on ResetLut (LUT24 ??) and update sdram data automatically. * command: 0x1005 == AUOK1900_CMD_ROTATION * command: 0x1006 * undocumented == AUOK1901_CMD_CURSOR_START * command: 0x1007 == AUOK1900_CMD_LUT_STOP Stop transmitting data to LUT. * command: 0x1009 == AUOK1901_CMD_DDMA_START * command: 0x1009 * write param: 5 * read para: 0 === param 1 === * bit15: 0: non-flash, 1:flash * bit[14:12]: mode selection * bit11: rotation function for display (0: 180deg, 1: 0deg) === Modes === |= bits |= Mode | 000 | Mode 0: gray refresh with flash, 16bit gray | 001 | Mode 1: gray refresh without flash, 16bit gray | 010 | Mode 2: text mode without flash, 4bit gray | 011 | Mode 3: text mode with flash, 4bit gray | 100 | Mode 4: high-speed mode without flash, 2bit gray, without LUT | 101 | Mode 5: high-speed mode with flash, 2bit gray | 111 | Mode 7: auto select mode === param 2 === X coordinate === param 3 === X coordinate === param 4 === Width === param 5 === Height == AUOK1901_CMD_DCURSOR_START * write param: 3 * read para: 0 === param 1 === * bit15: rotation function, 0: 180deg, 1: 0deg * bit[14:12]: mode selection * bit[11:0]: X coordiante === param 2 === * bit15: 1: flash, 0: non-flash * bit[13:12]: CS[5:4] cursor frame number * bit[11:0]: Y coordinate === param 3 === * bit[15:12]: CS[3:0] cursor frame number * bit[11:10]: CSR_IPROT[1:0] cursor rotation in place == AUOK190X_CMD_PRE_DISPLAY_START * command: 0x100D == AUOK190X_CMD_PRE_DISPLAY_STOP * command: 0x100F == AUOK190X_CMD_FLASH_W * command: 0x2000 == AUOK190X_CMD_FLASH_E * command: 0x2001 == AUOK190X_CMD_FLASH_STS * command: 0x2002 == AUOK190X_CMD_FRAMERATE * command: 0x3000 == AUOK190X_CMD_READ_VERSION * command: 0x4000 * write-params: 0 * read-params: 4 === param 1 - temperature information === * bits [8:0] = mask 0xff * move >> 1 to get positive int degree * bit 0 denotes half degree * 110010010 - -55 * ... * 111111110 - -1 * 111111111 - -0.5 * 000000000 - 0 * 000000001 - 0.5 * 000000010 - 1 * ... * 001111111 - 63.5 * ... === param 2 - epd type === * bits [7:0] * 000 00000 - ESK 1.2.3 * 000 00001 - ESK 2.0.6 * 000 00000 - reserved * 001 00000 - ERK 1.0 * 001 00001 - ERK 1.0.7 * 001 00010 - ERK 1.1.X * 001 00011 - ERK 1.1.Y * 001 00100 - ERK 1.2 * 001 00101 - ERK 1.4.A01 === param 3 - panel size and model name/version === * bits [15:10] - panel size in inch (i.e. 6 or 9) * bits [9:6] - panel size float part (i.e. 5 for x.5 inch) * bits [5:0] - model name or version * 000110 0000 000000 - Z060S / U-cronix IC * 000110 0000 000001 - A060SE02 / AUO-K7900 * 001001 0000 000000 - A090XE01 / AUO-K7900 * 000010 0000 000000 - A020AE01 / AUO-K0200 * 000010 0001 000000 - A021AE01 / AUO-K0200 === param 4 - version information === * bits [15:8] - TCON version * 00000000 - * 00000010 - * 00000011 - * 00000100 - * 00000101 - * bits [7:0] - LUT version * 00000000 - * 00000010 - * 00000011 - * 00000100 - * 00000101 - == AUOK190X_CMD_READ_STATUS * command: 0x4001 * write params: 0 * read params: 1 === param 1 - K1900 === * bit[1:0]: power status (0 .. normal, 1 .. standby) * bit2: aging mode (0 .. normal, 1 .. aging) * bit3: busy (0.. busy, 1 .. not busy) * bit4: reset (0 .. reset, 1 .. normal) === param 1 - K1901 === * bit0: power status (0 .. normal, 1 .. standby) * bit1: aging mode (0 .. normal, 1 .. aging) * bit3: busy (0.. busy, 1 .. not busy) * bit4: reset (0 .. reset, 1 .. normal) * bit5: black/white (0 .. gray, 1 .. real black/white) == AUOK190?_CMD_READ_DATA == * command: 0x4002 * check if also available on K1900 == AUOK190X_CMD_READ_LUT * command: 0x4003 == AUOK190X_CMD_DRIVERTIMING * command: 0x5000 == AUOK190X_CMD_LBALANCE * command: 0x5001 == AUOK190X_CMD_AGINGMODE * command: 0x6000 == AUOK190X_CMD_AGINGEXIT * command: 0x6001