The T5UIC1 is a UART based screen based on the DWIN T5 CPU. The T5UIC1 only has a single T5 CPU core and uses a unique reduced instruction set. It is best suited for low-cost applications that do not require a touchscreen or complex UI functions.
Display features:
- 65k color TFT display (RGB565)
- Basic drawing commands (rectangle, lines, dots)
- Chinese and ASCII text display as well as the ability to display formatted numeric variables
- JPEG icon and image decoding and display
- EAN-13 barcode generation and QR code generation
- 384kb storage for fonts
- 6x12 to 32x64 dot matrix ASCII characters and 12x12 to 64x64 dot matrix GB2312 character library
- 512kb storage for images and icons. (Divided into 16 banks of 32kb. Single image cannot exceed 32kb)
- Divided into 16 banks of 32kb.
- Can store 16 JPEG images, not exceeding 32kb each.
- Can store up to 16 JPEG icon library files. (A single library file can occupy multiple banks)
- 32kb of SRAM, for user specified data.
- Can be read and written to during runtime. Initialized to
0
on boot. - Useful for uploading new pictures during runtime.
- Can be read and written to during runtime. Initialized to
- 16kb flash memory, for user specified data.
- Can be read and written to during runtime. Contents persist between reboots.
- 100,000 write cycles.
- Useful for persistent configuration options.
- MicroSD/SDHC slot for firmware, fonts & image updates.
- An additional full-duplex serial port that can be controlled through UART.
- Useful for daisy chaining peripherals to the display on processors with a single UART line.
- Adjustable CPU clock (240MHz and 400MHz)
The device has a configurable baud-rate. The baud-rate is configured through the SD card config file T5UIC1.CFG
.
The serial port is always in 8N1 mode.
All colors are in the 16 bit RGB565 format. 16 Bits:
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
R4 | R3 | R2 | R1 | R0 | G5 | G4 | G3 | G2 | G1 | G0 | B4 | B3 | B2 | B1 | B0 |
Coordinate system is controlled by the rotation parameter in the SD card config file T5UIC1.CFG
The device has a main framebuffer (that's directly drawn on the screen) and 2 virtual screen buffers. The virtual screen buffers serve for background transparency and spritesheet functions.
Virtual screen buffer #0 is always set to the currently displayed background image and is mainly used for transparent image operations by background redraw.
Virtual screen buffer #1 must be set manually and is mainly used for selecting areas from the loaded image and drawing them on to the main framebuffer (for example a spritesheet)
A single data frame to the display consists of a frame header, instruction, data, CRC (optional) and footer.
The data frame is as such:
Header | Instruction | Data | CRC (optional) | Footer |
---|---|---|---|---|
0xAA |
1 byte instruction | Up to 248 bytes of data | 2 byte CRC-16/MODBUS | 0xCC 0x33 0xC3 0x3C |
CRC can be enabled in the SD card config file T5UIC1.CFG
. The CRC is a CRC-16/MODBUS.
If any instruction fails the CRC check the device will return the following error:
Instruction | Data |
---|---|
0xFF |
0x01 |
All device responses will also generate their own CRC.
Below are all the instructions and their corresponding parameters. Every instruction follow the format described in Serial Data Frame. If an instruction has an expected response it is explicitly listed. All instructions without an expected response described, do not have any response.
Check if the device is online. If it is online it will respond to this command.
Transmit:
Instruction | Data (0 bytes) |
---|---|
0x00 |
NONE |
Expected response:
Instruction | Data (2 bytes) |
---|---|
0x00 |
0x4F 0x4B - "OK" |
Clears the screen with a specified color.
Transmit:
Instruction | Data (2 bytes) |
---|---|
0x01 |
[2B] COLOR |
COLOR: 2 bytes
- An RGB565 color
Draw a point, or multiple points with one instruction. When drawing points all points can be given (together) a color, dimensions and location.
Transmit:
Instruction | Data (8 to 248 bytes) |
---|---|
0x02 |
[2B] COLOR; [1B] SIZE_X; [1B] SIZE_Y; ([2B] X0; [2B] Y0) ..... ([2B] Xn; [2B] Yn) |
COLOR: 2 bytes
- An RGB565 color
SIZE_X: 1 byte
- 0x01
to 0x0F
- The pixel size of the point in the X axis
SIZE_Y: 1 byte
- 0x01
to 0x0F
- The pixel size of the point in the Y axis
Xn: 2 bytes
- The X position of the point
Yn: 2 bytes
- The Y position of the point
Draw a line, or multiple lines with one instruction. When drawing multiple lines, the end of the last is the start of the next. This way you can draw complex line shapes and non-filled polygons. When drawing lines all lines can be given (together) a color.
Transmit:
Instruction | Data (10 to 248 bytes) |
---|---|
0x03 |
[2B] COLOR; ([2B] X0; [2B] Y0); ([2B] X1; [2B] Y1); ..... ([2B] Xn; [2B] Yn) |
COLOR: 2 bytes
- An RGB565 color
Xn: 2 bytes
- The X position of the line point (starting or ending)
Yn: 2 bytes
- The Y position of the line point (starting or ending)
Draw a rectangle in one of multiple modes and colors. An XOR mode is present that can be used for menu highlighting.
Transmit:
Instruction | Data (11 bytes) |
---|---|
0x05 |
[1B] MODE ;[2B] COLOR ; [2B] X0; [2B] Y0; [2B] X1; [2B] Y1; |
MODE: 1 byte
- 0x00
- Draw rectangle outline only
- 0x01
- Draw rectangle fill only
- 0x02
- XOR content under the rectangle area. Useful for menu highlighting.
COLOR: 2 bytes
- An RGB565 color
X0: 2 bytes
- The X position of the top left corner of rectangle
Y0: 2 bytes
- The Y position of the top left corner of rectangle
X1: 2 bytes
- The X position of the bottom right corner of rectangle
Y1: 2 bytes
- The Y position of the bottom right corner of rectangle
Draw a binary bitmap with specific fill colors for 1
and 0
. This can be used to, for example, send a unique text symbol or other relevant 1 bit graphics.
The format of the bitmap graphics depends on it's width. For widths up to 8 it is one byte per line but for widths larger than a byte the lines are made out of as many bytes as needed to contain it. For example a graphic with a width of 18
will require ceiling(18/8)
= 3 bytes
per line.
Here's an example graphic in binary notation of a smiling face
00111100
01111110
11011011
11111111
10111101
11000011
01111110
00111100
Transmit:
Instruction | Data (11 to 248 bytes) |
---|---|
0x08 |
[2B] X; [2B] Y; [2B] WIDTH; [2B] COLOR1; [2B] COLOR0; [nB] BITMAP_DATA |
X: 2 bytes
- The X position of the bitmap graphic
Y: 2 bytes
- The Y position of the bitmap graphic
WIDTH: 2 bytes
- 0x0001
to 0x01E0
- The width of the graphic in the X direction in pixels. The width dictates the amount of bytes are going to be used by one line of the bitmap. Refer to information above.
COLOR1: 2 bytes
- An RGB565 color corresponding to 1
in the bitmap
COLOR2: 2 bytes
- An RGB565 color corresponding to 0
in the bitmap
BITMAP_DATA: n bytes (up to a maximum of 238)
- The bitmap data, format described above.
Select an area of the framebuffer and translate it. Depending on the mode it either translates and wraps back around or translates, leaving the area behind it colored in a specified color.
Transmit:
Instruction | Data (13 bytes) |
---|---|
0x09 |
[1B] MODE; [2B] DISTANCE; [2B] COLOR; [2B] X0; [2B] Y0; [2B] X1; [2B] Y1 |
MODE: 1 byte
- bit[ 7 ]: - type of movement: 0
- wrap around; 1
- translate (parts that are uncovered behind the moved parts filled with color)
- bit[ 6..2 ]: - 0
- bit[ 1..0 ]: - direction of movement: 00
- left; 01
- right; 10
- up; 11
- down
DISTANCE: 2 bytes
- The distance to translate the selection
COLOR: 2 bytes
- An RGB565 color with which to fill the background when in translate mode. Does nothing in wrap around mode.
X0: 2 bytes
- The X position of the top left corner of the selection.
Y0: 2 bytes
- The Y position of the top left corner of the selection.
X1: 2 bytes
- The X position of the bottom right corner of the selection.
Y1: 2 bytes
- The Y position of the bottom right corner of the selection.
Draw text to the screen. Text is either ASCII or GB2312 Chinese characters. Foreground and background colors are configurable, as well as a transparent mode with no background color (good for overlaying over graphics). Font size is also controllable.
Transmit:
Instruction | Data (11 to 248 bytes) |
---|---|
0x11 |
[1B] MODE; [2B] FORE_COLOR; [2B] BACK_COLOR; [2B] X; [2B] Y; [nB] STRING |
MODE: 1 byte
- bit[ 7 ]: - Font kerning. 0
- monospace kerning; 1
- font configured kerning (font needs to be properly configured).
- bit[ 6 ]: - Show background. 0
- do not draw background color (transparent); 1
- draw the background color
- bit[ 5..4 ]: - 0
- bit[ 3..0 ]: - Font size.
Value | Size |
---|---|
0000 |
6x12 |
0001 |
8x16 |
0010 |
10x20 |
0011 |
12x24 |
0100 |
14x28 |
0101 |
16x32 |
0110 |
20x40 |
0111 |
24x48 |
1000 |
28x56 |
1001 |
32x64 |
FORE_COLOR: 2 bytes
- An RGB565 color with which to color the foreground (text color).
BACK_COLOR: 2 bytes
- An RGB565 color with which to color the background. Does nothing if show background is disabled.
X: 2 bytes
- The X position of the text (top left aligned)
Y: 2 bytes
- The Y position of the text (top left aligned)
STRING: nBytes (up to a maximum of 238)
- The ASCII or GB2312 string to draw
Draws text representing a numerical value. Can be either integer or fixed point decimal. Supports negative numbers as well as input validity parsing, showing invalid values as either 0 or a space (nothing). Foreground and background colors are configurable, as well as a transparent mode with no background color (good for overlaying over graphics). Font size is also controllable.
Transmit:
Instruction | Data (12 to 19 bytes) |
---|---|
0x14 |
[1B] MODE; [2B] FORE_COLOR; [2B] BACK_COLOR; [1B] N_INTEGERS; [1B] N_DECIMALS; [2B] X; [2B] Y; [nB] VALUE |
MODE: 1 byte
- bit[ 7 ]: - Show background. 0
- do not draw background color (transparent); 1
- draw the background color
- bit[ 6 ]: - Signed number. 0
- unsigned number; 1
- signed number.
- bit[ 5 ]: - Display invalid values. 0
- do not display on invalid values; 1
- display on invalid values.
- bit[ 4 ]: - What to display on invalid values (does nothing if display invalid values is 0). 0
- display zero; 1
- display spaces (nothing)
- bit[ 3..0 ]: - Font size.
Value | Size |
---|---|
0000 |
6x12 |
0001 |
8x16 |
0010 |
10x20 |
0011 |
12x24 |
0100 |
14x28 |
0101 |
16x32 |
0110 |
20x40 |
0111 |
24x48 |
1000 |
28x56 |
1001 |
32x64 |
1010 |
Special char from 18K font memory. Unsure what or where this is. |
1011 |
This range of values corresponds to 0x7400 to 0xBBFF of 0x02 |
1100 |
Unsure if that is image memory bank 2. Could be. |
1101 |
Characters are ordered as so: |
1110 |
0 1 2 3 4 5 6 7 8 9 . - + <space> |
1111 |
FORE_COLOR: 2 bytes
- An RGB565 color with which to color the foreground (text color).
BACK_COLOR: 2 bytes
- An RGB565 color with which to color the background. Does nothing if show background is disabled.
N_INTEGERS: 1 byte
- 1
to 20
. The number of integer digits to display (zero padded). N_INTEGERS + N_DECIMALS cannot exceed 20!
N_DECIMALS: 1 byte
- 0
to 20
. The number of decimal digits to display (zero padded) N_INTEGERS + N_DECIMALS cannot exceed 20!
X: 2 bytes
- The X position of the text (top left aligned)
Y: 2 bytes
- The Y position of the text (top left aligned)
VALUE: nBytes (up to a maximum of 8)
- The value to display. Cannot be a float. Must be formatted in fixed point decimal format. (multiplied by powers of 10 depending on the amount of decimals configured to display. For example if configured to show 2 integers and 2 decimals, to display 12.34
you must transmit 1234
. MSB first).
Draws a QR code with user specified data. (This instruction appears to be broken. It's supposed to generate QR Version 7 codes, however they all appear unscannable)
Transmit:
Instruction | Data (6 to 160 bytes) |
---|---|
0x21 |
[2B] X; [2B] Y; [1B] PIXEL_SIZE; [nB] DATA |
X: 2 bytes
- The X position of the QR code
Y: 2 bytes
- The Y position of the QR code
PIXEL_SIZE: 1 byte
- The size of a single pixel of the QR code. The whole QR code ends up being 46*PIXEL_SIZE in size
DATA: n bytes (up to a maximum of 154)
- QR code data. (text, url, vcard, etc)
Draws a JPEG 4:1:1 image from one of the 16 memory banks (512k flash storage). The image also gets loaded into the #0 virtual display buffer.
Transmit:
Instruction | Data (2 bytes) |
---|---|
0x22 |
[1B] 0x00 ; [1B] MEMORY_BANK |
MEMORY_BANK: 1 byte.
- 0x00
to 0x0F
- The 32KB memory bank containing a JPEG image.
Draws an icon from an icon library in one of the 16 memory banks (512k flash storage). Has the ability to display transparent icons by stripping pure black color from the displayed image.
Transmit:
Instruction | Data (6 bytes) |
---|---|
0x23 |
[2B] X; [2B] Y; [1B] MODE; [1B] ICON_INDEX |
X: 2 bytes
- The X position of the icon
Y: 2 bytes
- The Y position of the icon
MODE: 1 byte
- bit[ 7 ]: - Icon transparency. 0
- transparent background (strips black); 1
- opaque background
- bit[ 6 ]: - Redraw background from #0 virtual display buffer (only if background is transparent). Useful if switching transparent icons around and don't want to see the old one behind the new one.
0
- do not redraw background; 1
- redraw background
- bit[ 5 ]: - Transparent background stripping tolerance. 0
- only pure black; 1
- similar shades (useful for feathered icon edges)
- bit[ 4 ]: - 0
- bit[ 3..0 ]: - 0x00
to 0x0F
- The 32KB memory bank containing an icon library.
ICON_INDEX: 1 byte
- The index of the icon within the icon library
Draws a JPEG image from SRAM. Useful for sending icons dynamically to the device during runtime and displaying them. Image MUST fit within SRAM. Image is a JPEG with header. Must first be written to SRAM.
Transmit:
Instruction | Data (7 bytes) |
---|---|
0x24 |
[2B] X; [2B] Y; [1B] MODE; [2B] SRAM_ADDRESS |
X: 2 bytes
- The X position of the image
Y: 2 bytes
- The Y position of the image
MODE: 1 byte
- bit[ 7 ]: - Image transparency. 0
- transparent background (strips black); 1
- opaque background
- bit[ 6 ]: - 0
- bit[ 5 ]: - Transparent background stripping tolerance. 0
- only pure black; 1
- similar shades (useful for feathered icon edges)
- bit[ 4..0 ]: - 0
SRAM_ADDRESS: 2 bytes
- 0x0000
to 0x7FFF
- The address in SRAM of the JPEG image
Draws a JPEG image from one of the 16 memory banks (512k flash storage) to the #1 virtual display buffer. This is useful to for example copy select parts of an image from this buffer on to the main buffer, in a spritesheet like fashion.
Transmit:
Instruction | Data (2 bytes) |
---|---|
0x25 |
[1B] 0x01 ; [1B] MEMORY_BANK |
MEMORY_BANK: 1 byte.
- 0x00
to 0x0F
- The 32KB memory bank containing a JPEG image.
Draw a rectangular area of content from the #1 virtual display buffer on to the current screen at arbitrary position. This is useful to for example copy select parts of an image from a spritesheet image
Transmit:
Instruction | Data (12 bytes) |
---|---|
0x26 |
[2B] XV0; [2B] YV0; [2B] XV1; [2B] YV1; [2B] X; [2B] Y |
XV0: 2 bytes
- The X position of the top left corner of virtual display buffer selection area
YV0: 2 bytes
- The Y position of the top left corner of virtual display buffer selection area
XV1: 2 bytes
- The X position of the bottom right corner of virtual display buffer selection area
YV1: 2 bytes
- The Y position of the bottom right corner of virtual display buffer selection area
X: 2 bytes
- The X position of the real display at which to draw the virtual selection
Y: 2 bytes
- The Y position of the real display at which to draw the virtual selection
Draw a rectangular area of content from a user selectable virtual display buffer (either 1 or 0) to the current screen at arbitrary position. Also supports a transparency mode which strips pure black backgrounds from the image. This is an advanced (and slower) version of the simpler Draw area from #1 virtual display buffer to screen instruction.
Transmit:
Instruction | Data (13 bytes) |
---|---|
0x27 |
[1B] MODE; [2B] XV0; [2B] YV0; [2B] XV1; [2B] YV1; [2B] X; [2B] Y |
MODE: 1 byte
- bit[ 7 ]: - Image transparency. 0
- transparent background (strips black); 1
- opaque background
- bit[ 6 ]: - Redraw background from #0 virtual display buffer (only if background is transparent). Useful if switching transparent icons around and don't want to see the old one behind the new one.
- bit[ 5 ]: - Transparent background stripping tolerance. 0
- only pure black; 1
- similar shades (useful for feathered icon edges)
- bit[ 4..1 ]: - 0
- bit[ 0 ]: - Which virtual display buffer to select from. 0
- #0; 1
- #1
XV0: 2 bytes
- The X position of the top left corner of virtual display buffer selection area
YV0: 2 bytes
- The Y position of the top left corner of virtual display buffer selection area
XV1: 2 bytes
- The X position of the bottom right corner of virtual display buffer selection area
YV1: 2 bytes
- The Y position of the bottom right corner of virtual display buffer selection area
X: 2 bytes
- The X position of the real display at which to draw the virtual selection
Y: 2 bytes
- The Y position of the real display at which to draw the virtual selection
Draw an animated icon. An animated icon is simply multiple frames of animation ordered sequentially inside of an icon library. An icon library can store multiple animated icons, or animated icons and normal icons together. Animated icons have configurable speed and 16 assignable handles which can be used to start or stop the animation of multiple icons dynamically.
Transmit:
Instruction | Data (9 bytes) |
---|---|
0x28 |
[2B] X; [2B] Y; [1B] MODE; [1B] ICON_LIBRARY; [1B] ICON_INDEX_START; [1B] ICON_INDEX_END; [1B] SPEED |
X: 2 bytes
- The X position of the icon
Y: 2 bytes
- The Y position of the icon
MODE: 1 byte
- bit[ 7 ]: - Start on creation. 0
- do not start animating on icon creation; 1
- start animating on icon creation
- bit[ 6 ]: - Start frame. 0
- start animating from last frame animation was stopped on; 1
- always start animating from frame 0
- bit[ 5..4 ]: - 0
- bit[ 3..0 ]: - 0x00
to 0x0F
- Animation handle. Used to start and stop the animation after creation.
ICON_LIBRARY: 1 byte
- 0x00
to 0x0F
- The 32KB memory bank containing an icon library.
ICON_INDEX_START: 1 byte
- The index of the first frame icon within the icon library
ICON_INDEX_END: 1 byte
- The index of the last frame icon within the icon library
SPEED: 1 byte
- The speed at which to animate. Units: 1 = 10mS.
Start or stop an animated icon animation. This one instruction controls all 16 animated icon handles at once.
Transmit:
Instruction | Data (2 bytes) |
---|---|
0x29 |
[2B] STATE |
STATE: 2 bytes
- bit[ 15 ]: Icon handle 15. 0
- stop; 1
- start
- bit[ 14 ]: Icon handle 14. 0
- stop; 1
- start
- bit[ 13 ]: Icon handle 13. 0
- stop; 1
- start
- bit[ 12 ]: Icon handle 12. 0
- stop; 1
- start
- bit[ 11 ]: Icon handle 11. 0
- stop; 1
- start
- bit[ 10 ]: Icon handle 10. 0
- stop; 1
- start
- bit[ 9 ]: Icon handle 9. 0
- stop; 1
- start
- bit[ 8 ]: Icon handle 8. 0
- stop; 1
- start
- bit[ 7 ]: Icon handle 7. 0
- stop; 1
- start
- bit[ 6 ]: Icon handle 6. 0
- stop; 1
- start
- bit[ 5 ]: Icon handle 5. 0
- stop; 1
- start
- bit[ 4 ]: Icon handle 4. 0
- stop; 1
- start
- bit[ 3 ]: Icon handle 3. 0
- stop; 1
- start
- bit[ 2 ]: Icon handle 2. 0
- stop; 1
- start
- bit[ 1 ]: Icon handle 1. 0
- stop; 1
- start
- bit[ 0 ]: Icon handle 0. 0
- stop; 1
- start
Draw an EAN-13 barcode on the screen. Barcode has a fixed size of 222x94.
Transmit:
Instruction | Data (16 bytes) |
---|---|
0x2A |
[2B] X; [2B] Y; [12B] CODE |
X: 2 bytes
- The X position of the barcode
Y: 2 bytes
- The Y position of the barcode
CODE: 12 bytes
- 0x00
to 0x09
- the 12 individual digits of the EAN-13 barcode.
Set device backlight brightness.
Transmit:
Instruction | Data (1 byte) |
---|---|
0x30 |
[1B] BRIGHTNESS |
BRIGHTNESS: 1 byte
- 0x00
to 0xFF
- The brightness value. A value of 0x00
turn's the backlight off.
Write user data to the 32KB of SRAM or 16KB Flash memory.
Transmit:
Instruction | Data (4 to 248 bytes) |
---|---|
0x31 |
[1B] MEM_TYPE; [2B] ADDRESS; [nB] DATA |
Expected response (FOR FLASH WRITE ONLY. No response for SRAM):
Instruction | Data (3 bytes) |
---|---|
0x31 |
0xA5 0x4F 0x4B - "¥OK" |
MEM_TYPE: 1 byte.
- 0x5A
for the 32KB of SRAM.
- 0xA5
for the 16KB of Flash.
ADDRESS: 2 bytes.
- 0x0000
to 0x7FFF
for the 32KB of SRAM.
- 0x0000
to 0x3FFF
for the 16KB of Flash.
Writing outside of these ranges can lead to corruption!
DATA: n bytes (up to a maximum of 245)
- The data to be written to that offset.
Read user data from the 32KB of SRAM or 16KB Flash memory.
Transmit:
Instruction | Data (4 bytes) |
---|---|
0x32 |
[1B] MEM_TYPE; [2B] ADDRESS; [1B] LENGTH |
Expected response:
Instruction | Data (5 to 248 bytes) |
---|---|
0x32 |
[1B] MEM_TYPE; [2B] ADDRESS; [1B] LENGTH; [nB] DATA |
MEM_TYPE: 1 byte.
- 0x5A
for the 32KB of SRAM.
- 0xA5
for the 16KB of Flash.
ADDRESS: 2 bytes.
- 0x0000
to 0x7FFF
for the 32KB of SRAM.
- 0x0000
to 0x3FFF
for the 16KB of Flash.
Reading outside of these ranges can lead to corruption!
LENGTH: 1 byte.
- 0x01
to 0xF0
- Amount of bytes to read.
Reading lengths outside of this range is unsupported!
DATA: n bytes (up to a maximum of 240)
- The data to be read from that offset.
Save the data currently in the 32KB of SRAM to a specified persistent image memory bank. Used to, for example, modify an icon or background image persistently during runtime.
To successfully use this command an image must be written to SRAM with index 0x000
first!
Transmit:
Instruction | Data (3 bytes) |
---|---|
0x33 |
[2B] 0x5A 0xA5 ; [1B] MEMORY_BANK |
Expected Response:
Instruction | Data (3 bytes) |
---|---|
0x33 |
0x4F 0x4B - "OK" |
MEMORY_BANK: 1 byte.
- 0x00
to 0x0F
- The 32KB memory bank.
Writing to memory banks outside of this range is unsupported and can lead to corruption!
Changes the display rotation immediately. This affects drawing command origin and rotation. This setting is not persistent.
Transmit:
Instruction | Data (3 bytes) |
---|---|
0x34 |
[2B] 0x5A 0xA5 ; [1B] ROTATION |
Expected Response:
Instruction | Data (2 bytes) |
---|---|
0x34 |
0x4F 0x4B - "OK" |
ROTATION: 1 byte.
- 0x00
- 0 degrees
- 0x01
- 90 degrees
- 0x02
- 180 degrees
- 0x03
- 270 degrees
Sets the baud rate on the additional (secondary) serial port.
Transmit:
Instruction | Data (2 bytes) |
---|---|
0x38 |
[2B] BAUD_RATE |
BAUD_RATE: 2 bytes
- 0x0001
to 0x03FF
- Baud-rate. Values correspond to 15667200 / desired baud-rate
. Lowest baud-rate is 15300.
Transmits data over the additional (secondary) serial port.
Transmit:
Instruction | Data (1 to 248 bytes) |
---|---|
0x39 |
[nB] DATA |
DATA: n bytes (up to maximum of 248)
- The data to transmit over the serial port
Receives data from the additional (secondary) serial port.
The serial port automatically sends this instruction upon received serial data.
THERE IS NO TRANSMISSION REQUIRED FOR THIS INSTRUCTION. IT IS RECEIVE ONLY
Expected response:
Instruction | Data (2 to 248 bytes) |
---|---|
0x3A |
[1B] LENGTH; [nB] DATA |
LENGTH: 1 byte
- 0x01
to 0xF0
- Amount of bytes recieved.
DATA: n bytes (up to a maximum of 240)
- The bytes received from the serial port.
On some firmwares the device would not display the result of any draw commands until after this command is called. It effectively operates like a "swap buffers" command
Transmit:
Instruction | Data (0 bytes) |
---|---|
0x3D |
NONE |
The device firmware and assets are loaded through the SD card interface. This is done by placing files with predefined filenames into a directory named DWIN_SET
on the root of the SD card. The system will automatically recognize these files and update itself upon power up.
The SD card has a limitation of a maximum size of 16GB.
It must only contain a single partition.
The partition must be formatted as FAT32 with 4KB sector size.
NEVER INSERT OR REMOVE THE SD CARD WHILE THE DEVICE IS POWERED UP! DOING SO WILL DAMAGE THE DEVICE!
When the device begins a firmware upgrade the screen will blank blue. When the device is done upgrading the screen will blank orange/red. When that happens, it is safe to power the device off. POWERING OFF THE DEVICE DURING A FIRMWARE UPGRADE (BLUE SCREEN) CAN DAMAGE THE DEVICE!
Not all files in this section are mandatory. One can only flash specific files without having all of them preset, for example only the font library. All files listed below must be placed within a folder named DWIN_SET
in the root of the SD card in order for the device to discover them.
Filename | Usage |
---|---|
T5UIC1_*.BIN | Kernel |
T5UIC1.CFG | Firmware config |
0T5UIC1.HZK | Font library |
[0-15]*.JPG | JPEG file (up to 32KB max) to load into the memory bank denoted by its numeric prefix |
[0-15]*.ICO | Icon library file to load into the memory bank denoted by its numeric prefix |
This file contains the hardware configuration for the DWIN board, for example baud rate and default screen rotation.
Byte | Length | Description |
---|---|---|
0x00 |
4 | Header: 54 35 43 31 "T5C1" |
0x04 |
1 | Bitfield: bit[ 7 ] - CPU Clock: 0 - 250MHz; 1 - 400MHz bit[ 6 ] - Power-on display: 0 - Display image 0; 1 - Blank screenbit[ 5 ] - Enable CRC: 0 - CRC Disabled; 1 - CRC Enabled bit[ 4..2 ] - 0 bit[ 1..0 ] - Screen orientation: - 00 - 0°- 01 - 90°- 10 - 180°- 11 - 270° |
0x05 |
1 | Display type:0x00 - DMT48270C043_04WN_480x272 0x01 - OLD_DMT32240C028_04WN_240x320 0x02 - DMT32240C035_04WN_320x240 0x03 - DMT32240C028_04WN_240x320 0x04 - DMT48320C035_04WN_320x480 0x05 - EWTN_DMT32240C024_04WN_240x320 0x06 - IPS_DMT48320C035_04WN_320x480 0x07 - IPS_DMT32240C024_04WN_240x320 0x08 - IPS_DMT32240C020_04WN_240x32 |
0x06 |
2 | Clock Calibration. Set to 5A A5 to calibrate clock. UART2 will send 30 bytes 0x55 at 115200 8N1 at 30mS intervals.Device has been factory calibrated. Re-running calibration could result in malfunction. |
0x08 |
2 | Baud rate. 0x01 to 0x3FF . Baud rate is 7833600 / the number set. 0x0044 == 115200bps. |
0x0A |
1 | Screen selection enable. Unknown functionality. "0x5A = 0x05 the screen selection configuration of the address is valid." Any other value, invalid. |