Zephyr API Documentation
2.7.0-rc2
A Scalable Open Source RTOS
|
FT8xx reference API. More...
Macros | |
#define | OPT_3D FT8XX_OPT_3D |
#define | OPT_RGB565 FT8XX_OPT_RGB565 |
#define | OPT_MONO FT8XX_OPT_MONO |
#define | OPT_NODL FT8XX_OPT_NODL |
#define | OPT_FLAT FT8XX_OPT_FLAT |
#define | OPT_SIGNED FT8XX_OPT_SIGNED |
#define | OPT_CENTERX FT8XX_OPT_CENTERX |
#define | OPT_CENTERY FT8XX_OPT_CENTERY |
#define | OPT_CENTER FT8XX_OPT_CENTER |
#define | OPT_RIGHTX FT8XX_OPT_RIGHTX |
#define | OPT_NOBACK FT8XX_OPT_NOBACK |
#define | OPT_NOTICKS FT8XX_OPT_NOTICKS |
#define | OPT_NOHM FT8XX_OPT_NOHM |
#define | OPT_NOPOINTER FT8XX_OPT_NOPOINTER |
#define | OPT_NOSECS FT8XX_OPT_NOSECS |
#define | OPT_NOHANDS FT8XX_OPT_NOHANDS |
#define | BITMAPS FT8XX_BITMAPS |
#define | POINTS FT8XX_POINTS |
#define | LINES FT8XX_LINES |
#define | LINE_STRIP FT8XX_LINE_STRIP |
#define | EDGE_STRIP_R FT8XX_EDGE_STRIP_R |
#define | EDGE_STRIP_L FT8XX_EDGE_STRIP_L |
#define | EDGE_STRIP_A FT8XX_EDGE_STRIP_A |
#define | EDGE_STRIP_B FT8XX_EDGE_STRIP_B |
#define | RECTS FT8XX_RECTS |
#define | BEGIN(prim) FT8XX_BEGIN(prim) |
Begin drawing a graphics primitive. More... | |
#define | CLEAR(c, s, t) FT8XX_CLEAR(c, s, t) |
Clear buffers to preset values. More... | |
#define | CLEAR_COLOR_RGB(red, green, blue) FT8XX_CLEAR_COLOR_RGB(red, green, blue) |
Specify clear values for red, green and blue channels. More... | |
#define | COLOR_RGB(red, green, blue) FT8XX_COLOR_RGB(red, green, blue) |
Set the current color red, green and blue. More... | |
#define | DISPLAY() FT8XX_DISPLAY() |
End the display list. More... | |
#define | END() FT8XX_END() |
End drawing a graphics primitive. More... | |
#define | LINE_WIDTH(width) FT8XX_LINE_WIDTH(width) |
Specify the width of lines to be drawn with primitive LINES. More... | |
#define | TAG(s) FT8XX_TAG(s) |
Attach the tag value for the following graphics objects. More... | |
#define | VERTEX2F(x, y) FT8XX_VERTEX2F(x, y) |
Start the operation of graphics primitives at the specified coordinate. More... | |
#define | VERTEX2II(x, y, handle, cell) FT8XX_VERTEX2II(x, y, handle, cell) |
Start the operation of graphics primitive at the specified coordinates. More... | |
Enumerations | |
enum | ft8xx_memory_map_t { RAM_G = FT810_RAM_G , RAM_DL = FT810_RAM_DL , REG_ = FT810_REG_ , RAM_CMD = FT810_RAM_CMD } |
enum | ft8xx_register_address_t { REG_TRIM = FT810_REG_TRIM , REG_ID = FT810_REG_ID , REG_FRAMES = FT810_REG_FRAMES , REG_CLOCK = FT810_REG_CLOCK , REG_FREQUENCY = FT810_REG_FREQUENCY , REG_RENDERMODE = FT810_REG_RENDERMODE , REG_SNAPY = FT810_REG_SNAPY , REG_SNAPSHOT = FT810_REG_SNAPSHOT , REG_CPURESET = FT810_REG_CPURESET , REG_TAP_CRC = FT810_REG_TAP_CRC , REG_TAP_MASK = FT810_REG_TAP_MASK , REG_HCYCLE = FT810_REG_HCYCLE , REG_HOFFSET = FT810_REG_HOFFSET , REG_HSIZE = FT810_REG_HSIZE , REG_HSYNC0 = FT810_REG_HSYNC0 , REG_HSYNC1 = FT810_REG_HSYNC1 , REG_VCYCLE = FT810_REG_VCYCLE , REG_VOFFSET = FT810_REG_VOFFSET , REG_VSIZE = FT810_REG_VSIZE , REG_VSYNC0 = FT810_REG_VSYNC0 , REG_VSYNC1 = FT810_REG_VSYNC1 , REG_DLSWAP = FT810_REG_DLSWAP , REG_ROTATE = FT810_REG_ROTATE , REG_OUTBITS = FT810_REG_OUTBITS , REG_DITHER = FT810_REG_DITHER , REG_SWIZZLE = FT810_REG_SWIZZLE , REG_CSPREAD = FT810_REG_CSPREAD , REG_PCLK_POL = FT810_REG_PCLK_POL , REG_PCLK = FT810_REG_PCLK , REG_TAG_X = FT810_REG_TAG_X , REG_TAG_Y = FT810_REG_TAG_Y , REG_TAG = FT810_REG_TAG , REG_VOL_PB = FT810_REG_VOL_PB , REG_VOL_SOUND = FT810_REG_VOL_SOUND , REG_SOUND = FT810_REG_SOUND , REG_PLAY = FT810_REG_PLAY , REG_GPIO_DIR = FT810_REG_GPIO_DIR , REG_GPIO = FT810_REG_GPIO , REG_GPIOX_DIR = FT810_REG_GPIOX_DIR , REG_GPIOX = FT810_REG_GPIOX , REG_INT_FLAGS = FT810_REG_INT_FLAGS , REG_INT_EN = FT810_REG_INT_EN , REG_INT_MASK = FT810_REG_INT_MASK , REG_PLAYBACK_START = FT810_REG_PLAYBACK_START , REG_PLAYBACK_LENGTH = FT810_REG_PLAYBACK_LENGTH , REG_PLAYBACK_READPTR = FT810_REG_PLAYBACK_READPTR , REG_PLAYBACK_FREQ = FT810_REG_PLAYBACK_FREQ , REG_PLAYBACK_FORMAT = FT810_REG_PLAYBACK_FORMAT , REG_PLAYBACK_LOOP = FT810_REG_PLAYBACK_LOOP , REG_PLAYBACK_PLAY = FT810_REG_PLAYBACK_PLAY , REG_PWM_HZ = FT810_REG_PWM_HZ , REG_PWM_DUTY = FT810_REG_PWM_DUTY , REG_CMD_READ = FT810_REG_CMD_READ , REG_CMD_WRITE = FT810_REG_CMD_WRITE , REG_CMD_DL = FT810_REG_CMD_DL , REG_TOUCH_MODE = FT810_REG_TOUCH_MODE , REG_TOUCH_ADC_MODE = FT810_REG_TOUCH_ADC_MODE , REG_TOUCH_CHARGE = FT810_REG_TOUCH_CHARGE , REG_TOUCH_SETTLE = FT810_REG_TOUCH_SETTLE , REG_TOUCH_OVERSAMPLE = FT810_REG_TOUCH_OVERSAMPLE , REG_TOUCH_RZTHRESH = FT810_REG_TOUCH_RZTHRESH , REG_TOUCH_RAW_XY = FT810_REG_TOUCH_RAW_XY , REG_TOUCH_RZ = FT810_REG_TOUCH_RZ , REG_TOUCH_SCREEN_XY = FT810_REG_TOUCH_SCREEN_XY , REG_TOUCH_TAG_XY = FT810_REG_TOUCH_TAG_XY , REG_TOUCH_TAG = FT810_REG_TOUCH_TAG , REG_TOUCH_TRANSFORM_A = FT810_REG_TOUCH_TRANSFORM_A , REG_TOUCH_TRANSFORM_B = FT810_REG_TOUCH_TRANSFORM_B , REG_TOUCH_TRANSFORM_C = FT810_REG_TOUCH_TRANSFORM_C , REG_TOUCH_TRANSFORM_D = FT810_REG_TOUCH_TRANSFORM_D , REG_TOUCH_TRANSFORM_E = FT810_REG_TOUCH_TRANSFORM_E , REG_TOUCH_TRANSFORM_F = FT810_REG_TOUCH_TRANSFORM_F , REG_TOUCH_CONFIG = FT810_REG_TOUCH_CONFIG , REG_SPI_WIDTH = FT810_REG_SPI_WIDTH , REG_TOUCH_DIRECT_XY = FT810_REG_TOUCH_DIRECT_XY , REG_TOUCH_DIRECT_Z1Z2 = FT810_REG_TOUCH_DIRECT_Z1Z2 , REG_CMDB_SPACE = FT810_REG_CMDB_SPACE , REG_CMDB_WRITE = FT810_REG_CMDB_WRITE , REG_TRACKER = FT810_REG_TRACKER , REG_TRACKER1 = FT810_REG_TRACKER1 , REG_TRACKER2 = FT810_REG_TRACKER2 , REG_TRACKER3 = FT810_REG_TRACKER3 , REG_TRACKER4 = FT810_REG_TRACKER4 , REG_MEDIAFIFO_READ = FT810_REG_MEDIAFIFO_READ , REG_MEDIAFIFO_WRITE = FT810_REG_MEDIAFIFO_WRITE } |
Functions | |
static void | wr8 (uint32_t address, uint8_t data) |
Write 1 byte (8 bits) to FT8xx memory. More... | |
static void | wr16 (uint32_t address, uint16_t data) |
Write 2 bytes (16 bits) to FT8xx memory. More... | |
static void | wr32 (uint32_t address, uint32_t data) |
Write 4 bytes (32 bits) to FT8xx memory. More... | |
static uint8_t | rd8 (uint32_t address) |
Read 1 byte (8 bits) from FT8xx memory. More... | |
static uint16_t | rd16 (uint32_t address) |
Read 2 bytes (16 bits) from FT8xx memory. More... | |
static uint32_t | rd32 (uint32_t address) |
Read 4 bytes (32 bits) from FT8xx memory. More... | |
static void | cmd (uint32_t command) |
Execute a display list command by co-processor engine. More... | |
static void | cmd_dlstart (void) |
Start a new display list. More... | |
static void | cmd_swap (void) |
Swap the current display list. More... | |
static void | cmd_text (int16_t x, int16_t y, int16_t font, uint16_t options, const char *s) |
Draw text. More... | |
static void | cmd_number (int16_t x, int16_t y, int16_t font, uint16_t options, int32_t n) |
Draw a decimal number. More... | |
static void | cmd_calibrate (uint32_t *result) |
Execute the touch screen calibration routine. More... | |
FT8xx reference API.
API defined according to FT800 Programmers Guide API reference definition.
ft8xx_
prefixed names. #define BEGIN | ( | prim | ) | FT8XX_BEGIN(prim) |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Begin drawing a graphics primitive.
The valid primitives are defined as:
The primitive to be drawn is selected by the BEGIN command. Once the primitive is selected, it will be valid till the new primitive is selected by the BEGIN command.
prim | Graphics primitive |
#define BITMAPS FT8XX_BITMAPS |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Rectangular pixel arrays, in various color formats
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Clear buffers to preset values.
Setting c
to true will clear the color buffer of the FT8xx to the preset value. Setting this bit to false will maintain the color buffer of the FT8xx with an unchanged value. The preset value is defined in command CLEAR_COLOR_RGB for RGB channel and CLEAR_COLOR_A for alpha channel.
Setting s
to true will clear the stencil buffer of the FT8xx to the preset value. Setting this bit to false will maintain the stencil buffer of the FT8xx with an unchanged value. The preset value is defined in command CLEAR_STENCIL.
Setting t
to true will clear the tag buffer of the FT8xx to the preset value. Setting this bit to false will maintain the tag buffer of the FT8xx with an unchanged value. The preset value is defined in command CLEAR_TAG.
c | Clear color buffer |
s | Clear stencil buffer |
t | Clear tag buffer |
#define CLEAR_COLOR_RGB | ( | red, | |
green, | |||
blue | |||
) | FT8XX_CLEAR_COLOR_RGB(red, green, blue) |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Specify clear values for red, green and blue channels.
Sets the color values used by a following CLEAR.
red | Red value used when the color buffer is cleared |
green | Green value used when the color buffer is cleared |
blue | Blue value used when the color buffer is cleared |
#define COLOR_RGB | ( | red, | |
green, | |||
blue | |||
) | FT8XX_COLOR_RGB(red, green, blue) |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Set the current color red, green and blue.
Sets red, green and blue values of the FT8xx color buffer which will be applied to the following draw operation.
red | Red value for the current color |
green | Green value for the current color |
blue | Blue value for the current color |
#define DISPLAY | ( | ) | FT8XX_DISPLAY() |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
End the display list.
FT8xx will ignore all the commands following this command.
#define EDGE_STRIP_A FT8XX_EDGE_STRIP_A |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Edge strips for above
#define EDGE_STRIP_B FT8XX_EDGE_STRIP_B |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Edge strips for below
#define EDGE_STRIP_L FT8XX_EDGE_STRIP_L |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Edge strips for left
#define EDGE_STRIP_R FT8XX_EDGE_STRIP_R |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Edge strips for right
#define END | ( | ) | FT8XX_END() |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
End drawing a graphics primitive.
It is recommended to have an END for each BEGIN. Whereas advanced users can avoid the usage of END in order to save extra graphics instructions in the display list RAM.
#define LINE_STRIP FT8XX_LINE_STRIP |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Anti-aliased lines, connected head-to-tail
#define LINE_WIDTH | ( | width | ) | FT8XX_LINE_WIDTH(width) |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Specify the width of lines to be drawn with primitive LINES.
Sets the width of drawn lines. The width is the distance from the center of the line to the outermost drawn pixel, in units of 1/16 pixel. The valid range is from 16 to 4095 in terms of 1/16th pixel units.
width | Line width in 1/16 pixel |
#define LINES FT8XX_LINES |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Anti-aliased lines, with width from 0 to 4095 1/16th of pixel units. (width is from center of the line to boundary)
#define OPT_3D FT8XX_OPT_3D |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor widget is drawn in 3D effect
#define OPT_CENTER FT8XX_OPT_CENTER |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor widget centers horizontally and vertically
#define OPT_CENTERX FT8XX_OPT_CENTERX |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor widget centers horizontally
#define OPT_CENTERY FT8XX_OPT_CENTERY |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor widget centers vertically
#define OPT_FLAT FT8XX_OPT_FLAT |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor widget is drawn without 3D effect
#define OPT_MONO FT8XX_OPT_MONO |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor option to decode the JPEG image to L8 format, i.e., monochrome
#define OPT_NOBACK FT8XX_OPT_NOBACK |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor widget has no background drawn
#define OPT_NODL FT8XX_OPT_NODL |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
No display list commands generated for bitmap decoded from JPEG image
#define OPT_NOHANDS FT8XX_OPT_NOHANDS |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor clock widget is drawn without hour, minutes and seconds hands
#define OPT_NOHM FT8XX_OPT_NOHM |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor clock widget is drawn without hour and minutes hands, only seconds hand is drawn
#define OPT_NOPOINTER FT8XX_OPT_NOPOINTER |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
The Co-processor gauge has no pointer
#define OPT_NOSECS FT8XX_OPT_NOSECS |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor clock widget is drawn without seconds hand
#define OPT_NOTICKS FT8XX_OPT_NOTICKS |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor clock widget is drawn without hour ticks. Gauge widget is drawn without major and minor ticks.
#define OPT_RGB565 FT8XX_OPT_RGB565 |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Co-processor option to decode the JPEG image to RGB565 format
#define OPT_RIGHTX FT8XX_OPT_RIGHTX |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
The label on the Coprocessor widget is right justified
#define OPT_SIGNED FT8XX_OPT_SIGNED |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
The number is treated as 32 bit signed integer
#define POINTS FT8XX_POINTS |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Anti-aliased points, point radius is 1-256 pixels
#define RECTS FT8XX_RECTS |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Round-cornered rectangles, curvature of the corners can be adjusted using LINE_WIDTH
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Attach the tag value for the following graphics objects.
The initial value of the tag buffer of the FT8xx is specified by command CLEAR_TAG and taken effect by command CLEAR. TAG command can specify the value of the tag buffer of the FT8xx that applies to the graphics objects when they are drawn on the screen. This TAG value will be assigned to all the following objects, unless the TAG_MASK command is used to disable it. Once the following graphics objects are drawn, they are attached with the tag value successfully. When the graphics objects attached with the tag value are touched, the register REG_TOUCH_TAG will be updated with the tag value of the graphics object being touched. If there is no TAG commands in one display list, all the graphics objects rendered by the display list will report tag value as 255 in REG_TOUCH_TAG when they were touched.
s | Tag value 1-255 |
#define VERTEX2F | ( | x, | |
y | |||
) | FT8XX_VERTEX2F(x, y) |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Start the operation of graphics primitives at the specified coordinate.
The range of coordinates is from -16384 to +16383 in terms of 1/16th pixel units. The negative x coordinate value means the coordinate in the left virtual screen from (0, 0), while the negative y coordinate value means the coordinate in the upper virtual screen from (0, 0). If drawing on the negative coordinate position, the drawing operation will not be visible.
x | Signed x-coordinate in 1/16 pixel precision |
y | Signed y-coordinate in 1/16 pixel precision |
#define VERTEX2II | ( | x, | |
y, | |||
handle, | |||
cell | |||
) | FT8XX_VERTEX2II(x, y, handle, cell) |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Start the operation of graphics primitive at the specified coordinates.
The valid range of handle
is from 0 to 31. From 16 to 31 the bitmap handle is dedicated to the FT8xx built-in font.
Cell number is the index of bitmap with same bitmap layout and format. For example, for handle 31, the cell 65 means the character "A" in the largest built in font.
x | x-coordinate in pixels, from 0 to 511 |
y | y-coordinate in pixels, from 0 to 511 |
handle | Bitmap handle |
cell | Cell number |
enum ft8xx_memory_map_t |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Main parts of FT810 memory map
Enumerator | |
---|---|
RAM_G | |
RAM_DL | |
REG_ | |
RAM_CMD |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
FT810 register addresses
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Execute a display list command by co-processor engine.
command | Display list command to execute |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Execute the touch screen calibration routine.
The calibration procedure collects three touches from the touch screen, then computes and loads an appropriate matrix into REG_TOUCH_TRANSFORM_A-F. To use it, create a display list and then use CMD_CALIBRATE. The co-processor engine overlays the touch targets on the current display list, gathers the calibration input and updates REG_TOUCH_TRANSFORM_A-F.
result | Calibration result, written with 0 on failure of calibration |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Start a new display list.
|
inlinestatic |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Draw a decimal number.
By default (x
, y
) is the top-left pixel of the text. OPT_CENTERX centers the text horizontally, OPT_CENTERY centers it vertically. OPT_CENTER centers the text in both directions. OPT_RIGHTX right-justifies the text, so that the x
is the rightmost pixel. By default the number is displayed with no leading zeroes, but if a width 1-9 is specified in the options
, then the number is padded if necessary with leading zeroes so that it has the given width. If OPT_SIGNED is given, the number is treated as signed, and prefixed by a minus sign if negative.
x | x-coordinate of text base, in pixels |
y | y-coordinate of text base, in pixels |
font | Font to use for text, 0-31. 16-31 are ROM fonts |
options | Options to apply |
n | The number to display. |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Swap the current display list.
|
inlinestatic |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Draw text.
By default (x,y) is the top-left pixel of the text and the value of options
is zero. OPT_CENTERX centers the text horizontally, OPT_CENTERY centers it vertically. OPT_CENTER centers the text in both directions. OPT_RIGHTX right-justifies the text, so that the x is the rightmost pixel.
x | x-coordinate of text base, in pixels |
y | y-coordinate of text base, in pixels |
font | Font to use for text, 0-31. 16-31 are ROM fonts |
options | Options to apply |
s | Character string to display, terminated with a null character |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Read 2 bytes (16 bits) from FT8xx memory.
address | Memory address to read from |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Read 4 bytes (32 bits) from FT8xx memory.
address | Memory address to read from |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Read 1 byte (8 bits) from FT8xx memory.
address | Memory address to read from |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Write 2 bytes (16 bits) to FT8xx memory.
address | Memory address to write to |
data | Value to write |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Write 4 bytes (32 bits) to FT8xx memory.
address | Memory address to write to |
data | Value to write |
#include <include/drivers/misc/ft8xx/ft8xx_reference_api.h>
Write 1 byte (8 bits) to FT8xx memory.
address | Memory address to write to |
data | Byte to write |