FT800 系列程序员指南 Version 2.0 发布日期: 2016-03-23 此 文 件 是 FT800 系 列 芯 片 的 程 序 员 指 南 。 这 份 指 南 详 细 描 述 芯 片 的 功 能 及 程 序 。 若要查询 FT801 的特定功能及程序,请参考章节 FT801。 Use of FTDI devices in life support and/or safety applications is entirely at the user’s risk, and the user agrees to defend, indemnify and hold FTDI harmless from any and all damages, claims, suits or expense resulting from such use. Future Technology Devices International Limited (FTDI) Unit 1, 2 Seaward Place, Glasgow G41 1HH, United Kingdom Tel.: +44 (0) 141 429 2777 Fax: + 44 (0) 141 429 2758 Web Site: http://ftdichip.com Copyright © Future Technology Devices International Limited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 目录 1 简介 ....................................................................... 11 1.1 概观 ............................................................................. 11 1.2 文件范围 ....................................................................... 11 1.3 API 参考定义 ................................................................... 11 2 程序模型 .................................................................. 12 2.1 一般性软件架构 ............................................................... 12 2.2 显示配置及初始化 ............................................................. 13 2.2.1 水平时序....................................................................................... 14 2.2.2 垂直时序....................................................................................... 15 2.2.3 信号更新时序控制 ............................................................................ 15 2.2.4 时序范例: 480x272 分辨率,更新频率 60Hz ........................................... 16 2.2.5 初始程序....................................................................................... 16 2.3 声音合成器 ..................................................................... 17 2.4 音频播放 ....................................................................... 18 2.5 图表的常规性工作 ............................................................. 19 2.5.1 开始 ............................................................................................ 19 2.5.2 坐标平面....................................................................................... 20 2.5.3 绘制图案....................................................................................... 21 2.5.4 写入显示清单 ................................................................................. 24 2.5.5 位图变换矩阵 ................................................................................. 25 2.5.6 颜色及透明度 ................................................................................. 25 2.5.7 VERTEX2II 及 VERTEX2F ................................................................. 26 2.5.8 屏幕截图....................................................................................... 27 2.5.9 性能 ............................................................................................ 27 3 寄存器描述 ............................................................... 29 2 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 3.1 图形引擎寄存器 ............................................................... 29 3.2 触屏引擎寄存器 (只用于 FT800).......................................... 42 3.3 音频引擎寄存器 ............................................................... 51 3.4 协处理器引擎寄存器 .......................................................... 57 3.5 其它寄存器 ..................................................................... 59 4 显示清单指令............................................................. 69 4.1 图形状态 ....................................................................... 69 4.2 指令编码 ....................................................................... 70 4.3 指令组 .......................................................................... 71 4.3.1 设定图形状态 ................................................................................. 71 4.3.2 绘图动作....................................................................................... 72 4.3.3 赽行控制....................................................................................... 72 4.4 ALPHA_FUNC ................................................................ 73 4.5 BEGIN ........................................................................... 74 4.6 BITMAP_HANDLE .......................................................... 75 4.7 BITMAP_LAYOUT ........................................................... 76 4.8 BITMAP_SIZE................................................................ 80 4.8.1 保留 ............................................................................................ 80 4.9 BITMAP_SOURCE .......................................................... 83 4.10 BITMAP_TRANSFORM_A.............................................. 84 4.11 BITMAP_TRANSFORM_B.............................................. 85 4.12 BITMAP_TRANSFORM_C .............................................. 86 4.13 BITMAP_TRANSFORM_D ............................................. 86 4.14 BITMAP_TRANSFORM_E .............................................. 87 4.15 BITMAP_TRANSFORM_F .............................................. 88 4.16 BLEND_FUNC .............................................................. 88 3 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.17 CALL ........................................................................... 90 4.18 CELL ........................................................................... 91 4.19 CLEAR ........................................................................ 91 4.20 CLEAR_COLOR_A ........................................................ 92 4.21 CLEAR_COLOR_RGB .................................................... 93 4.22 CLEAR_STENCIL .......................................................... 94 4.23 CLEAR_TAG................................................................. 95 4.24 COLOR_A .................................................................... 95 4.25 COLOR_MASK ............................................................. 96 4.26 COLOR_RGB................................................................ 97 4.27 DISPLAY ..................................................................... 98 4.28 END ............................................................................ 98 4.29 JUMP .......................................................................... 99 4.30 LINE_WIDTH .............................................................. 99 4.31 MACRO ..................................................................... 100 4.32 POINT_SIZE ............................................................. 101 4.33 RESTORE_CONTEXT .................................................. 102 4.34 RETURN .................................................................... 103 4.35 SAVE CONTEXT ......................................................... 103 4.36 SCISSOR_SIZE .......................................................... 104 4.37 SCISSOR_XY ............................................................. 105 4.38 STENCIL_FUNC ......................................................... 106 4.39 STENCIL_MASK ......................................................... 107 4.40 STENCIL_OP ............................................................. 108 4.41 TAG .......................................................................... 109 4.42 TAG_MASK................................................................ 109 4.43 VERTEX2F ................................................................. 110 4 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 4.44 C learance N o.: FT D I#349 VERTEX2II................................................................ 111 5 协处理器引擎指令 ..................................................... 112 5.1 显示清单指令的协处理器操纵 ............................................. 113 5.2 同步 ........................................................................... 114 5.3 ROM 及 RAM 字体........................................................... 114 5.4 警告 ........................................................................... 116 5.5 错误的情况 ................................................................... 116 5.6 小工具实体尺寸 ............................................................. 117 5.7 小工具颜色设定 ............................................................. 117 5.8 协处理器引擎图形状态 ..................................................... 118 5.9 OPTION 参数的定义 ........................................................ 118 5.10 协处理器引擎的资源...................................................... 119 5.11 指令组...................................................................... 120 5.12 CMD_DLSTART – 开始一个显示清单 ................................. 121 5.13 CMD_SWAP – 交换目前的显示清单 ................................... 121 5.14 CMD_COLDSTART -将协处理器引擎的状态设为预设值 ........... 121 5.15 CMD_INTERRUPT – 触发 INT_CMDFLAG 中断 ................ 122 5.16 CMD_APPEND - 附加存储器于显示清单 ............................. 123 5.17 CMD_REGREAD -读取一个寄存器的值 ............................... 124 5.18 CMD_MEMWRITE -写入字节到存储器 ............................... 124 5.19 CMD_INFLATE -解压缩数据到存储器 ................................ 125 5.20 CMD_LOADIMAGE - 截入 JPEG 影像 .............................. 126 5.21 CMD_MEMCRC – 为存储器记算一个 CRC-32 ...................... 127 5.22 CMD_MEMZERO -写入零值到一个存储器区块 ...................... 128 5.23 CMD_MEMSET -将一个字节的值填入存储器 ......................... 129 5 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.24 CMD_MEMCPY -复制一个存储器区块................................. 129 5.25 CMD_BUTTON –绘制一个按钮 ........................................ 130 5.26 CMD_CLOCK –绘制一个针式台钟 ..................................... 133 5.27 CMD_FGCOLOR - 设定前景颜色 ...................................... 137 5.28 CMD_BGCOLOR -设定背景颜色 ....................................... 138 5.29 CMD_GRADCOLOR -设定 3D 按键上强调显示的颜色 ............. 139 5.30 CMD_GAUGE –绘制一个仪表 .......................................... 140 5.31 CMD_GRADIENT –绘制一个平滑的颜色梯度 ....................... 147 5.32 CMD_KEYS –绘制一行按键 ............................................. 149 5.33 CMD_PROGRESS –绘制一个进度条 .................................. 154 5.34 CMD_SCROLLBAR –绘制一个卷动条 ................................ 156 5.35 CMD_SLIDER – 绘制一个滑块......................................... 159 5.36 CMD_DIAL –绘制一个旋转拨号控制................................... 161 5.37 CMD_TOGGLE –绘制一个切换开关 ................................... 163 5.38 CMD_TEXT – 绘制文字.................................................. 166 5.39 CMD_NUMBER – 绘制一个十进位数字 ............................... 170 5.40 CMD_SETMATRIX-写入目前的矩阵到显示清单..................... 172 5.41 CMD_GETMATRIX -检索目前的矩阵系数 ........................... 173 5.42 CMD_GETPTR –取得解压缩数据的结束存储器地址 ................. 174 5.43 CMD_GETPROPS -取得 CMD_LOADIMAGE 解压缩的影像特性 176 5.44 CMD_SCALE –对目前的矩阵做一个缩放 .............................. 176 5.45 CMD_ROTATE -将目前矩阵做旋转 .................................... 178 5.46 CMD_TRANSLATE -将目前矩阵做一个转移 ......................... 179 5.47 CMD_CALIBRATE -执行一个触屏校正的例行工作.................. 180 6 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.48 CMD_SPINNER – 开始一个动态转盘 ................................. 181 5.49 CMD_SCREENSAVER -开始一个动态屏幕保护程序................ 185 5.50 CMD_SKETCH -开始一个连续草图更新 ............................... 186 5.51 CMD_STOP -停止任何动态转盘、屏幕保护、草图................... 187 5.52 CMD_SETFONT -设定一个定制的字体 ................................ 188 5.53 CMD_TRACK -追踪触摸以供图形物件使用 ........................... 189 5.54 CMD_SNAPSHOT -对目前的屏幕截图................................ 192 5.55 CMD_LOGO –播放 FTDI 标志的动画 ................................. 193 6 FT801 操作 ........................................................... 195 6.1 FT801 介绍 ................................................................... 195 6.2 FT801 触控引擎.............................................................. 195 6.3 FT801 触控寄存器 ........................................................... 195 6.4 寄存器概要 ................................................................... 201 6.5 校正 ........................................................................... 201 6.6 CMD_CSKETCH–电容式触摸的特定草图................................ 201 附录 A –参考文件 ......................................................... 204 附录 B –首字母缩略词及缩写............................................ 205 附录 C –存储器映射 ...................................................... 206 附录 D –修订历史......................................................... 207 源代码片段清单 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 1 初始化过程 ..................................................................................... 17 2 声音合成器拨放木琴上的 C8 音符........................................................... 17 3 声音合成器确认声音播放状态 ............................................................... 17 4 声音合成器停止声音播放..................................................................... 17 5 音频播放 ....................................................................................... 18 7 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 源代码片段 C learance N o.: FT D I#349 6 确认音频播放的状态 .......................................................................... 18 7 停止音频播放 .................................................................................. 18 8 开始 ............................................................................................. 19 9 DL 函数的定义 ................................................................................ 24 10 颜色及透明度 ................................................................................ 25 11 负值屏幕坐标的例子 ........................................................................ 26 12 全像素数值的屏幕截图 ...................................................................... 27 13 CMD_GETPTR 指令范例 ................................................................ 175 14 CMD_CALIBRATE 范例 ................................................................. 181 15 CMD_SCREENSAVER 范例 ............................................................ 185 16 CMD_SKETCH EXAMPLE .............................................................. 187 17 CMD_SETFONT .......................................................................... 188 18 CMD_SNAPSHOT 160X120–屏幕................................................... 193 19 CMD_LOGO 指令范例 ................................................................... 194 图清单 图 1: 软件架构................................................................................................. 13 图 2: 水平时序................................................................................................. 14 图 3: 垂直时序 ................................................................................................. 15 图 4: 没有 CSPREAD 的像素时钟........................................................................... 15 图 5: 有 CSPREAD 的像素时钟 ............................................................................. 15 图 6:产生一个启始影像的范例。 ............................................................................ 19 图 7: 以像素为精度表示 FT800 图形坐标平面 ............................................................ 20 图 8: ALPHA_F UNC 的常数 ................................................................................. 73 图 9: L1/L4/L8 的像素格式 ................................................................................. 78 图 10: ARGB2/1555 的像素格式 .......................................................................... 78 图 11: ARGB4、RGB332、RGB565 的像素格式及调色板............................................. 79 图 12: STENCIL_OP 常数的定义 ........................................................................ 108 表清单 表 表 表 表 表 表 表 表 表 表 表 表 表 1 位图呈现的性能 .......................................................................................... 28 2 REG_SWIZZLE 及 RGB 引脚映射表 ................................................................. 31 3 图形上下文 ............................................................................................... 69 4 FT800 图形基元清单 ................................................................................... 70 5 图形位图格式表 .......................................................................................... 71 6 FT800 图形基元操作定义 .............................................................................. 74 7 BITMAP_LAYOUT 格式清單 ........................................................................... 76 8 BLEND_FUNC 常数值定义 ............................................................................ 89 9 FT800 字体度量区块格式 ............................................................................ 116 10 小工具(WIDGET)颜色设定表 ...................................................................... 117 11 协处理器引擎图形状态 .............................................................................. 118 12 OPTION 参数定义 ................................................................................... 118 13 触摸寄存器映射表格 ................................................................................. 201 8 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄存器清单 寄存器定义 1 REG_PCLK 定义.............................................................................. 29 寄存器定义 2 REG_PCLK_POL 定义 ................................................................... 29 寄存器定义 3 REG_CSPREAD 定义 .................................................................... 30 寄存器定义 4 REG_SWIZZLE 定义 .................................................................... 30 寄存器定义 5 REG_DIT HER 定义 ...................................................................... 31 寄存器定义 6 REG_OUTBITS 定义..................................................................... 32 寄存器定义 8 REG_VSYNC1 定义 ...................................................................... 33 寄存器定义 9 REG_VSYNC0 定义 ...................................................................... 33 寄存器定义 10 REG_VSIZE 定义.................................................................... 34 寄存器定义 11 REG_VOFFSET 定义 ................................................................ 35 寄存器定义 12 REG_VCYCLE 定义................................................................... 35 寄存器定义 13 REG_HSY NC1 定义 .................................................................. 36 寄存器定义 14 REG_HSY NC0 定义 .................................................................. 36 寄存器定义 15 REG_HSIZE 定义 .......................................................................... 37 寄存器定义 16 REG_HOFFSET 定义................................................................. 37 寄存器定义 17 REG_HCYCLE .............................................................................. 38 寄存器定义 18 REG_TAP_MASK........................................................................... 38 寄存器定义 19 REG_TAP_CRC 定义................................................................. 39 寄存器定义 20 REG_DLSWAP 定义.................................................................. 40 寄存器定义 21 REG_TAG 定义 ............................................................................. 40 寄存器定义 22 REG_TAG_Y 定义 .................................................................... 41 寄存器定义 23 REG_TAG_X 定义 .......................................................................... 41 寄存器定义 24 REG_TOUCH_DIRECT_Z1Z2 定义 .................................................... 42 寄存器定义 25 REG_TOUCH_DIRECT_XY ......................................................... 42 寄存器定义 26 REG_TOUCH_TRANSFORM_F 定义 ................................................... 43 寄存器定义 27 REG_TOUCH_TRANSFORM_E 定义 ................................................... 43 寄存器定义 28 REG_TOUCH_TRANSFORM_D 定义 ................................................... 44 寄存器定义 29 REG_TOUCH_TRANSFORM_C 定义 ................................................... 44 寄存器定义 30 REG_TOUCH_TRANSFORM_B 定义 ................................................... 45 寄存器定义 31 REG_TOUCH_TRANSFORM_A 定义 ................................................... 45 寄存器定义 32 REG_TOUCH_TAG 定义 ............................................................ 46 寄存器定义 33 REG_TOUCH_TAG_XY 定义 ............................................................. 46 寄存器定义 34 REG_TOUCH_SCREEN_XY 定义.................................................. 47 寄存器定义 35 REG_TOUCH_RZ 定义 .............................................................. 47 寄存器定义 36 REG_TOUCH_RAW_XY 定义 ...................................................... 48 寄存器定义 37 REG_TOUCH_RZTHRESH 定义 ................................................... 48 寄存器定义 38 REG_TOUCH_OVERSAMPLE 定义................................................ 49 寄存器定义 39 REG_TOUCH_SETTLE 定义.............................................................. 49 寄存器定义 40 REG_TOUCH_CHARGE 定义 ...................................................... 50 寄存器定义 41 REG_TOUCH_ADC_MODE 定义 .................................................. 50 寄存器定义 42 REG_TOUCH_MODE 定义 ............................................................... 51 9 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄存器定义 43 REG_PLAY 定义 ...................................................................... 51 寄存器定义 44 REG_SOUND 定义 ................................................................... 51 寄存器定义 45 REG_VOL_SOUND 定义.................................................................. 52 寄存器定义 46 REG_VOL_PB 定义 .................................................................. 52 寄存器定义 47 REG_PLAY BACK_PLAY 定义 ....................................................... 53 寄存器定义 48 REG_PLAYBACK_LOOP 定义 ............................................................ 54 寄存器定义 49 REG_PLAYBACK_FORMAT 定义 ........................................................ 54 寄存器定义 51 REG_PLAYBACK_READPT R 定义....................................................... 55 寄存器定义 52 REG_PLAY BACK_LENGTH 定义 .................................................. 56 寄存器定义 53 REG_PLAY BACK_START 定义 ..................................................... 56 寄存器定义 54 REG_CMD_DL 定义 ....................................................................... 57 寄存器定义 55 REG_CMD_WRITE 定义 ............................................................ 57 寄存器定义 57 REG_TRACKER 定义 ...................................................................... 58 寄存器定义 58 REG_PWM_DUTY 定义 ............................................................. 59 寄存器定义 59 REG_PWM_HZ 定义 ................................................................. 59 寄存器定义 60 REG_INT_MASK 定义............................................................... 60 寄存器定义 61 REG_INT_EN 定义 ........................................................................ 60 寄存器定义 62 REG_INT_FLAGS 定义 ................................................................... 61 寄存器定义 63 REG_GPIO 定义 ............................................................................ 61 寄存器定义 64 REG_GPIO_DIR 定义 ..................................................................... 62 寄存器定义 65 REG_CPURESET 定义 ..................................................................... 62 寄存器定义 66 REG_SCREENSHOT_READ 定义 ....................................................... 63 寄存器定义 67 REG_SCREENSHOT_BUSY 定义 ....................................................... 63 寄存器定义 68 REG_SCREENSHOT_START 定义 ...................................................... 64 寄存器定义 69 REG_SCREENSHOT_Y 定义 ............................................................. 64 寄存器定义 70 REG_SCREENSHOT_EN 定义 ........................................................... 65 寄存器定义 71 REG_F REQUENCY 定义................................................................... 65 寄存器定义 72 REG_CLOCK 定义 ......................................................................... 66 寄存器定义 73 REG_F RAMES 定义........................................................................ 67 寄存器定义 74 REG_ID 定义 ............................................................................... 67 寄存器定义 75 REG_TRIM 定义 ............................................................................ 68 寄存器定义 76 REG_CTOUCH_MODE 定义 ...................................................... 195 寄存器定义 77 REG_CTOUCH_EXTENDED 定义 ..................................................... 196 寄存器定义 78 REG_CTOUCH_TOUCH0_XY 定义 ................................................... 196 寄存器定义 79 REG_CTOUCH_TOUCH1_XY 定义 ................................................... 197 寄存器定义 80 REG_CTOUCH_TOUCH2_XY 定义 ................................................... 197 寄存器定义 81 REG_CTOUCH_TOUCH3_XY 定义 ................................................... 198 寄存器定义 82 REG_CTOUCH_TOUCH4_X 定义 ................................................... 198 寄存器定义 83 REG_CTOUCH_TOUCH4_Y 定义 ..................................................... 199 10 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 1 简介 这份文件叙述了 FT800 系列芯片的图形指令、小工具(widget)指令的编程细节,以及 FT800 系列芯片的配置方 法,以提供流畅而生动的的屏幕效果。 FT800 系列的芯片是图形的控制器,拥有音频播放及触控能力等附加功能。它们包含了丰富的图形物件(包括基 元(primitive)以及小工具(widget))集合,可以用在一系列产品的菜单和截图显示上,例如家用电器、玩具、工 厂机械、家庭自动化、电梯以及其它相关的应用。 1.1 概观 这份文件针对每个特定指令都有简单易用的范例,因此对于了解指令集很有用处。除此之外,也有包括不同的电 源模式、音频和触控功能以及各自的使用方式解说。 引脚设定、硬件模型以及硬件配置信息都可以参考 FT800 的数据表(DS_FT800_Embedded_Video_Engine )或是 FT801 的数据表(DS_FT801) 1.2 文件范围 这份文件目的在供软件编程员和系统设计者在有 SPI 或 I2C 主接口的系统处理器上,开发有图形用户界面(GUI) 的应用程序。 1.3 API 参考定义 在这份文件有用到的 API,其功能性及其命名方式如下所示 wr8() –在指定的地址位置写入 8 个 bits wr16() –在指定的地址位置写入 16 个 bits wr32() –在指定的地址位置写入 32 个 bits wr8s() – 在指定的地址位置写入 8 个 bits 的字符串 rd8() –从指定的地址位置读取 8 个 bits rd16() –从指定的地址位置读取 16 个 bits rd32() –从指定的地址位置读取 32 个 bits rd8s() –从指定的地址位置读取 8 个 bits 的字符串 cmd() –写入 32 个 bits 的指令到协处理器引擎 FIFO RAM_CMD cmd_*() –写入 32 个 bits 的指令到协处理器引擎 FIFO(RAM_CMD),包含必须的参数。 dl() –写入指定的 32 个 bits 显示清单指令到 RAM_DL。更多信息可参考 2.5.4 节。 host_command() –发送主机命令到 FT800。更多信息参考 FT800 的数据表。 11 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2 程序模型 FT800 对于主机 MCU 来说是一个存储器映射的 SPI 或是 I2C 装置。主机以读取或是写入 8MB 的地址空间。 在这份文件里,DL 指令、协处理器引擎指令、寄存器值的读写、输入的 RGB 位图数据、以及 ADPCM(自适应 差分脉冲编码调制)输入数据的字节序都是`(Little Endian)小字节’格式。 2.1 一般性软件架构 软件架构可以大致上分类成不同的层次,例如定制的应用程序、图形/GUI 管理器、视频管理器、音频管理器、 以及驱动程式等等。FT800 的上级图形引擎指令及协处理器引擎的小工具指令是属于图形/GUI 管理器的一部份。 视频以及音频的控制&数据路径是属于视频管理器及音频管理器。图形/GUI 管理器及硬件的沟通是透过 SPI 及 I2C 驱动程序。 通常显示的屏幕截图是透过定制的应用程序所建构,而这些定制的应用程序是 根据由图形/GUI 处理器曝露的帧。 12 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 微处理器 定制的 应用程序 0 定制的 应用程序 1 定制的 应用程序 2 图形/GUI 管理器 视频管理器 音频管理器 属于图形管理器 一部份的 FT800 图形物件 & 小工具 主机 软件栈 SPI/I2C 驱动程式 硬件 FT800 图 1: 软件架构 2.2 显示配置及初始化 显示的配置,需将特定数值载入时序控制的寄存器以达到想要的显示结果。以下这些寄存器控制水平方向的时序: REG_PCLK REG_PCLK_POL REG_HCYCLE REG_HOFFSET REG_HSIZE REG_HSYNC0 REG_HSYNC1 以下这些寄存器控制垂直方向的时序: REG_VCYCLE 13 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_VOFFSET REG_VSIZE REG_VSYNC0 REG_VSYNC1 寄存器 REG_CSPREAD 改变颜色时序以减少系统噪音。 GPIO bit 7 是用来作为 LCD 模块的显示启动引脚。将 GPIO bit 的方向设定成”输出”之后,可以写入数值”1”到 GPIO bit 7 启动显示,或是写入数值”0”到 GPIO bit 7 关闭显示。预设的 GPIO bit 7 方向是”输出”,数值 为”0”。 注意:有关显示寄存器集合的信息请参考 FT800 的数据表。 2.2.1 水平时序 图 2: 水平时序 REG_PCLK 控制 PCLK 的频率。此寄存器会设定一个除数给主时钟 48MHz,例如除数为 4,PCLK 则输出一个 12MHz 的时钟。但如果 REG_PCLK 设为 0 ,则所有显示输出会暂停。REG_PCLK_POL 控制 PCLK 的极 性。”0”表示数据输出于 PCLK 的上升沿,若为”1”则表示数据输出于 PCLK 的下降沿。 在 一 条 水平 线上 PCLK 时 钟 的总 数 为 REG_HCYCLE 。 在这 水 平线 上 是扫 描输 出 的像 素 ,像 素总 数 以 REG_HSIZE 表示。像素的扫描输出是在 REG_HOFFSET 个时钟周期后开始。当像素正被扫描输出的时候,信 号 DE 的值为高电平。 在信号 HSYNC 上的水平同步时序是被 REG_HSYNC0 及 REG_HSYNC1 所控制。两者分别代表 HSYNC 上升 及下降的时间。 14 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2.2.2 垂直时序 图 3: 垂直时序 垂直时序是被线的数量所指定。在一个帧里所有线的总数为 REG_VCYCLE。而像素行数总共有 REG_VSIZE 个。 这些线是在经过 REG_VOFFSET 个时钟周期后开始。 在信号 VSYNC 上的垂直同步时序是由 REG_VSYNC0 及 REG_VSYNC1 所控制。两者分别代表 VSYNC 上升及 下降的时间。 2.2.3 信号更新时序控制 当 REG_CSPREAD 为关闭状态,所有颜色信号在同一个时间更新: 图 4: 没有 CSPREAD 的像素时钟 若 REG_CSPREAD 为启动状态,颜色信号的时序会被些微调整,所以只有较少的信号会同时改变: 图 5: 有 CSPREAD 的像素时钟 15 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2.2.4 时序范例: 480x272 分辨率,更新频率 60Hz 显示的更新频率若为 60Hz,每一帧有 48000000/60=800000 个快速时钟。将 PCLK 的除数 REG_PCLK 设 为 5,则 PCLK 的频率变为 9.6 MHz,而 每一帧有 800000/5= 160000 个 PCLK 周期。 对于一个 480 x 272 分辨率的显示屏来说,典型的水平周期是 525 个时钟周期的时间,垂直周期是 286 行。经 过一些运算得到 548 x 292 配置下一帧有 160016 个周期,很接近目标。故当 REG_HCYCLE=548 而 REG_VCYCLE=292,显示频率几乎为 60Hz。其他寄存器设定可以直接透过查找显示屏幕的数据表来设定。 2.2.5 初始程序 这一部份描述在不同情况下的初始化程序。 开机过程的初始化程序: 1. 使用的 MCU SPI 时钟不要超过 11MHz。 2. 传送主机命令“CLKEXT” 到 FT800。 3. 传送主机命令“ACTIVE”,以启动送到 FT800 的时钟。 4. 配置视频时序寄存器(REG_PCLK 除外)。 5. 写入第一个显示清单。 6. 写入 REG_DLSWAP, FT800 即刻交换(swap)显示清单。 7. 启动背光控制以供显示。 8. 写入 REG_PCLK, 从第一个显示清单开始视频输出。 9. 使用的 MCU SPI 时钟不要超过 30MHz。 MCU_SPI_CLK_Freq(<11MHz);// 使用小于11MHz的MCU SPI时钟 host_command(CLKEXT);// 传送主机命令“CLKEXT” 到FT800 host_command(ACTIVE);// 传送主机命令“ACTIVE” 到FT800 /* 配置视频时序寄存器- 以展示WQVGA的解析度*/ wr16(REG_HCYCLE,548); wr16(REG_HOFFSET,43); wr16(REG_HSYNC0,0); wr16(REG_HSYNC1,41); wr16(REG_VCYCLE,292); wr16(REG_VOFFSET,12); wr16(REG_VSYNC0,0); wr16(REG_VSYNC1,10); wr8(REG_SWIZZLE,0); wr8(REG_PCLK_POL,1); wr8(REG_CSPREAD,1); wr16(REG_HSIZE,480); wr16(REG_VSIZE,272); /* 写入第一个显示清单 */ wr32(RAM_DL+0,CLEAR_COLOR_RGB(0,0,0)); wr32(RAM_DL+4,CLEAR(1,1,1)); wr32(RAM_DL+8,DISPLAY()); wr8(REG_DLSWAP,DLSWAP_FRAME);//交换显示清单 16 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 wr8(REG_GPIO_DIR,0x80| Ft_Gpu_Hal_Rd8(phost,REG_GPIO_DIR)); wr8(REG_GPIO,0x080| Ft_Gpu_Hal_Rd8(phost,REG_GPIO));//启动显示的bit wr8(REG_PCLK,5);//此后LCD上可以看到图像 MCU_SPI_CLK_Freq(<30Mhz);// 使用的MCU SPI时钟不要超过30MHz 源代码片段 1 初始化过程 由掉电引脚 PD_N 进行初始化程序: 1. 将掉电引脚 PD_N 驱动至高电平 2. 等待至少 20 毫秒 3. 执行 ”开机过程的初始化程序”的步骤 1 至步骤 9 从睡眠模式初始化的程序: 1. 传送“ACTIVE”指令给主机以启动送到 FT800 的时钟 2. 等待至少 20 毫秒 4. 执行 ”开机过程的初始化程序”的步骤 5 至步骤 8 从待机模式初始化的程序: 执行”从睡眠模式初始化的程序”的步骤(除了步骤 2 的等待至少 20 毫秒) 注意:电源模式的信息可参考 FT800 的数据表。在掉电及复位操作时的音频管理请跟随 Error! Reference source not found. 节的指示。 2.3 声音合成器 播放在木琴上的 C8 音符示例代码: wr8(REG_VOL_SOUND,0xFF);// 将音量设成最大 wr16(REG_SOUND,(0x6C<<8)|0x41);// 木琴的C8 MIDI音符 wr8(REG_PLAY,1);// 拨放声音 源代码片段 2 声音合成器拨放木琴上的 C8 音符 确认声音播放状态的示例代码: Sound_status = rd8(REG_PLAY);// 1-播放正在进行, 0-播放己结束 源代码片段 3 声音合成器确认声音播放状态 停止声音播放的示例代码∶ wr16(REG_SOUND,0x0);// 将播放的声音设置为静音 wr8(REG_PLAY,1);// 播放声音 Sound_status = rd8(REG_PLAY);// 1-播放正在进行, 0-播放己经结束 源代码片段 4 声音合成器停止声音播放 为了避免音频在复位或是电源状态改变时候出现爆音,触发一个”无声”的声音,并等待完成 (声音播放完成是指 REG_PLAY 包含一个”0”值)。這樣將使輸出值設定為”0”。在重新開機時,音頻引擎會播放”关闭无声”的聲音, 將輸出值驅動至中間電平。 注意: 有關聲音合成器及音頻播放器的更多資訊可以參考 FT800 的數據表。 17 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2.4 音频播放 FT800 支援三种类型的音频格式: 4 Bit IMA ADPCM,8 Bit 有符号的 PCM,8 Bit u-Law 。对于 IMA ADPCM 格式,请注意字节的顺序:在一个字节内,第一个取样(4 bits)会放置在 bit 0 到 bit 3 之间,而第二个 取样会放置在 bit 4 到 bit 7 之间。 为了播放在 FT800 RAM 上的音频数据, FT800 必须要求在 REG_PLAYBACK_START 的开始地址 要对齐到 64 bit (8 Bytes) 的整数倍。除此之外, 寄存器 REG_PLAYBACK_LENGTH 上指示的音频数据长度也必须对 齐到 64 bit (8 Bytes)的整数倍。 为了学习播放音频数据,请参照以下的范例代码: wr8(REG_VOL_PB,0xFF);//配置音频播放的音量 wr32(REG_PLAYBACK_START,0);//配置音频缓冲器的启始地址 wr32(REG_PLAYBACK_LENGTH,100*1024);//配置音频缓冲器的长度 wr16(REG_PLAYBACK_FREQ,44100);//设定音频取样频率 wr8(REG_PLAYBACK_FORMAT,ULAW_SAMPLES);//配置音频格式 wr8(REG_PLAYBACK_LOOP,0);//配置成一次或是连续播放 wr8(REG_PLAYBACK_PLAY,1);//开始音频播放 源代码片段 5 音频播放 AudioPlay_Status = rd8(REG_PLAYBACK_PLAY);//1-音频播放正在进行, 0-音频播放已经结束 源代码片段 6 确认音频播放的状态 wr32(REG_PLAYBACK_LENGTH,0);//将播放长度配置为0 wr8(REG_PLAYBACK_PLAY,1);// 开始音频播放 源代码片段 7 停止音频播放 18 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2.5 图表的常规性工作 这个部份描述了图表功能并提供了一些范例。 2.5.1 开始 这个简短的例子产生一个屏幕显示了”FTDI”这个文字以及一个红点。 图 6:产生一个启始影像的范例。 绘制这样屏幕的源代码如下: wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL wr32(RAM_DL +0, CLEAR(1,1,1));// 清除屏幕 +4, BEGIN(BITMAPS));//开始绘制位图 +8, VERTEX2II(220,110,31,'F'));// 字体31的ascii F +12, VERTEX2II(244,110,31,'T'));// ascii T +16, VERTEX2II(270,110,31,'D'));// ascii D +20, VERTEX2II(299,110,31,'I'));// ascii I +24, END()); +28, COLOR_RGB(160,22,22));// 改变颜色成红色 +32, POINT_SIZE(320));//将点的半径大小设定成20像素(20*16) +36, BEGIN(POINTS));//开始绘制点 +40, VERTEX2II(192,133,0,0));//红点 +44, END()); +48, DISPLAY());//显示影像 源代码片段 8 开始 在载入上述 的绘图指 令到显示 清单的 RAM 之 后, 为了使新 的显示清 单在下 一个 帧刷 新时有效 ,寄存器 REG_DLSWAP 必须被设定为 0x02。 注意: 显示清单都是以 RAM_DL 为开始地址 因为每个指令的宽度都是 32 bit,地址固定的增加量是 4 bytes。 19 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 在做任何新图操作时,建议先执行 CLEAR 指令,以确保 FT800 图形引擎在已知的状态。 显示清单的结束固定都以指令 DISPLAY 标记。 2.5.2 坐标平面 下图说明了图形的坐标平面及可见区域。 若精度为 1 个像素,有效的 X 及 Y 坐标范围是从-1024 到 1023 个像素单位,若精度达 1/16 个像素,则坐标 范围为-16384 到 16383 个单位。 -1024 X -1024 (0,0) 511 1023 可见区域 (511,511) 511 1023 Y 图 7: 以像素为精度表示 FT800 图形坐标平面 20 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2.5.3 绘制图案 一般绘制图案的方法如下: 以 BEGIN 指令开始时,会同时选一种图形基元类型当作开始 输入一个或多个顶点,以指定图形基元在屏幕上的位置。 以 END 指令标示图形基元的结束。 (注意: 之后许多例子不会明确列出 END 指令) 图形引擎支持的图形基元如下: BITMAPS 位图 – 矩形的像素阵列,有不同的颜色格式。 POINTS 点 - 抗混叠的点,点的半径可设成 1 到 256 个像素 LINES 线 - 抗混叠的的线,宽度可设成 0 到 4095 个 1/16 像素单位。(宽度定义是指从线的中心 到边界的距离) LINE_STRIP 线带 – 抗混叠的线条,头尾相接。 RECTS 矩形 -圆角的矩形,圆角的弧度可用 LINE_WIDTH 指令调整。 EDGE_STRIP_A/B/L/R - 边条 例子 以不同的颜色,绘制半径范围从 5 个像素变化到 13 个像素的点: dl( COLOR_RGB(128, 0, 0) ); dl( POINT_SIZE(5 * 16) ); dl( BEGIN(POINTS) ); dl( VERTEX2F(30 * 16,17 * 16) ); dl( COLOR_RGB(0, 128, 0) ); dl( POINT_SIZE(8 * 16) ); dl( VERTEX2F(90 * 16, 17 * 16) ); dl( COLOR_RGB(0, 0, 128) ); dl( POINT_SIZE(10 * 16) ); dl( VERTEX2F(30 * 16, 51 * 16) ); dl( COLOR_RGB(128, 128, 0) ); dl( POINT_SIZE(13 * 16) ); dl( VERTEX2F(90 * 16, 51 * 16) ); 利用 VERTEX2F 指令可以得到圆心的位置。 以不同的颜色画出尺寸范围从 2 个像素变化至 6 个像素的线(线宽度定义是从线的中心到边界): 21 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( COLOR_RGB(128, 0, 0) ); dl( LINE_WIDTH(2 * 16) ); dl( BEGIN(LINES) ); dl( VERTEX2F(30 * 16,38 * 16) ); dl( VERTEX2F(30 * 16,63 * 16) ); dl( COLOR_RGB(0, 128, 0) ); dl( LINE_WIDTH(4 * 16) ); dl( VERTEX2F(60 * 16,25 * 16) ); dl( VERTEX2F(60 * 16,63 * 16) ); dl( COLOR_RGB(128, 128, 0) ); dl( LINE_WIDTH(6 * 16) ); dl( VERTEX2F(90 * 16, 13 * 16) ); dl( VERTEX2F(90 * 16, 63 * 16) ); VERTEX2F 指令需以成对方式使用以定义线的开始及结束。 绘制三个尺寸分别为 5x25、10x38、15x50 的矩形(line_width 是用来定义拐角的弧度,除了矩形尺寸以外, LINE_WIDTH 像素也会加在两个方向。) dl( COLOR_RGB(128, 0, 0) ); dl( LINE_WIDTH(1 * 16) ); dl( BEGIN(RECTS) ); dl( VERTEX2F(28 * 16,38 * 16) ); dl( VERTEX2F(33 * 16,63 * 16) ); dl( COLOR_RGB(0, 128, 0) ); dl( LINE_WIDTH(5 * 16) ); dl( VERTEX2F(50 * 16,25 * 16) ); dl( VERTEX2F(60 * 16,63 * 16) ); dl( COLOR_RGB(128, 128, 0) ); dl( LINE_WIDTH(10 * 16) ); dl( VERTEX2F(83 * 16, 13 * 16) ); dl( VERTEX2F(98 * 16, 63 * 16) ); VERTEX2F 指令需以成对方式使用,以定义矩形的左上及右下拐角位置。 以多组坐标点绘制线条: 22 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( CLEAR_COLOR_RGB(5, 45, 110) ); dl( COLOR_RGB(255, 168, 64) ); dl( CLEAR(1 ,1 ,1) ); dl( BEGIN(LINE_STRIP) ); dl( VERTEX2F(5 * 16,5 * 16) ); dl( VERTEX2F(50 * 16,30 * 16) ); dl( VERTEX2F(63 * 16,50 * 16) ); 往上绘制边条: dl( CLEAR_COLOR_RGB(5, 45, 110) ); dl( COLOR_RGB(255, 168, 64) ); dl( CLEAR(1 ,1 ,1) ); dl( BEGIN(EDGE_STRIP_A) ); dl( VERTEX2F(5 * 16,5 * 16) ); dl( VERTEX2F(50 * 16,30 * 16) ); dl( VERTEX2F(63 * 16,50 * 16) ); 往下绘制边条: dl( CLEAR_COLOR_RGB(5, 45, 110) ); dl( COLOR_RGB(255, 168, 64) ); dl( CLEAR(1 ,1 ,1) ); dl( BEGIN(EDGE_STRIP_B) ); dl( VERTEX2F(5 * 16,5 * 16) ); dl( VERTEX2F(50 * 16,30 * 16) ); dl( VERTEX2F(63 * 16,50 * 16) ); 往右绘制边条: dl( CLEAR_COLOR_RGB(5, 45, 110) ); dl( COLOR_RGB(255, 168, 64) ); dl( CLEAR(1 ,1 ,1) ); dl( BEGIN(EDGE_STRIP_R) ); dl( VERTEX2F(5 * 16,5 * 16) ); dl( VERTEX2F(50 * 16,30 * 16) ); dl( VERTEX2F(63 * 16,50 * 16) ); 23 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 往左绘制边条: dl( CLEAR_COLOR_RGB(5, 45, 110) ); dl( COLOR_RGB(255, 168, 64) ); dl( CLEAR(1 ,1 ,1) ); dl( BEGIN(EDGE_STRIP_L) ); dl( VERTEX2F(5 * 16,5 * 16) ); dl( VERTEX2F(50 * 16,30 * 16) ); dl( VERTEX2F(63 * 16,50 * 16) ); 2.5.4 写入显示清单 以 wr32()写入显示清单条目相当耗时而且容易出错,因此可以采用函数的方式: static size_t dli; staticvoid dl(unsignedlong cmd) { wr32(RAM_DL + dli, cmd); dli +=4; } ... dli =0;//开始写入显示清单 dl(CLEAR(1,1,1));//清除屏幕 dl(BEGIN(BITMAPS));//开始绘制位图 dl(VERTEX2II(220,110,31,'F'));// 字体31的ascii F dl(VERTEX2II(244,110,31,'T'));// ascii T dl(VERTEX2II(270,110,31,'D'));// ascii D dl(VERTEX2II(299,110,31,'I'));// ascii I dl(END()); dl(COLOR_RGB(160,22,22));//将颜色改为红色 dl(POINT_SIZE(320));//设定点的尺寸 dl(BEGIN(POINTS));//开始画点 dl(VERTEX2II(192,133,0,0));//红点 dl(END()); dl(DISPLAY());//显示影像 源代码片段 9 DL 函数的定义 24 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2.5.5 位图变换矩阵 为了做到位图变换,FT800 里有如下所示的位图变换阵列,并以 m 来表示。 𝐵𝐼𝑇𝑀𝐴𝑃_𝑇𝑅𝐴𝑁𝑆𝐹𝑂𝑅𝑀_𝐴 m=[ 𝐵𝐼𝑇𝑀𝐴𝑃_𝑇𝑅𝐴𝑁𝑆𝐹𝑂𝑅𝑀_𝐷 预设 m = [ 1.0 0.0 𝐵𝐼𝑇𝑀𝐴𝑃_𝑇𝑅𝐴𝑁𝑆𝐹𝑂𝑅𝑀_𝐵 𝐵𝐼𝑇𝑀𝐴𝑃_𝑇𝑅𝐴𝑁𝑆𝐹𝑂𝑅𝑀_𝐸 𝐵𝐼𝑇𝑀𝐴𝑃_𝑇𝑅𝐴𝑁𝑆𝐹𝑂𝑅𝑀_𝐶 ] 𝐵𝐼𝑇𝑀𝐴𝑃_𝑇𝑅𝐴𝑁𝑆𝐹𝑂𝑅𝑀_𝐹 0.0 0.0], 称作单位矩阵。 1.0 0.0 位图变换后的坐标𝑥 ′ , 𝑦 ′是用以下的式子计算: 𝑥 𝑥′ [𝑦 ′] = m × [ 𝑦] 1 1 也就是: 𝑥′ = 𝑥 ∗ 𝐴 + 𝑦 ∗ 𝐵 + 𝐶 𝑦′ = 𝑥 ∗ 𝐷 + 𝑦 ∗ 𝐸 + 𝐹 A,B,C,E,D,E,F 代表被指令 BITMAP_TRANSFORM_A-F 所分配的值 2.5.6 颜色及透明度 在屏幕上,可以在不止一处的位置画出同样的位图形,可分别设定颜色及透明度。 dl(COLOR_RGB(255,64,64));// 画在(200, 120),颜色为红色 dl(VERTEX2II(200,120,0,0)); dl(COLOR_RGB(64,180,64));// 画在(216, 136),颜色为绿色 dl(VERTEX2II(216,136,0,0)); dl(COLOR_RGB(255,255,64));// 画在(232, 152),颜色为透明黄色 dl(COLOR_A(150)); dl(VERTEX2II(232,152,0,0)); 源代码片段 10 颜色及透明度 COLOR_RGB 指令可以改变目前用来绘图的颜色,也就是用来绘制位图的颜色。COLOR_A 指令改变目前绘图 的 alpha 值,也就是改变绘图的透明度:alpha 等于 0 表示完全透明而 alpha 等于 255 表示完全不透明。 以这 个例子来说,alpha 等于 150 表现出部份透明的效果。 25 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2.5.7 VERTEX2II 及 VERTEX2F 先前用过的 VERTEX2II 指令仅允许正值的屏幕坐标。假如位图是部份超出屏幕范围,例如在屏幕滚动上,则有 必要指定到负值的屏幕坐标。 VERTEX2F 指令可以允许负值坐标。它也允许分数型的坐标,因为他可指定以 1/16 像素为单位的屏幕坐标(x,y) 例如,以 VERTEX2F 指令绘制相同的位图于(-10,-10)的位置: dl(BEGIN(BITMAPS)); dl(VERTEX2F(-160,-160)); dl(END()); 源代码片段 11 负值屏幕坐标的例子 26 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 2.5.8 屏幕截图 以下的源代码展示如何利用寄存器及 RAM_SCREENSHOT 指令,以全像素数值截取目前的屏幕。每一个像素是 以 32 bits 及 BGRA 的格式表示。然而,这个过程可能造成闪烁及撕裂的效果。 #define SCREEN_WIDTH #define SCREEN_HEIGHT 480 272 uint32 screenshot[SCREEN_WIDTH*SCREEN_HEIGHT]; wr8(REG_SCREENSHOT_EN, 1); for (int ly = 0; ly < SCREEN_HEIGHT; ly++) { wr16(REG_SCREENSHOT_Y, ly); wr8(REG_SCREENSHOT_START, 1); //读取64 bit寄存器,检查寄存器是否忙录 while (rd32(REG_SCREENSHOT_BUSY) | rd32(REG_SCREENSHOT_BUSY + 4)); wr8(REG_SCREENSHOT_READ , 1); for (int lx = 0; lx < SCREEN_WIDTH; lx ++) { //从RAM_SCREENSHOT读取32 bit像素值 //像素格式为BGRA:蓝色是最低的地址,Alpha是最高的地址 screenshot[ly*SCREEN_HEIGHT + lx] = rd32(RAM_SCREENSHOT + lx*4); } wr8(REG_SCREENSHOT_READ, 0); } wr8(REG_SCREENSHOT_EN, 0); 源代码片段 12 全像素数值的屏幕截图 2.5.9 性能 图形引擎没有帧缓存区:它使用动态的影像合成的方式,在扫描输出过程中建立每一条显示线。因此,绘制每一 条线的所需的时间是一个有限的时间。这个时间依扫描输出的参数所决定(REG_PCLK 及 REG_HCYCLE),但是 绝不会少于 2048 个内部时钟的周期。 一些性能上的局限性: 显示清单的长度必须小于 2048 个指令,因为图形引擎在每个时钟抓取显示清单指令一次。 图形引擎渲染的像素数量是每时钟 4 个像素。对于有 2048 个显示指令的线条,全部绘制出来的 像素表现,必须小于 8192 个像素。 对于一些位图格式,绘制的速率为每时钟周期一个像素。这些格式为 TEXT8X8、TEXTVGA、及 PALETTED。 对于双线性过滤的像素,绘制的速率会减少到每时钟周期 1/4 个像素。多数的位图的格式是每时 钟周期绘制一个像素,而上述提到的格式(TEXT8X8、TEXTVGA 、及 PALETTED)是每 4 个时钟 周期画一个像素。 27 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 以上总结: 表 1 位图呈现的性能 过滤模式 格式 速率 最近(Nearest) TEXT8X8、TEXTVGA、及 PALETTED 每个时钟周期 1 个像素 最近(Nearest) 所有其他格式 每个时钟周期 4 个像素 双线性(BILINEAR) TEXT8X8、TEXTVGA、及 PALETTED 每个时钟周期 1/4 个像素 双线性(BILINEAR) 所有其他格式 每个时钟周期 1 个像素 28 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 3 寄存器描述 在这一章里,所有 FT800 寄存器被分类成 5 个群组:图形引擎寄存器、音频引擎寄存器、触摸引擎寄存器、协 处理器引擎寄存器,以及其他寄存器。这一章会为每一种寄存器下详细的定义。如要检视 FT800 寄存器的摘要, 请参考数据表。 另外,请注意所有保留的 bits 都是只读的,而且值为零。所有 16 进位的数值都有 0x 作为前缀。 为了能对操作 有更好的理解,强烈鼓励读者可以交叉参考本文件其他章节的部份。 3.1 图形引擎寄存器 寄 存器定义 1 REG_PCLK 定 义 REG_PCLK 定义 保留 R/W 31 地址: 8 7 0x10246C 复位值: 0 0x0 Bit 0 - 7 : 这些bits是被设定来当作 主时钟的除数,以供输出为PCLK。如果典型的主时 钟频率为48MHz而且这些bits的值为5,则PCLK的频率为9.6MHz。假如这些bits的值为 0,则没有PCLK输出。 注意事项: 寄 存器定义 2 无 REG_PCLK_POL 定 义 29 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_PCLK_POL Definition 保留 R/W 31 地址: 1 0x102468 Reset Value: 0 0x0 Bit 0 : 这个bit控制PCLK的极性。如果设定为0,则PCLK的极性在上升边缘。 如果设定为1,则PCLK的极性是在下降边缘。 注意事项: 寄 存器定义 3 无 REG_CSPREAD 定 义 更多细节请参考 2.2.3 节 REG_CSPREAD 定义 保留 读/写 31 1 地址:0x102464 0 复位值: 0x1 Bit 0:这个 bit 以 PCLK 的时钟的有效边缘控制 RGB 信号的变换, 当 REG_CSPREAD=0,R[7:2]、 G[7:2]、及 B[7:2]在 PCLK 的有效边缘之后做转换。当 REG_CSPREAD=1,R[7:2]在一个 PCLK 时钟周期 之前做转换,而 B[7:2]在一个 PCLK 时钟周期之后做转换,这样做可以帮忙减少系统噪音。 Bit 1-31: 保留 注意事项: 无 寄 存器定义 4 REG_SWIZZLE 定 义 30 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_SWIZZLE 定义 保留 读/写 31 43 地址:0x102460 0 复位值: 0x0 Bit 0 – 3:这些 bits 是用来控制输出的 RGB 引脚的排部,可能有助于支持不同的 LCD 屏幕。细节请参考以下 表格。 注意事项: 无 表 2 REG_SWIZZLE 及 RGB 引脚映射表 引脚 REG_SWIZZLE b3 b2 b1 b0 R7, R6, R5, G7, G6, G5, R4, R3, R2 G4, G3, G2 0 X 0 0 R[7:2] G[7:2] 0 X 0 1 R[2:7] G[2:7] 0 X 1 0 B[7:2] G[7:2] 0 X 1 1 B[2:7] G[2:7] 1 0 0 0 G[7:2] B[7:2] 1 0 0 1 G[2:7] B[2:7] 1 0 1 0 G[7:2] R[7:2] 1 0 1 1 G[2:7] R[2:7] 1 1 0 0 B[7:2] R[7:2] 1 1 0 1 B[2:7] R[2:7] 1 1 1 0 R[7:2] B[7:2] 1 1 1 1 R[2:7] B[2:7] 寄 存器定义 5 B7, B6, B5, B4, B3, B2 B[7:2] B[2:7] R[7:2] R[2:7] R[7:2] R[2:7] B[7:2] B[2:7] G[7:2] G[2:7] G[7:2] G[2:7] 上电后的预设值 REG_DITHER 定 义 31 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_DITHER 定义 保留 读/写 31 1 0 复位值: 0x1B6 地址:0x10245C Bit 0:这个 bit 设为 1 启动输出 RGB 信号的抖色功能,设为 0 关闭抖色功能。从这个 bit 读出 1 表示抖色功能 有启动,从这个 bit 读出 0 表示抖色功能关闭。 注意事项: 细节请参考 REG_SWIZZLE 及 RGB 引脚的映射表格 寄 存器定义 6 REG_OUTBITS 定 义 REG_OUTBITS 定义 保留 读/写 31 9 8 地址:0x102458 Bit Bit Bit Bit 0 0 3 6 - 0 复位值: 0x1B6 8: 这 9 个 bits 会被分成三个群组,分别表示红、缘、蓝三种颜色的输出信号 2: 蓝色信号线,预设值为 6 5: 绿色信号线,预设值为 6 8: 红色信号线,预设值为 6 注意事项: 无 寄 存器定义 7 REG_ROTATE 定 义 32 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_ROTATE 定义 保留 读/写 31 1 0 复位值: 0x00 地址:0x102454 Bit 0: 180 度屏幕旋转开关。这个 bit 写入 0 值会关闭旋转功能。这个 bit 写入 1 会开启旋转功能 180 度的旋 转效果会在下一帧渲染时出现。读取这个 bit 可以呈现目前旋转功能的状态。 注意事项: 在旋转功能打开之后,请再做一次屏幕校正 寄 存器定义 8 REG_VSYNC1 定 义 REG_VSYNC1 定义 读/写 31 10 9 地址:0x10244C 0 复位值: 0x00A Bit 0 - 9:这些 bits 的值用来决定在新帧的开始时,信号 VSYNC 会取多少条线。 注意事项: 无 寄 存器定义 9 REG_VSYNC0 定 义 33 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_VSYNC0 定义 读/写 31 10 9 0 复位值: 0x000 地址:0x102448 Bit 0 - 9:这些 bits 的值决定在新帧的开始时,信号 VSYNC 的高电平状态会取多少条线。 注意事项: 无 寄 存器定义 10 REG_VSIZE 定 义 REG_VSIZE 定义 保留 读/写 31 地址:0x102444 10 9 0 复位值: 0x110 Bit 0 - 9: 这些 bits 的值决定一个时间帧里,有多少像素线条。 注意事项: 34 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 寄 存器定义 11 C learance N o.: FT D I#349 REG_VOFFSET 定 义 REG_VOFFSET 定义 保留 读/写 31 10 9 0 复位值: 0x00C 地址:0x102440 Bit 0 - 9:这些 bits 的值决定在一个新帧开始之后取多少条线。 注意事项: 寄 存器定义 12 REG_VCYCLE 定 义 REG_VCYCLE 定义 保留 31 地址:0x10243C 读/写 10 9 0 复位值: 0x124 Bit 0 - 9:这些 bits 的值决定一个帧里有多少条线。 注意事项: 35 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 13 REG_HSYNC1 定 义 REG_HSYNC1 定义 保留 读/写 31 10 9 0 复位值: 0x029 地址:0x102438 Bit 0 - 9:这些 bits 的值决定在线的开始时,有多少 PCLK 时钟周期时间供 HSYNC 使用。 注意事项: 无 寄 存器定义 14 REG_HSYNC0 定 义 REG_HSYNC0 定义 保留 31 地址:0x102434 读/写 10 9 0 复位值: 0x0 Bit 0 - 9:这些 bits 的值决定在线的开始时,有多少 PCLK 时钟周期时间,HSYNC 处于高电平状态。 注意事项: 无 36 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 15 REG_HSIZE 定 义 请参考 Error! Reference source not found. REG_HSIZE 定义 保留 读/写 31 10 9 0 复位值: 0x1E0 地址:0x102430 Bit 0 - 9:这些 bits 的值决定每一条水平线有多少 PCLK 时钟周期时间。 注意事项: 无 寄 存器定义 16 REG_HOFFSET 定 义 请参考 Error! Reference source not found. REG_HOFFSET 定义 保留 31 地址:0x10242C 读/写 10 9 0 复位值: 0x2B Bit0 -9:这些 bits 的值用来决定在像素被扫描输出之前,有多少个 PCLK 时钟周期。 注意事项: 无 37 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 17 REG_HCYCLE 请参考 Error! Reference source not found. REG_HCYCLE 定义 保留 读/写 31 10 9 0 复位值: 0x224 地址:0x102428 Bit0 -9:这些 bits 的值用来决定每一条水平线扫描,总共花多少个 PCLK 时钟周期的时间。预设值为 548,推测可支 持 480x272 的屏幕解析度显示。更多细节请参考显示屏幕的规格。 注意事项: 无 寄 存器定义 18 REG_TAP_MASK REG_TAP_MASK 定义 读/写 31 地址:0x102424 0 复位值: 0xFFFFFFFF Bit0 -9:这些 bits 的值可以掩盖 RGB 输出信号的值。这个结果会被用来计算 CRC 值,而 CRC 值会被更新至 REG_TAP_CRC。 注意事项: 无 38 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 19 REG_TAP_C RC 定 义 REG_TAP_CRC 定义 只读 31 地址:0x102420 0 复位值: 0x00000000 Bit0 - 31:这些 bits 的值是由 FT800 设定,当作 RGB 信号输出的 CRC 值。每次渲染显示清单时,会更新一次。 注意事项: 无 39 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 20 REG_DLSWAP 定 义 REG_DLSWAP 定义 保留 读/写 31 2 1 0 复位值: 0x00 地址:0x102450 Bit 0 -1:这些 bits 的值被主机设定,以使 FT800 的显示清单缓冲区生效。FT800 的图形引擎会依据这些 bits 的值, 决定什么时候渲染屏幕: 01:当目前的线被扫描输出后,图形引擎会立即渲染屏幕。这样可能会造成撕裂效果。 10:当目前的帧被扫描输出后,图形引擎会立即渲染屏幕。这是在多数情况下建议的作法。 00:这个寄存器不要存入这个数值。 11:这个寄存器不要存入这个数值。 这些 bits 也可以被主机读取,以确认 FT800 显示清单缓冲器的可用性。如果数值读出为零,FT800 显示清单缓冲器 是安全的且可写入。否则,主机需要等到值变为零才可写入。 注意事项: 无 寄 存器定义 21 REG_TAG 定 义 REG_TAG 定义 保留 只读 31 地址: 0x102478 8 7 0 复位值: 0x0 Bit 0 -7: 这些 bits 会被 FT800 的图形引擎以标记值做更新。这里的标记值是对应到 REG_TAG_X 及 REG_TAG_Y 所给的触摸点坐标值。主机可以读出这个寄存器以确认哪一个图形物件被触摸。 注意:请注意 REG_TAG 与 REG_TOUCH_TAG 的差异。REG_TAG 是依据 REG_TAG_X 及 REG_TAG_Y 所提供的 X、Y 做更新。而 REG_TOUCH_TAG 则是依据由 FT800 触摸引擎提供的目前触摸点做更新。 40 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 22 REG_TAG_Y 定 义 REG_TOUCH_Y 定义 保留 读写 31 9 地址: 0x102474 8 0 复位值: 0x0 Bit 0 – 8: 这些 bits 数的值会被主机设定,当作触摸点的 Y 坐标,这样可以启动主机,使其查询标记值。这个寄存器 会跟 REG_TAG_X 及 REG_TAG 一起被使用。正常来说,若是主机已经截取触摸点坐标的情况下,这个寄存器可以被 更新以查询对应的触摸点坐标。 注意事项:无 寄 存器定义 23 REG_TAG_X 定 义 REG_TOUCH_X 定义 保留 读写 31 地址: 0x102470 9 8 0 复位值: 0x0 Bit 0 – 8: 这些 bits 数的值会被主机设定,当作触摸点的 X 坐标,这样可以启动主机,使其查询标记值。这个寄存器 会跟 REG_TAG_Y 及 REG_TAG 一起被使用。正常来说,若是主机已经截取触摸点坐标的情况下,这个寄存器可以被 更新以查询对应的触摸点坐标。 注意事项:无 41 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 3.2 触屏引擎寄存器 (只用于 FT800) 寄 存器定义 24 REG_TOUCH_DIREC T_Z1Z2 定 义 REG_TOUCH_DIRECT_Z1Z2 定义 保留 31 只读 26 25 保留 16 地址: 0x102578 15 只读 10 9 0 复位值: NA Bit 0-9: 10 bit 模数转换器的值,作为触屏电阻值 Z2。 Bit 16-25: 10 bit 模数转换器的值,作为触屏电阻值 Z1。 注意事项:要知道有否触摸,请检查 REG_TOUCH_DIRECT_XY 第 31 个 bit 的值。FT800 触摸引擎会针对 Z1 及 Z2 的值做后处理,并更新至 REG_TOUCH_RZ。 寄 存器定义 25 REG_TOUCH_DIREC T_XY REG_TOUCH_DIRECT_XY 定义 只读 保留 31 只读 26 25 地址: 0x102574 保留 16 15 只读 10 9 0 复位值: 0x0 Bit 0-9: 10 bit 模数转换器的值,作为 Y 坐标的值。 Bit 16-25: 10 bit 模数转换器的值,作为 X 坐标的值。 Bit 31: 如果这个 bit 为 0,表示有检测到一个触摸,而上述两者就是检测到的 Y 坐标及 X 坐标。如果这个 bit 为 1, 表示没有检测到触摸,而上述两者可被忽略。 注意事项: 42 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 26 REG_TOUCH_TRANSFORM_F 定 义 REG_TOUCH_TRANSFORM_F 定义 读写 31 30 16 地址: 0x102530 15 0 复位值: 0x0 Bit 0 – 15: 这些 bits 数的值表示定点数字的小数部份。 Bit 16 – 30: 这些 bits 数的值表示定点数字的整数部份。 Bit 31:定点数字的符号位 注意事项:这个寄存器代表定点数字,复位后的预设值为+0.0。 寄 存器定义 27 REG_TOUCH_TRANSFORM_E 定 义 REG_TOUCH_TRANSFORM_E 定义 读写 31 30 16 地址: 0x10252C 15 0 复位值: 0x0 Bit 0 – 15: 这些 bits 数的值表示定点数字的小数部份。 Bit 16 – 30: 这些 bits 数的值表示定点数字的整数部份。 Bit 31 :定点数字的符号位 注意事项:这个寄存器代表定点数字,复位后的预设值为+1.0。 43 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 28 REG_TOUCH_TRANSFORM_D 定 义 REG_TOUCH_TRANSFORM_D 定义 读写 31 30 16 地址: 0x102528 15 0 复位值: 0x0 Bit 0 – 15: 这些 bits 数的值表示定点数字的小数部份。 Bit 16 – 30: 这些 bits 数的值表示定点数字的整数部份。 Bit 31 :定点数字的符号位 注意事项:这个寄存器代表定点数字,复位后的预设值为+0.0。 寄 存器定义 29 REG_TOUCH_TRANSFORM_C 定 义 REG_TOUCH_TRANSFORM_C 定义 读写 31 30 16 地址: 0x102524 15 0 复位值: 0x0 Bit 0 – 15: 这些 bits 数的值表示定点数字的小数部份。 Bit 16 – 30: 这些 bits 数的值表示定点数字的整数部份。 Bit 31 :定点数字的符号位 注意事项:这个寄存器代表定点数字,复位后的预设值为+0.0。 44 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 30 REG_TOUCH_TRANSFORM_B 定 义 REG_TOUCH_TRANSFORM_B 定义 读写 31 30 16 地址: 0x102520 15 0 复位值: 0x0 Bit 0 – 15: 这些 bits 数的值表示定点数字的小数部份。 Bit 16 – 30: 这些 bits 数的值表示定点数字的整数部份。 Bit 31 :定点数字的符号位 注意事项:这个寄存器代表定点数字,复位后的预设值为+0.0。 寄 存器定义 31 REG_TOUCH_TRANSFORM_A 定 义 REG_TOUCH_TRANSFORM_A 定义 读写 31 30 16 地址: 0x10251C 15 0 复位值: 0x0 Bit 0 – 15: 这些 bits 数的值表示定点数字的小数部份。 Bit 16 – 30: 这些 bits 数的值表示定点数字的整数部份。 Bit 31 :定点数字的符号位 注意事项:这个寄存器代表定点数字,复位后的预设值为+1.0。 45 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 32 REG_TOUCH_TAG 定 义 REG_TOUCH_TAG 定义 保留 只读 31 地址: 0x102518 8 7 0 复位值: 0 Bit 0 – 7: 这些 bits 是设定来当作特定图形物件的标记值,这些物件是当下在屏幕上正被触摸的物件。当目前帧上所 有的线都被扫描输出到屏幕上时,这些 bits 会被更新一次。 Bit 8 – 31: 这些 bits 被保留 注意事项:有效的标记范围是从 1 到 255,因此这个寄存器的预设值是 0,表示预设情况是没有被触摸。 寄 存器定义 33 REG_TOUCH_TAG_XY 定 义 REG_TOUCH_TAG_XY 定义 只读 31 地址: 0x102514 只读 16 15 0 复位值: 0 Bit 0 – 15: 这些 bits 数的值是指触屏的 Y 坐标,触屏引擎会用它来查找标记结果。 Bit 16 – 31: 这些 bits 数的值是指触屏的 X 坐标,触屏引擎会用它来查找标记结果。 注意事项:主机可以读取这个寄存器,检查触屏引擎用来更新标记寄存器 REG_TOUCH_TAG 的坐标。 46 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 34 REG_TOUCH_SC REEN_XY 定 义 REG_TOUCH_SCREEN_XY 定义 只读 只读 31 16 地址: 0x102510 15 0 复位值: 0x80008000 Bit 0 - 15: 这些 bits 的值是触屏引擎的 Y 坐标。在做完校准后,会落在屏幕尺寸的高度范围以内。假如触屏没有被触 摸,其值是 0x8000。 Bit 16 - 31: 这些 bits 的值是触屏引擎的 X 坐标。在做完校准后,会落在屏幕尺寸的高度范围以内。假如触屏没有被 触摸,其值是 0x8000。 注意事项:这个寄存器是 FT800 的触摸引擎最后的计算输出结果。它已经被映射到屏幕的尺寸大小。 寄 存器定义 35 REG_TOUCH_RZ 定 义 REG_TOUCH_RZ 定义 保留 31 地址: 0x10250C 只读 16 15 0 复位值: 0x7FFF Bit 0 - 15: 这些 bits 是触摸触屏的阻值。有效值范围是从 0 到 0x7FFF。最高值 0x7FFF 代表没有触摸,而最低值 0 代表最大的压力。 Bit 16 - 31: 保留 47 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 36 REG_TOUCH_RAW_XY 定 义 REG_TOUCH_RAW_XY 定义 保留 只读 31 16 15 地址: 0x102508 复位值: 0xFFFFFFFF 0 it 0 - 15: 这些 bits 的值表示要进行转换矩阵的原始 Y 坐标,有效范围是从 0 到 1023。若屏幕上没有触摸,这个值 为 0xFFFF。 Bit 16 - 31: 这些 bits 的值表示要进行转换矩阵的原始 X 坐标,有效范围是从 0 到 1023。若屏幕上没有触摸,这个 值为 0xFFFF。 注意事项:在这个寄存器里的坐标还没被映射到屏幕的坐标。若要取得屏幕坐标,请参考 REG_TOUCH_SCREEN_XY 。 寄 存器定义 37 REG_TOUCH_RZTHRESH 定 义 REG_TOUCH_RZTHRESH 定义 保留 读/写 31 16 15 地址: 0x102504 复位值: 0xFFFF 0 Bit 0 - 15: 这些 bits 的值控制触屏阻值的阈值。主机可以藉著设定这个寄存器调整触屏的触摸灵敏度。复位后的预设 值是 0xFFFF,这是 FT800 触摸引擎可接受的最轻触摸的程度。主机可以透过一些实验方式设定这个寄存器。典型值 是 1200。 48 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 38 REG_TOUCH_OVERSAMPLE 定 义 REG_TOUCH_OVERSAMPLE 定义 保留 读/写 31 4 地址: 0x102500 3 0 复位值: 0x7 Bit 0 - 3: 这些 bits 控制触屏的过采样因子。这个寄存器里的值愈高,表示会以较高的功耗得到较高的精确度,但这 可能不是必要的。有效范围是从 1 到 15 寄 存器定义 39 REG_TOUCH_SETTLE 定 义 REG_TOUCH_SETTLE 定义 保留 读/写 31 地址: 0x1024FC 4 3 0 复位值: 0x3 Bit 0 - 3: 这些 bits 控制触屏的建立时间。单位是 6 个时钟周期。预设值是 3,表示建立时间是 18(3x6)个系统时钟 周期。 注意事项: 49 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 40 REG_TOUCH_CHARGE 定 义 REG_TOUCH_CHARGE 定义 保留 读/写 31 16 15 地址: 0x1024F8 复位值: 0x1770 0 Bit 0 -15:这些 bits 控制触屏的充电时间,单位是 6 个系统时钟周期。复位后的预设值是 6000,也就是指充电时间 会是 6000x6 个系统时间周期。 注意事项: 寄 存器定义 41 REG_TOUCH_ADC _MODE 定 义 REG_TOUCH_ADC_MODE 定义 保留 读写 31 地址: 0x1024F4 2 1 0 复位值: 0x1 Bit 0 -1:主机可以设定这个 bit 去控制 FT800 模数转换器的采样模式,依如下设定: 0:单端模式:这个模式有较低的功能,但是精准度较差。 1:差动模式:这个模式有较高的功能,但是精准度较高。这是复位后的预设模式。 50 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 42 REG_TOUCH_MODE 定 义 REG_TOUCH_MODE 定义 保留 读写 31 2 地址: 0x1024F0 1 0 复位值: 0x3 Bit 0 -1:主机可以设定这个 bit 去控制 FT800 触屏引擎的触屏采样模式,依如下设定: 00:关闭模式:没有采样发生。 01:单次模式:可引起一次的采样。 10:帧模式:可在每个帧的开始引起一次采样。 11:连续模式:每秒达 1000 次的采样,这是复位后的预设值。 3.3 音频引擎寄存器 寄 存器定义 43 REG_PLAY 定 义 REG_PLAY 定义 保留 读写 31 地址: 0x1024888 2 1 0 复位值: 0x0 Bit 0: 写入这个 bit 会触发合成音效的播放,该合成音效是由 REG_SOUND 指定。 若从这个 bit 读出 1 值,表示此音效正在播放。若要停止该音效,主机需藉由设定 REG_SOUND,来选择静音音 效,并设定此寄存器播放。 注意事项:这个寄存器的细节请参考数据表中”声音合成器”的部份 寄 存器定义 44 REG_SOUND 定 义 51 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_SOUND 定义 保留 读写 31 16 地址: 0x102484 15 0 复位值: 0x0000 Bit 0 - 15: 这些 bits 用来选择合成的音效,又分作两组,分别是 Bit 0 - 7 及 Bit 8 - 15。 Bit 0 - 7:这些 bits 定义音效。有些音效可以调整音高,而音高是定义在 Bit 8 -15。而有些音效不能调整音高,若 不能调整音高,Bit 8 - 15 的值会被忽略。 Bit 8 - 15:音效的 MIDI 音符,指的是定义在 Bit 0 - 7 里的音效。 注意事项:这个寄存器的细节请参考数据表中”声音合成器”的部份。 寄 存器定义 45 REG_VOL_SOUND 定 义 REG_VOL_SOUND 定义 保留 读写 31 地址: 0x102480 8 7 0 复位值: 0xFF Bit 0 - 7:这些 bits 控制合成的声音音量。预设值是 0xFF,指最高音量。若值为 0,表示静音。 注意事项: 寄 存器定义 46 REG_VOL_PB 定 义 52 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_VOL_PB 定义 保留 读写 31 地址: 0x10247C 8 7 0 复位值: 0xFF Bit 0 - 7:这些 bits 控制播放音频档案的音量。预设值是 0xFF,表示最高音量。若值为 0,表示静音。 注意事项: 寄 存器定义 47 REG_PLAYBACK_PLAY 定 义 REG_PLAYBACK_PLAY 定义 保留 读写 31 地址: 0x1024BC 1 0 复位值: 0x0 Bit 0:写入这个 bit 会触发音频的播放,无论写入’0’或是’1’。当播放正在进行,可读出’1’。当播放结束,可读 出’0’。 注意事项: 这个寄存器的细节请参考数据表中”音频播放”的部份 53 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 48 REG_PLAYBAC K_LOOP 定 义 REG_PLAYBACK_LOOP 定义 保留 读写 31 地址: 0x1024B8 1 0 复位值: 0x0 Bit 0:一旦播放完所有数据,这个 bit 可控制音频引擎,使其再从起始地址播放 RAM_G 里的音频数据。值为 1 表 示 LOOP 功能是开启的,若值为 0 表示 LOOP 功能关闭。 注意事项: 这个寄存器的细节请参考数据表中”音频播放”的部份 寄 存器定义 49 REG_PLAYBAC K_FORMAT 定 义 REG_PLAYBACK_FORMAT 定义 保留 读/写 31 地址: 0x1024B4 2 1 复位值: 0x0 Bit 0 - 1:这些 bits 定义在 RAM_G 里音频数据的格式。FT800 支持: 00:Linear 线性采样格式 01:uLaw 采样格式 10:4 bit IMA ADPCM 采样格式 11:未定义 注意事项: 这个寄存器的细节请参考数据表中”音频播放”的部份 54 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited 0 FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄存器定义 50 REG_PLAYBACK_F REQ 定义 REG_PLAYBACK_FREQ 定义 保留 31 只读 16 15 地址: 0x1024B0 0 复位值: 0x1F40 Bit 0 - 15: 这些 bits 指定音频播放数据的采样频率。单位是赫兹。 注意事项:更多细节请参考数据表中”音频播放”的部份。 寄 存器定义 51 REG_PLAYBAC K_READPTR 定 义 REG_PLAYBACK_READPTR 定义 保留 31 地址: 0x1024AC 只读 20 19 0 复位值: 0x00000 Bit 0 -19:当正从 RAM_G 播放音频数据时,这些 bits 会被 FT800 音频引擎更新。这是正在播发时,当下的音频数 据地址。主机可以读取这个寄存器检查是否音频引擎已经消耗完所有的音频数据。 注意事项:更多细节请参考数据表中”音频播放”的部份。 55 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 52 REG_PLAYBACK_LENGTH 定 义 REG_PLAYBACK_LENGTH 定义 保留 31 读/写 20 19 地址: 0x1024A8 0 复位值: 0x00000 Bit 0 -19:这些 bits 指定在 RAM_G 里的音频数据要播放的长度,开始是从 REG_PLAYBACK_START 寄存器所指 定的地址开始。 注意事项:更多细节请参考数据表中”音频播放”的部份。 寄 存器定义 53 REG_PLAYBACK_START 定 义 REG_PLAYBACK_START 定义 保留 31 地址: 0x1024A4 读/写 20 19 0 复位值: 0x00000 Bit 0 -19:i 这些 bits 指定在 RAM_G 里,所要播放的音频数据的开始地址。 注意事项:更多细节请参考数据表中”音频播放”的部份。 56 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 3.4 协处理器引擎寄存器 寄 存器定义 54 REG_CMD_DL 定 义 REG_CMD_DL 定义 保留 读/写 31 14 地址: 0x1024EC 13 0 复位值: 0x0000 Bit 0 – 13:这些 bits 的值指的是一个显示清单指令的 RAM_DL 偏移量(offset),显示清单指令是产生于协处理器引 擎。协处理器引擎会依照这些 bits 判定显示清单缓冲器里的地址,显示清单缓冲器是属于产生的显示清单指令的。只 要有显示清单指令被产生在显示清单缓冲器,协处理器引擎会更新这个寄存器。藉由适当地设定这个寄存器,主机可以 指定显示清单缓冲器里的开始地址,以供协处理器引擎产生显示指令。有效范围是 0 到 8195。 注意事项: 寄 存器定义 55 REG_CMD_WRITE 定 义 REG_CMD_WRITE 定义 保留 31 地址: 0x1024E8 读/写 12 11 0 复位值: 0x0 Bit 0 – 11:这些 bits 被 MCU 主机更新,以通知协处理器引擎将有效数据的结束地址喂入其 FIFO。通常来说,主机会 在下载完协处理器指令到其 FIFO 之后,更新这个寄存器。有效范围是 0 到 4095,也就是在 FIFO 的大小范围内。 注意事项: 指令缓冲器的 FIFO 大小是 4096 个字节,而每个协处理器的指令大小是 4 个字节。所有写入这个寄存器 的值需要对齐 4 个字节的整数倍。 57 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄存器定义 56 REG_CMD_READ 定义 REG_CMD_READ 定义 保留 读/写 31 12 地址: 0x1024E4 11 0 复位值: 0x000 Bit 0 – 11:只要协处理器引擎从其 FIFO 取得指令,这些 bits 就被协处理器引擎更新。主机可读取此寄存器,以判定 协处理器引擎的 FIFO 是否满载。有效范围从 0 到 4095。在有错的情况下,协处理器会写入 0xFFF 到这个寄存器。 注意事项:除非在错误回复的情况,主机不应写入这个寄存器。在协处理器引擎复位后,其预设值为 0。 寄 存器定义 57 REG_TRAC KER 定 义 REG_TRACK 定义 只读 追踪值 31 读/写 16 标记值 15 地址: 0x109000 0 复位值: 0x0 Bit 0 – 15: 这些bits用来表示正被触摸的图形物件的标记值。 Bit 16 – 31: 这些bits是设定来标示被追踪图形物件的追踪值。协处理器可在预定义的范围里,计算目前的触摸点有多 少。更多细节请参考CMD_TRACK。 注意事项: 无 58 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 3.5 其它寄存器 在这个章节里,其它寄存器包含背光控制、中断、 GPIO、及其他功能的寄存器。 寄 存器定义 58 REG_PWM_DUTY 定 义 REG_PWM_DUTY 定义 保留 读/写 31 8 地址: 0x1024C4 7 0 复位值: 0x80 Bit 0 - 7 : 这些bits定义背光脉宽调变(PWM)输出的占空比。有效范围是从0到128。0代表背光完全关闭,128代表背光 是在最大的亮度。 注意事项: 寄 存器定义 59 REG_PWM_HZ 定 义 REG_PWM_HZ 定义 保留 读/写 31 地址: 0x1024C0 14 13 0 复位值: 0xFA Bit 0 - 13 : 这些bits定义背光脉宽调变输出的频率,单位为赫兹。复位后预设值为250赫兹。有效频率范围是从250赫兹 到10000赫兹 注意事项: 59 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 60 REG_INT_MASK 定 义 REG_INT_MASK 定义 保留 读/写 31 8 地址: 0x1024A0 7 0 复位值: 0xFF Bit 0 - 7 : 这些bits是用来遮盖对应的中断言号。1表示启动对应的中断源,0表示关闭对应的中断源。在复位后,预设 上所有中断源都可合格地用来触发中断。 注意事项:更多细节请参考数据表的”中断”部份 寄 存器定义 61 REG_INT_EN 定 义 REG_INT_EN 定义 保留 读/写 31 地址: 0x10249C 1 0 复位值: 0x0 Bit 0 :主机可以设定这个bit为1,以启动FT800全域中断。若要关闭FT800全域中断,主机可将此bit设为0 注意事项:此寄存器的细节请参考数据表的”中断”部份 60 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 62 REG_INT_FLAGS 定 义 REG_INT_FLAGS 定义 保留 读/写 31 8 地址: 0x102498 7 0 复位值: 0x00 Bit 0 - 7: 这些bits是FT800设定的中断标记。主机可以读取这些bits,以判定哪一个中断发生。这些bits在读取后会自动 清除。主机不应写入此寄存器。在复位后,预设上没有中断发生,因此预设值为0x00。 注意事项:更多细节请参考数据表的”中断”部份 寄 存器定义 63 REG_GPIO 定 义 REG_GPIO 定义 保留 读/写 31 地址: 0x102490 8 7 0 复位值: 0x00 Bit 0 -7: 这些bits是多用途的。Bit 0, 1, 7用来控制GPIO引脚的值。 Bit 2 -6: 这些bits是用来配置引脚的驱动能力大小。 注意事项:更多细节请参考数据表的”通用IO引脚”部份 61 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 64 REG_GPIO_DIR 定 义 REG_GPIO_DIR 定义 保留 读/写 31 8 地址: 0x10248C 7 0 复位值: 0x80 Bit 0 – 7: 这些 bits 配置 FT800 的 GPIO 引脚方向。Bit 0 控制 GPIO0 的方向,Bit 7 控制 GPIO7 的方向。bit 值 为 1 表示 GPIO 引脚设定成输出,否则则为输入。复位后,预设上只有 GPIO7 是设为输出。 寄 存器定义 65 REG_CPURESET 定 义 REG_CPURESET 定义 保留 读/写 31 地址: 0x10241C 1 0 复位值: 0x00 Bit 0: 若将这个 bit 写入 1 将会使 FT800 的协处理器引擎成复位状态。若写入 0,会从复位状态继续到正常操作模式。 若从这个 bit 读出 1,表示 FT800 的协处理器引擎在复位状态,否则,FT800 的协处理器引擎则在正常状态。 Bit 1 – 31: 保留 62 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 66 REG_SCREENSHOT_READ 定义 REG_SCREENSHOT_READ 定义 保留 读/写 31 地址: 0x102554 1 0 复位值: 0x0 Bit 0: 将这个 bit 设为 1,以启动选定 Y 线截屏的读出 Bit 1 – 31: 保留 注意事项:当 REG_SCREENSHOT_BUSY 寄存器清除之后,在读出选定 Y 线截屏之前,这个 bit 需要先设定好。截 屏会存在 RAM_SCREENSHOT,而每个像素的格式是 32 bit BGRA 格式:蓝通道是最低地址,Alpha 透明是最高地址。 寄 存器定义 67 REG_SCREENSHOT_BUSY 定义 REG_SCREENSHOT_BUSY 定义 只读 63 地址: 0x1024D8 0 复位值: 0x0 Bit 0 - 63: 屏幕截图忙录中的标记。这 64 bits,若为任何的非零值代表屏幕截图的忙录状态。这 64 bits 若为零值,表 示屏幕截图已经完成。 注意事项:注意事项:屏幕截图开始之后,主机应读取此寄存器,以判定屏幕截图何时会结束 63 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 68 REG_SCREENSHOT_START 定义 REG_SCREENSHOT_START 定义 保留 读/写 31 1 地址: 0x102418 0 复位值: 0x0 Bit 0: 若屏幕截图功能已启动(enabled),设此 bit 为 1 开始(start)屏幕截图。当屏幕截图功能关闭(disabled)时,屏幕截 图会自动停止(stop)。 Bit 1 – 31: 保留 注意事项:无 寄 存器定义 69 REG_SCREENSHOT_Y 定 义 REG_SCREENSHOT_Y 定义 保留 读/写 31 地址: 0x102414 9 8 0 复位值: 0x000 Bit 0 - 8: 这9 bits指定当屏幕截图功能启动(enabled)时,在水平方向要截取多少线 Bit 9 - 31: 保留 注意事项:无 64 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 70 REG_SCREENSHOT_EN 定 义 REG_SCREENSHOT_EN 义 保留 读/写 31 地址: 0x102410 1 0 复位值: 0x000 Bit 0 : 将此bit设为1可启动(enable)目前帧的屏幕截屏功能。清除这个bit则关闭屏幕截屏功能。 Bit 1 - 31: 保留 注意事项:无 寄 存器定义 71 REG_FREQUENCY 定 义 REG_FREQUENCY 定义 读/写 读/写 31 地址: 0x10240C 0 复位值: 0x2DC6C00 Bit 0 - 31: 在复位后,这些bits会设定为0x2DC6C00,也就是指,预设的主时钟频率是48 MHz。值的单位是赫兹。如 果主机利用主机命令CLK36M选择其他替代的频率,这个寄存器也需要一起被更新 65 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 72 REG_CLOCK 定 义 REG_CLOCK 定义 只读 读/写 31 地址: 0x102408 0 复位值: 0x00000000 Bit 0 - 31: 在复位后这些bits会被设为零。此寄存器会计算复位之后,FT800主时钟周期的数量。若FT800的主时钟频率 为48 MHz,此寄存器约在89秒后,数完一个循环。 66 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 73 REG_FRAMES 定 义 REG_FRAMES 定义 只读 读/写 31 地址: 0x102404 0 复位值: 0x00000000 Bit 0 - 31: 这些bits在复位后会设定为0。此寄存器会计算屏幕帧的数量。假如刷新速率是60赫兹,复位后数到约828 天,会数完一个循环。 寄 存器定义 74 REG_ID 定 义 REG_ID 定义 保留 读/写 31 地址: 0x102400 8 7 0 复位值: 0x7C Bit 0 - 7: 这些bits是内置的寄存器ID。主机可以读取这个寄存器以判定此芯片是否为FT800。其值应该要一直是0x7C。 67 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 75 REG_TRIM 定 义 REG_TRIM 定义 保留 读/写 31 地址: 0x10256C 5 4 0 复位值: 0x0 Bit 0 - 4 : 这些bits是设定来修剪内部时钟 Bit 5 - 31: 保留 注意事项:更多细节请参考操作说明书 AN_299_FT800_FT801_Internal_Clock_Trimming 68 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4 显示清单指令 FT800 的图形引擎从显示清单的存储器 RAM_DL 里,以指令的形式取得操作指示。每个指令长度是 4 字节,因 为 RAM_DL 的尺寸是 8K 字节,所以一个显示清单可以被填满到 2048 个指令。FT800 的图形引擎会依据指令 的定义,执行对应的操作。 4.1 图形状态 控制绘图的图形状态存在图形上下文 (graphics context)里。个别状态可以由适当的显示清单指令改变 (如: COLOR_RGB),而整体的状态可利用 SAVE_CONTEXT 及 RESTORE_CONTEXT 指令做储存及回复。 要注意位图的绘图状态是特别的:虽然位图句柄是图形上下文的一部份,但每一个位图句柄的参数并不是图形上 下文的 一部 份。 它们 无法 由 SAVE_CONTEXT 储存 也无 法由 RESTORE_CONTEXT 回 复。 这些 参数 是经由 BITMAP_SOURCE、BITMAP_LAYOUT、及 BITMAP_SIZE 这些指令改变的。一旦这些参数被设立,它们就可被显 示清单所使用,直到参数值被改变。 SAVE_CONTEXT 及 RESTORE_CONTEXT 由一个 4 层的堆栈所组成,以及目前的图形上下文。下表列出图形 上下文里详细的参数。 表 3 图形上下文 参数 预设值 指令 Func & ref ALWAYS, 0 ALPHA_FUNC func & ref ALWAYS, 0 STENCIL_FUNC Src & dst SRC_ALPHA, ONE_MINUS_SRC_ALPHA BLEND_FUNC 单元格(cell)值 0 CELL Alpha 值 0 COLOR_A 红、蓝、绿颜色 (255,255,255) COLOR_RGB 线的宽度,以 1/16 像素为单 16 LINE_WIDTH 点的大小,以 1/16 像素为单位 16 POINT_SIZE 剪刀的宽度及高度 512,512 SCISSOR_SIZE 剪刀的字符串坐标 (x,y) = (0,0) SCISSOR_XY 目前位图的句柄 0 BITMAP_HANDLE 位图转变系数 +1.0,0,0,0,+1.0,0 BITMAP_TRANSFORM_A-F 模板清除值 0 CLEAR_STENCIL 标记清除值 0 CLEAR_TAG 模板的遮盖值 255 STENCIL_MASK spass & sfail KEEP,KEEP STENCIL_OP 69 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 参数 预设值 指令 标记缓冲器值 255 TAG 标记遮盖值 1 TAG_MASK Alpha 透明清除值 0 CLEAR_COLOR_A RGB 清除颜色 (0,0,0) CLEAR_COLOR_RGB 这个部份的每一个显示清单指令有列出每一个它会设定的图形上下文 4.2 指令编码 每个显示清单指令有一个 32-bit 编码。编码的最高几位判定指令。指令参数(如果有的话)在最低几位。任何遮盖 保留的 bits 必须为零。 FT800 支持的图形基元及其对应的值在下表。 表 4 FT800 图形基元清单 原始图形 原始值 BITMAPS 1 POINTS 2 LINES 3 LINE_STRIP 4 EDGE_STRIP_R 5 EDGE_STRIP_L 6 EDGE_STRIP_A 7 EDGE_STRIP_B 8 RECTS 9 各种 FT800 支持的位图格式及相对应的值会在下面提到。 70 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 表 5 图形位图格式表 位图格式 位图格式值 ARGB1555 0 L1 1 L4 2 L8 3 RGB332 4 ARGB2 5 ARGB4 6 RGB565 7 PALETTED 8 TEXT8X8 9 TEXTVGA 10 BARGRAPH 11 4.3 指令组 4.3.1 设定图形状态 ALPHA_FUNC 设定 alpha 测试功能 BITMAP_HANDLE 设定位图句柄 BITMAP_LAYOUT 为目前的句柄设定源头位图存储器格式及布局 BITMAP_SIZE 为目前句柄设定位图的屏幕绘制尺寸 BITMAP_SOURCE 为位图图形设定源头地址 BITMAP_TRANSFORM_A-F 设定位图转换矩阵的元素 BLEND_FUNC 设定像素算法 CELL 为 VERTEX2F 指令设定位图单元格数字 (编者按:一个 handle 可以有多个 cell) CLEAR 清除缓冲器成预定(preset)值。 CLEAR_COLOR_A 为 alpha 通道设定清除值(clear value) CLEAR_COLOR_RGB 为红绿蓝通道设定清除值(clear value) CLEAR_STENCIL 为模板缓冲器设定清除值(clear value) CLEAR_TAG 为标记缓冲器设定清除值(clear value) COLOR_A 设定目前颜色的 alpha 通道值 71 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 COLOR_MASK C learance N o.: FT D I#349 启动或关闭写入颜色元件 COLOR_RGB 设定目前颜色红绿蓝 LINE_WIDTH 设定线的宽度 POINT_SIZE 设定点的大小 RESTORE_CONTEXT 从上下文的栈恢复目前的图形上下文 SAVE_CONTEXT 将目前的图形上下文推入上下文堆栈 SCISSOR_SIZE 设定剪刀修剪矩形的大小 SCISSOR_XY 设定剪刀修剪矩形的左上角 STENCIL_FUNC 为模板测试设定功能及参考值 STENCIL_MASK 控制位于模板平面上各别 bits 的写入 STENCIL_OP 设定模板测试动作 TAG 设定目前标记值 TAG_MASK 控制标记缓冲器的写入 4.3.2 绘图动作 BEGIN 开始绘制一个图形基元 END 结束绘制一个图形基元 VERTEX2F 以小数坐标提供一个顶点 VERTEX2II 以正整数坐标提供一个顶点 4.3.3 赽行控制 JUMP 在显示清单另一个位置执行多个指令序列 MACRO 从一个宏寄存器(macro register)执行一个单一指令 CALL 在显示清单另一个位置执行一个指令的序列 RETURN 从先前的 CALL 指令返回 DISPLAY 结束显示清单 72 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.4 ALPHA_FUNC 指定 alpha 测试功能 编码 31 24 0x09 23 11 保留 10 8 func 7 6 5 4 3 2 1 0 ref 参数 func 指定测试功能,指定以下其中一项:NEVER、LESS、LEQUAL、GREATER、GEQUAL、EQUAL 、NOTEQUAL、或 ALWAYS。 初始值是 ALWAYS(7) NAME NEVER LESS LEQUAL GREATER GEQUAL EQUAL NOTEQUAL ALWAYS VALUE 0 1 2 3 4 5 6 7 图 8: ALPHA_FUNC 的常数 ref 指定 alpha 测试的参考值。初始值为 0。 图形上下文 func 及 ref 的值是图形上下文的一部份,如 Error! Reference source not found.节所说。 请参阅 无 73 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.5 BEGIN 开始绘制一个图形基元 编码 31 24 23 4 保留 0x1F 3 2 1 0 prim 参数 prim 图形基元。有效值定义如下: 表 6 FT800 图形基元操作定义 名称 值 描述 BITMAPS 1 位图绘图基元 POINTS 2 点绘图基元 LINES 3 线绘图基元 LINE_STRIP 4 线条带绘图基元 EDGE_STRIP_R 5 沿边衬条右绘图基元 EDGE_STRIP_L 6 沿边衬条左边绘图基元 EDGE_STRIP_A 7 沿边衬条上绘图基元 EDGE_STRIP_B 8 沿边衬条下绘图基元 RECTS 9 矩形绘图基元 描述 全部 FT800 支持的基元都定义在上表。透过 BEGIN 指令,选择要绘制的基元。一旦基元被选定,它会一 直线持有效,直到一个新的基元再被 BEGIN 指令选择。 请注意,基元绘制的操作还不会被执行,要一直到执行 VERTEX2II 或 VERTEX2F 指令才会绘制。 范例 74 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 绘制点、线、及位图: dl( BEGIN(POINTS) ); dl( VERTEX2II(50, 5, 0, 0) ); dl( VERTEX2II(110, 15, 0, 0) ); dl( BEGIN(LINES) ); dl( VERTEX2II(50, 45, 0, 0) ); dl( VERTEX2II(110, 55, 0, 0) ); dl( BEGIN(BITMAPS) ); dl( VERTEX2II(50, 65, 31, 0x45) ); dl( VERTEX2II(110, 75, 31, 0x46) ); 图形上下文 无 请参阅 END 4.6 BITMAP_HANDLE 指定位图的句柄(handle) 编码 31 24 0x05 23 5 保留 4 3 2 1 0 句柄 参数 handle 位图句柄初始值是 0。 有效范围是从 0 到 31。 描述 句柄 16 到 31 是由 FT800 定义,供内置字体所使用,而句柄 15 是定义在协处理器引擎的指令 CMD_GRADIENT、CMD_BUTTON、及 CMD_KEYS。使用者可以从句柄 0 到 14 定义新的位图。若目前的显 示清单没有协处理器引擎指令 CMD_GRADIENT、CMD_BUTTON、及 CMD_KEYS,使用者甚至可以利用句 柄 15 定义一个位图。 图形上下文 句柄的值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 BITMAP_LAYOUT, BITMAP_SIZE 75 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.7 BITMAP_LAYOUT 为了目前的句柄,指定源头位图存储器格式及布局。 编码 31 24 23 22 0x07 21 format 20 19 18 9 linestride 8 0 Height 参数 format 位图像素格式。有效范围是从 0 到 11,按照下表定义。 表 7 BITMAP_LAYOUT 格式清單 NAME ARGB1555 L1 L4 L8 RGB332 ARGB2 ARGB4 RGB565 PALETTED TEXT8X8 TEXTVGA BARGRAPH VALUE 0 1 2 3 4 5 6 7 8 9 10 11 各种支持的位图格式为: 76 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 BARGRAPH - 渲染数据成一个长条图。在一个字节阵列里查询 x 坐标后,如果字节的值小于 y,会给出一个非 透明像素。否则,则给出一个透明的像素。这个结果是一个位图数据的长条图。使用 BARGRAPH 格式绘制,最 大可画 256x256 大小的位图。图形的方向、宽度、及高度可以利用位图变换矩阵更改。 TEXT8X8 – 在一个固定的 8x8 字体里查找。位图是一个存在于图形 RAM 字节阵列,而每个字节索引到内部的 8x8 CP437 [2]字体(内置字体度句柄 16 & 17 是用来绘制 TEXT8X8 格式)。结果是位图就像字符网格一样。 可以绘制单一个位图,此单一位图可以涵盖全部或是部份的显示;在位图数据里的每一个字节对应到一个 8x8 像 素的字符单元格。 TEXTVGA – 以 TEXTVGA 语法在一个固定的 8x16 字体里查找。位图是一个存在图形随机存取存储器里,每一 个元素索引到一个内部的 8x16 CP437 [2]字体里(内置字型位图句柄 18 & 19 是用来绘制 TEXTVGA 格式,包 含控制信息,如背景颜色,前景颜色,及游标等等)。结果是位图就像一个 TEXTVGA 网格一样。可以绘制一个 单一位图,而此单一位图可涵盖全部或是部份的显示;在位图里的每一个 TEXTVGA 数据类型对应到一个 8x16 像素的字符单元格。PALETTED - 位图字节是索引到一个调色板的表格。这个调色板表格含有 32-bit 的 RGBA 色产,故利用一个调色板表格可以省去很多存储器。这个 256 色的调色板存在一个专有的 1K(256x4)字节的寄 存器 RAM_PAL 里。 linestride 位图的线跨,以字节(byte)为单位。请注意以下所叙述的对齐要求。 height 位图高度,以线为单位。 描述 支持的位图式为 L1、L4、 L8、 RGB332、 ARGB2、 ARGB4、ARGB1555、 RGB565 及 Palette。 对于 L1 来说,线跨必须是 8 字节的整数倍;对而 L4 格式来说,线跨必须是 2 个半字节的整数倍(也就是 对齐成一字节的整数数)。 更多有关对齐的细节,可参考下图: 77 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 L1 format layout C learance N o.: FT D I#349 Byte Order Pixel 0 Bit 7 Pixel 1 Bit 6 Byte 0 …… Pixel 7 Bit 0 L4 format layout Byte Order Pixel 0 Bit 7-4 Pixel 1 Bit 3-0 Byte 0 L8 format layout Byte Order Byte 0 Byte 1 Byte 2 Pixel 0 Bit 7-0 pixel 1 Bit 15-8 pixel 2 Bit 23-16 图 9: L1/L4/L8 的像素格式 ARGB2 format layout A R G B Byte Order Bit 7-6 Bit 5-4 Bit 3-2 Bit 1-0 Byte 0 ARGB1555 format layout A R G B Bit 15 Bit 14-10 Bit 9- 5 Bit 4-0 Byte Order Byte 1 Byte 0 图 10: ARGB2/1555 的像素格式 78 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 ARGB4 format layout A R G B Byte Order Bit 15-12 Bit 11-8 Bit 7-4 Bit 3-0 Byte 1 Byte 0 RGB332 pixel layout R G B A R G B Byte Order Bit 7-5 Bit 4-2 Bit 1-0 RGB565 format layout R G B Byte 0 Byte Order Bit 15-11 Bit 10-5 Bit 4-0 Palette format layout Bit 31-24 Bit 23-16 Bit 15-8 Bit 7-0 C learance N o.: FT D I#349 Byte 1 Byte 0 Byte Order Byte 3 Byte 2 Byte 1 Byte 0 图 11: ARGB4、RGB332、RGB565 的像素格式及调色板 图形上下文 无 请参阅 BITMAP_HANDLE, BITMAP_SIZE, BITMAP_SOURCE 79 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.8 BITMAP_SIZE 为目前的句柄指定位图的屏幕绘制。 编码 31 24 23 4.8.1 0x08 21 保留 20 19 filter wrapx 18 17 wrapy width 9 8 0 height 参数 filter 位图过滤模式,NEAREST 或 BILINEAR 其中一种。 NEAREST 的值为 0,而 BILINEAR 的值为 1。 wrapx 位图 x 方向缠绕模式,REPEAT 或是 BORDER 其中一种。 BORDER 的值为 0 而 REPEAT 的值为 1。 wrapy 位图 y 方向缠绕模式,REPEAT 或是 BORDER 其中一种。 width 已画的位图宽度,单位为像素。 height 已画的位图高度,单位为像素。 描述 这个指令控制位图的绘制:位图屏幕上的尺寸、缠绕行为、以及过滤功能。请注意如果参数 wrapx 或 wrapy 是 REPEAT,则对应的存储器布局尺寸 (BITMAP_LAYOUT 线跨或高度)必须是 2 的次方,否则结 果为未知。 至于宽度及高度参数,若值是 1 到 511 是表示位图以像素为单位的宽度或高度。若值为 0 表示宽度或高度 为 512 个像素。 80 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 范例 绘制一个 64 x 64 的位图: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_SIZE(NEAREST, BORDER, 64, 64) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(48, 28, 0, 0) ); 尺寸缩小成 32 x 50: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_SIZE(NEAREST, BORDER, 32, 50) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(48, 28, 0, 0) ); 使用循环模式履盖位图: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_SIZE(NEAREST, REPEAT, REPEAT, 160, 120) ); dl( BEGIN(BITMAPS) ); dl( VERTEX2II(0, 0, 0, 0) ); 放大 4X - 128 X 128 – 使用位图变换: 81 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_TRANSFORM_A(128) ); dl( BITMAP_TRANSFORM_E(128) ); dl( BITMAP_SIZE(NEAREST, BORDER, 128, 128) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(16, 0, 0, 0) ); 使用双线性过滤器可使放大后的影像较平滑: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_TRANSFORM_A(128) ); dl( BITMAP_TRANSFORM_E(128) ); dl( BITMAP_SIZE(BILINEAR, BORDER, 128, 128) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(16, 0, 0, 0) ); 图形上下文 无 请参阅 BITMAP_HANDLE, BITMAP_LAYOUT, BITMAP_SOURCE 82 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.9 BITMAP_SOURCE 指定 FT800 图形存储器 RAM_G 里,位图数据的源头地址。 编码 31 24 0x01 23 保留 20 19 0 addr 参数 addr 在 SRAM FT800 里的位图地址,会依据位图格式对齐。 例如,如果位图格式是属于 RGB565/ARGB4/ARGB1555 其中之一,位图源头应该要对齐成 2 字 节的整数倍。 描述 位图的源头地址正常来说是在主存储器里,主存储器里是位图图形数据载入的地方。 范例 绘制一个 64 x 64 大小的位图,在地址 0 的位置载入: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_SIZE(NEAREST, BORDER, 64, 64) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(48, 28, 0, 0) ); 使用同一个图形数据,但源头及尺寸改成只显示出 32 x 32 的部份图形: dl( BITMAP_SOURCE(128 * 16 + 32) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_SIZE(NEAREST, BORDER, 32, 32) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(48, 28, 0, 0) ); 83 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 图形上下文 无 请参阅 BITMAP_LAYOUT, BITMAP_SIZE 4.10 BITMAP_TRANSFORM_A 指定位图变换矩阵的 A 系数 编码 31 24 0x15 23 17 保留 16 0 a 参数 a 位图变换矩阵的系数 A,形式是有符号的 8.8 bit 定点。初始值是 256。 描述 BITMAP_TRANSFORM_A-F 系数是用来表现位图变换的功能,例如缩放、旋转、及移动。这些功能与 openGL 变换功能相似。 范例 值为 0.5(128),使得位图宽度变为两倍: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_TRANSFORM_A(128) ); dl( BITMAP_SIZE(NEAREST, BORDER, 128, 128) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(16, 0, 0, 0) ); 84 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 值为 2.0(512),会使得位图宽度变为一半: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_TRANSFORM_A(512) ); dl( BITMAP_SIZE(NEAREST, BORDER, 128, 128) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(16, 0, 0, 0) ); 图形上下文 A 值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 4.11 BITMAP_TRANSFORM_B 指定位图变换矩阵的 B 系数 编码 31 24 0x16 23 17 保留 16 0 b 参数 b 位图变换矩阵的系数 B,形式是有符号的 8.8 bit 定点。初始值是 0。 描述 BITMAP_TRANSFORM_A-F 系数是用来表现 位图变换的功能,例如缩放、旋转、及移动。这些功能与 openGL 变换功能相似。 图形上下文 B 值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 85 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.12 BITMAP_TRANSFORM_C 指定位图变换矩阵的 C 系数 编码 31 24 23 0 0x17 c 参数 c 位图变换矩阵的系数 C,形式是有符号的 15.8 bit 定点。初始值是 0。 描述 BITMAP_TRANSFORM_A-F 系数是用来表现位图变换的功能,例如缩放、旋转、及移动。这些功能与 openGL 变换功能相似。 图形上下文 C 值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 4.13 BITMAP_TRANSFORM_D 指定位图变换矩阵的 D 系数 编码 31 24 0x18 23 17 保留 16 0 d 参数 d 位图变换矩阵的系数 D,形式是有符号的 8.8 bit 定点。初始值是 0。 描述 BITMAP_TRANSFORM_A-F 系数是用来表现位图变换的功能,例如缩放、旋转、及移动。这些功能与 openGL 变换功能相似。 图形上下文 D 值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 86 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.14 BITMAP_TRANSFORM_E 指定位图转换矩阵的 E 系数 编码 31 24 0x19 23 17 16 0 e 保留 参数 e 位图变换矩阵的系数 E,形式是有符号的 8.8 bit 定点。初始值是 256。 描述 BITMAP_TRANSFORM_A-F 系数是用来表现位图变换的功能,例如缩放、旋转、及移动。这些功能与 openGL 变换功能相似。 范例 值为 2.0(512),会使得位图高度变成两倍: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_TRANSFORM_E(128) ); dl( BITMAP_SIZE(NEAREST, BORDER, 128, 128) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(16, 0, 0, 0) ); 值为 2.0(512),会使得位图高度变为一半: dl( BITMAP_SOURCE(0) ); dl( BITMAP_LAYOUT(RGB565, 128, 64) ); dl( BITMAP_TRANSFORM_E(512) ); dl( BITMAP_SIZE(NEAREST, BORDER, 128, 128) ); BORDER, dl( BEGIN(BITMAPS) ); dl( VERTEX2II(16, 0, 0, 0) ); 图形上下文 87 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 e 值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 4.15 BITMAP_TRANSFORM_F 指定位图变换矩阵的 F 系数 编码 31 24 23 0 0x1A f 参数 f 位图变换矩阵的系数 F,形式是有符号的 15.8 bit 定点。初始值是 0。 描述 BITMAP_TRANSFORM_A-F 系数是用来表现位图变换的功能,例如缩放、旋转、及移动。这些功能与 openGL 变换功能相似。 图形上下文 F 值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 4.16 BLEND_FUNC 指定像素算术 编码 31 24 0x0B 23 6 保留 5 3 src 2 0 dst 参数 src 指定源头混合因子如何计算。是下列方法的其中一种:ZERO,ONE、SRC_ALPHA、DST_ALPHA、 ONE_MINUS_SRC_ALPHA、或 ONE_MINUS_DST_ALPHA。初始值是 SRC_ALPHA(2). dst 88 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 指定混合因子如何计算。目的地因子跟源头混合因子一样,是上述所列方法的其中一种初始值是 ONE_MINUS_SRC_ALPHA(4) 表 8 BLEND_FUNC 常数值定义 NAME ZERO ONE SRC_ALPHA DST_ALPHA ONE_MINUS_SRC_ALPHA ONE_MINUS_DST_ALPHA VALUE 0 1 2 3 4 5 Description Check openGL definition Check openGL definition Check openGL definition Check openGL definition Check openGL definition Check openGL definition 描述 混合功能控制新的颜色值如果与已经在颜色缓冲器里的值做结合。若有一个像素值的源头及一个已在颜色缓 冲器先前值的目的地,则计算后的颜色为: source×src + destination×dst 对每一个颜色通道: 红、绿、蓝、及 alpha 透明。 范例 预设的(SRC_ALPHA, ONE_MINUS_SRC_ALPHA)混合功能可利用 alpha 透明值使绘图覆盖目的地: dl( BEGIN(BITMAPS) ); dl( VERTEX2II(50, 30, 31, 0x47) ); dl( COLOR_A( 128 ) ); dl( VERTEX2II(60, 40, 31, 0x47) ); 0 值的目的地因子表示目的地像素没有被使用: 89 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( BEGIN(BITMAPS) ); dl( BLEND_FUNC(SRC_ALPHA, ZERO) ); dl( VERTEX2II(50, 30, 31, 0x47) ); dl( COLOR_A( 128 ) ); dl( VERTEX2II(60, 40, 31, 0x47) ); 利用源头的 alpha 透明值控制要保留多少目的地的部份: dl( BEGIN(BITMAPS) ); dl( BLEND_FUNC(ZERO, SRC_ALPHA) ); dl( VERTEX2II(50, 30, 31, 0x47) ); 图形上下文 src 值及 dst 值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 COLOR_A 4.17 CALL 在显示清单里另一个位置执行一序列的指令 编码 31 24 0x1D 23 16 保留 15 0 dest 参数 dest RAM_DL 里的目的地地址,是显示指令會切換至的位置。而 FT800 有栈储存返回地址,若要返回 源头地址的下一个指令,可利用 RETURN 指令。 描述 90 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 CALL 及 RETURN 除 了目 前 的指 针 (pointer) 之外 ,有 一 个四 层 的堆 栈。 任 何额 外多 做 的 CALL/RETURN 会导致意料外的运转行为。 图形上下文 无 请参阅 JUMP, RETURN 4.18 CELL 为 VERTEX2F 指令指定位图单元格数量。 编码 31 24 23 0x06 7 6 0 cell 保留 参数 cell 位图单元格数量。 初始值是 0 图形上下文 单元格的值是图形上下文的一部份, 如 Error! Reference source not found.节所述。 请参阅 无 4.19 CLEAR 清除缓冲器,回预置值 编码 31 24 0x26 23 3 保留 2 1 0 C S T 参数 c 清除颜色缓冲器。设定此 bit 为 1 会清除 FT800 的颜色缓冲器,回预置(preset)值。设为 0 则此 FT800 的 颜 色 缓 冲 器 线 持 在 一 个 未 改 变 的 值 。 供 RGB 通 道 使 用 的 预 置 值 定 义 在 CLEAR_COLOR_RGB 指令,供 alpha 透明通道使用的预置值定义在 CLEAR_COLOR_A 指令。 s 清除模板缓冲器。设定此 bit 为 1 会清除 FT800 的模板缓冲器,回预置值。设为 0 则此 FT800 的 模板缓冲器线持在一个未改变的值。这个预置值是在 CLEAR_STENCIL 指令里定义。 91 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 t 清除标记缓冲器。设定此 bit 为 1 可清除 FT800 的标记缓冲器,回预置值。设定此 bit 为 0,会使 FT800 的标记缓冲器维持在一个未改变的值。这个预置值是在 CLEAR_TAG 指令里定义。 描述 剪刀测试及缓冲器写入遮盖会影响清除的动作。剪刀限制已清除的矩阵,而缓冲器写入遮盖会限制受影响的 缓冲器。Alpha 透明功能、混合功能、及模板印刷不会影响清除的动作。 范例 清除屏幕,设成亮蓝色: dl( CLEAR_COLOR_RGB(0, 0, 255) ); dl( CLEAR(1, 0, 0) ); 利用剪刀矩形清除部份屏幕,部份设为灰色、部份设为蓝色: dl( CLEAR_COLOR_RGB(100, 100, 100) ); dl( CLEAR(1, 1, 1) ); dl( CLEAR_COLOR_RGB(0, 0, 255) ); dl( SCISSOR_SIZE(30, 120) ); dl( CLEAR(1, 1, 1) ); 图形上下文 无 请参阅 CLEAR_COLOR_A, CLEAR_STENCIL, CLEAR_TAG, CLEAR_COLOR_RGB 4.20 CLEAR_COLOR_A 为 alpha 透明通道指定清除值 编码 92 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 32 24 23 8 0x0F C learance N o.: FT D I#349 7 0 Alpha 透明 保留 参数 alpha 颜色缓冲器清除后,使用的 alpha 透明值。初始值为 0 图形上下文 alpha 透明值是图形上下文的一部份,如 Error! Reference source not found.节所示。 请参阅 CLEAR_COLOR_RGB, CLEAR 4.21 CLEAR_COLOR_RGB 为红、绿、蓝通道指定清除值 编码 31 24 23 0x02 16 15 8 红 7 蓝 0 绿 参数 red 颜色缓冲器被清除后的红色值。初始值是 0。 green 颜色缓冲器被清除后的绿色值。初始值是 0。 blue 颜色缓冲器被清除后的蓝色值。初始值是 0。 描述 设定 CLEAR 指令后的颜色值。 范例 清除屏幕,设成亮蓝色: dl( CLEAR_COLOR_RGB(0, 0, 255) ); dl( CLEAR(1, 1, 1) ); 93 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 利用剪刀矩形清除部份屏幕,部份设为灰色、部份设为蓝色: dl( CLEAR_COLOR_RGB(100, 100, 100) ); dl( CLEAR(1, 1, 1) ); dl( CLEAR_COLOR_RGB(0, 0, 255) ); dl( SCISSOR_SIZE(30, 120) ); dl( CLEAR(1, 1, 1) ); 图形上下文 红色值、绿色值、蓝色值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 CLEAR_COLOR_A, CLEAR 4.22 CLEAR_STENCIL 指定模板缓冲器的清除值。 编码 31 24 23 0x11 8 7 0 s 保留 参数 s 模板缓冲器清除后的值,初始值是 0 图形上下文 s 值是图形上下文的一部份,如 Error! Reference source not found.所述。 请参阅 CLEAR 94 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.23 CLEAR_TAG 指定标记缓冲器的清除值。 编码 31 24 23 0x12 8 7 0 t 保留 参数 t 标记缓冲器清除后的值,初始值是 0. 图形上下文 t 值是图形上下文的一部份,如 Error! Reference source not found.所述。 请参阅 TAG, TAG_MASK, CLEAR 4.24 COLOR_A 设定目前的 alpha 透明值 编码 31 24 23 0x10 8 保留 7 0 alpha 参数 alpha 目前颜色的 alpha 透明值,初始值是 255。 描述 设定应用在绘图元素上的 alpha 透明值,如点、线、及 位图。Alpha 透明值如何影响影像像素是依 BLEND_FUNC 而定;预设的行为是透明混合。 范例 以 3 种 alpha 透明值,画出三个字符: 95 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( BEGIN(BITMAPS) ); dl( VERTEX2II(50, 30, 31, 0x47) ); dl( COLOR_A( 128 ) ); dl( VERTEX2II(58, 38, 31, 0x47) ); dl( COLOR_A( 64 ) ); dl( VERTEX2II(66, 46, 31, 0x47) ); 图形上下文 alpha 透明值是图形上下文的一部份,如 Error! Reference source not found.所述。 请参阅 COLOR_RGB, BLEND_FUNC 4.25 COLOR_MASK 开启或是关闭颜色成分的写入 编码 31 24 0x20 23 4 保留 3 2 1 0 r g b a 参数 r 开启或是关闭 FT800 颜色缓冲器的红通道更新。初始值是 1,表示开启。 g 开启或是关闭 FT800 颜色缓冲器的绿通道更新。初始值是 1,表示开启。 b 开启或是关闭 FT800 颜色缓冲器的蓝通道更新。初始值是 1,表示开启。 a 开启或是关闭 FT800 颜色缓冲器的 alpha 透明通道更新。初始值是 1,表示开启。 描述 颜色遮盖可控制像素的颜色值是否更新。有时候,它是用来选择性的更新影像的红、绿、蓝、或 alpha 透 明通道。但较多情况是当更新标记或模板缓冲器时,完全地关闭颜色更新。 范例 在屏幕的中间画一个数字’8’,然后画一个看不见的 40-像素圆形触摸区域至标记缓冲器: dl( BEGIN(BITMAPS) ); 96 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( VERTEX2II(68, 40, 31, 0x38) ); dl( POINT_SIZE(40 * 16) ); dl( COLOR_MASK(0, 0, 0, 0) ); dl( BEGIN(POINTS) ); dl( TAG( 0x38 ) ); dl( VERTEX2II(80, 60, 0, 0) ); 图形上下文 r, g, b, a 值是图形上下文的一部份,如 Error! Reference source not found.所述。 请参阅 TAG_MASK 4.26 COLOR_RGB 设定目前红绿蓝的颜色编码值 编码 31 24 0x04 23 红 16 15 蓝 8 7 0 绿 参数 red 目前颜色的红色值,初始值为 255。 green 目前颜色的绿色值, 初始值是 255。 blue 目前颜色的蓝色值,初始值是 255。 描述 设定 FT800 颜色缓冲器的红色、绿色、蓝色值,这些值会应用在下一个绘图操作。 范例 以不同的颜色画三个字符: dl( BEGIN(BITMAPS) ); 97 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( VERTEX2II(50, 38, 31, 0x47) ); dl( COLOR_RGB( 255, 100, 50 ) ); dl( VERTEX2II(80, 38, 31, 0x47) ); dl( COLOR_RGB( 50, 100, 255 ) ); dl( VERTEX2II(110, 38, 31, 0x47) ); 图形上下文 红色、绿色、蓝色值是图形上下文的一部份,如 Error! Reference source not found.所述。 请参阅 COLOR_A 4.27 DISPLAY 结束显示清单,FT800 会忽略这个指令之后的所有指令。 编码 31 24 23 0x0 0 保留 参数 无 图形上下文 无 请参阅 无 4.28 END 绘制图形基元结束。 编码 31 24 0x21 23 0 保留 参数 无 描述 98 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 建议每个 BEGIN 指令之后要有一个 END 指令当结尾。但进阶的使用者可以不用 END 指令,以在显示清 单里节省一些图形指令。 图形上下文 无 请参阅 BEGIN 4.29 JUMP 在显示清单另一个位置执行指令 编码 31 24 23 0x1E 16 15 0 dest 保留 参数 dest 要跳至的显示清单地址。 图形上下文 无 请参阅 CALL 4.30 LINE_WIDTH 指定 LINES 基元画线的线宽,单位是 1/16 像素。 编码 31 24 0x0E 23 12 保留 11 0 width 参数 width 以 1/16 像素为单位的线宽,初始值是 16。 描述 为已画的线设定线宽。宽度定义是线中心到最边缘的像素距离,单位是 1/16 像素。有效范围是从 16 到 4095,以 1/16 像素为单位。 请注意 LINE_WIDTH 指令会影响 LINES, LINE_STRIP, RECTS, EDGE_STRIP_A/B/R/L 基元。 99 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 范例 第二条线是以 width 为 80 当半径所画的线,也就是 5 个像素。 dl( BEGIN(LINES) ); dl( VERTEX2F(16 * 10, 16 * 30) ); dl( VERTEX2F(16 * 150, 16 * 40) ); dl( LINE_WIDTH(80) ); dl( VERTEX2F(16 * 10, 16 * 80) ); dl( VERTEX2F(16 * 150, 16 * 90) ); 图形上下文 线的宽度是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 4.31 MACRO 从一个宏寄存器(macro register)执行一个单一指令。 编码 31 24 0x25 23 1 保留 0 m 参数 m 要读取的宏寄存器。值为 0 表示 FT800 会从 REG_MACRO_0 拿取指令执行。值为 1 表示 FT800 会从 REG_MACRO_1 拿取指令执行。REG_MACRO_0 或 REG_MACRO_1 应是一个有效的显示 清单指令,否则属于未定义的运转状态。 图形上下文 无 请参阅 无 100 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.32 POINT_SIZE 设定点的半径 编码 31 24 2317 0x0D 保留 16 0 Size 参数 size 以 1/16 像素为单位的点半径,初始值是 16。 描述 设定已画点的尺寸大小。半径的定义是从点的中心到最边缘的像素,以 1/16 像素为单位。有效范围是从 16 到 8191,单位是 1/16 像素。 范例 第二个点是以半径 160 单位所绘制,也就是 10 像素的半径: dl( BEGIN(POINTS) ); dl( VERTEX2II(40, 30, 0, 0) ); dl( POINT_SIZE(160) ); dl( VERTEX2II(120, 90, 0, 0) ); 图形上下文 尺寸大小的值是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 101 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.33 RESTORE_CONTEXT 从目前的上下文堆栈恢复目前的图形上下文 编码 31 24 0x23 23 0 保留 参数 无 描述 恢复目前的图形上下文,如 Error! Reference source not found.节所述。FT800 里,SAVE 和 RESTORE 有四个层次可用。任何额外的 RESTORE_CONTEXT 指令会载入预设值至目前的上下文。 范例 储存及恢复上下文表示第二个’G’是用红色绘制,而不是蓝色: dl( BEGIN(BITMAPS) ); dl( COLOR_RGB( 255, 0, 0 ) ); dl( SAVE_CONTEXT() ); dl( COLOR_RGB( 50, 100, 255 ) ); dl( VERTEX2II(80, 38, 31, 0x47) ); dl( RESTORE_CONTEXT() ); dl( VERTEX2II(110, 38, 31, 0x47) ); 图形上下文 无 请参阅 SAVE_CONTEXT 102 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.34 RETURN 从前面一个 CALL 指令返回。 编码 31 24 23 0x24 0 保留 参数 无 描述 CALL 及 RETURN 除了目前的指针(pointer)之外,有一个四层的堆栈。任何额外多做的 CALL/RETURN 会导致意料外的运转状态。 图形上下文 无 请参阅 CALL 4.35 SAVE CONTEXT 将目前的图形上下文压入上下文栈。 编码 31 24 0x22 23 0 保留 参数 无 描述 保存目前的图形上下文,如 Error! Reference source not found.节所述。任何额外的 SAVE_CONTEXT 会仍掉最先保存的上下文。 范例 保存及恢复上下文表示第二个’G’是以红色缩制,而不是蓝色: 103 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( BEGIN(BITMAPS) ); dl( COLOR_RGB( 255, 0, 0 ) ); dl( SAVE_CONTEXT() ); dl( COLOR_RGB( 50, 100, 255 ) ); dl( VERTEX2II(80, 38, 31, 0x47) ); dl( RESTORE_CONTEXT() ); dl( VERTEX2II(110, 38, 31, 0x47) ); 图形上下文 无 请参阅 RESTORE_CONTEXT 4.36 SCISSOR_SIZE 指定剪刀要修剪的矩形 编码 31 24 0x1C 23 20 保留 1910 Width 9 0 Height 参数 width 剪刀修剪矩形的宽度,以像素为单位。初始值是 512。有效范围是从 0 到 512。 height 剪刀修剪矩形的高度,以像素为单位。初始值是 512。有效范围是从 0 到 512。 描述 设定剪刀修剪矩形的宽度和高度,这样限制绘制的区域。 范例 设定一个 40 x 30 剪刀矩形对位图做修剪和清除: 104 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( SCISSOR_XY(40, 30) ); dl( SCISSOR_SIZE(80, 60) ); dl( CLEAR_COLOR_RGB(0, 0, 255) ); dl( CLEAR(1, 1, 1) ); dl( BEGIN(BITMAPS) ); dl( VERTEX2II(35, 20, 31, 0x47) ); 图形上下文 宽度及高度是图形上下文的一部份,如 Error! Reference source not found.节所述。 请参阅 无 4.37 SCISSOR_XY 指定剪刀修剪矩形的左上角位置 编码 31 24 0x1B 23 19 17 保留 9 x 8 0 y 参数 x 剪刀修剪矩形的 x 坐标,以像素为单位。初始值为 0 y 剪刀修剪矩形的 y 坐标,以像素为单位。初始值为 0 描述 设定剪刀修剪矩形的左上角位置,限制绘制区域。 范例 设定一个 40 x 30 剪刀修剪矩形并清除位图绘制: 105 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( SCISSOR_XY(40, 30) ); dl( SCISSOR_SIZE(80, 60) ); dl( CLEAR_COLOR_RGB(0, 0, 255) ); dl( CLEAR(1, 1, 1) ); dl( BEGIN(BITMAPS) ); dl( VERTEX2II(35, 20, 31, 0x47) ); 图形上下文 x 及 y 值是图形上下文的一部份,如 Error! Reference source not found.所述。 请参阅 无 4.38 STENCIL_FUNC 设定模板测试的功能及参考值。 编码 31 24 0x0A 23 20 保留 19 16 15 func 8 ref 7 0 mask 参数 func 指定测试功能,指定下列其中一项: NEVER, LESS, LEQUAL, GREATER,GEQUAL, EQUAL, NOTEQUAL, 或 ALWAYS 。 初 始 值 是 ALWAYS 。 有 关 这 些 常 数 的 值 , 请 参 考 图 8: ALPHA_FUNC ref 指定模板测试的参考值,初始值是 0 mask 指定一个与参考值及储存的模板值交集的遮盖,初始值是 255 描述 模板测试拒绝或接收像素是依据定义在 func 参数的测试功能结果,与参考值相比,这个测试功能是操作在 模板缓冲器里目前的值。 范例 绘制两个点,在每个像素增加模板,然后以红色值为 2 绘制像素。 106 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 dl( STENCIL_OP(INCR, INCR) ); dl( POINT_SIZE(760) ); dl( BEGIN(POINTS) ); dl( VERTEX2II(50, 60, 0, 0) ); dl( VERTEX2II(110, 60, 0, 0) ); dl( STENCIL_FUNC(EQUAL, 2, 255) ); dl( COLOR_RGB(100, 0, 0) ); dl( VERTEX2II(80, 60, 0, 0) ); 图形上下文 func, ref 及 mask 的值是图形上下文的一部份, 如 Error! Reference source not found.节所述。 请参阅 STENCIL_OP, STENCIL_MASK 4.39 STENCIL_MASK 控制在模板平面里,个别 bits 的写入 编码 31 24 0x13 23 8 7 0 mask 保留 参数 mask 用来启动写入模板 bits 的遮盖,初始值是 255 图形上下文 遮盖的值是图形上下文的一部份, 如 Error! Reference source not found.节所述。 请参阅 STENCIL_FUNC, STENCIL_OP, TAG_MASK 107 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.40 STENCIL_OP 设定模板测试的动作 编码 31 24 23 6 0x0C 5 3 sfail 保留 2 0 spass 参数 sfail 指定模板测试失败后的动作,采下面所列的其中一种:KEEP,ZERO, REPLACE, INCR, DECR, 及 INVERT。 初始值是 KEEP(1)。 spass 指定模板测试通过后的动作,与 sfail 一样,是上述所列的其中一种。 初始值是 KEEP(1) NAME ZERO KEEP REPLACE INCR DECR INVERT VALUE 0 1 2 3 4 5 图 12: STENCIL_OP 常数的定义 描述 模板操作指定模板缓冲器如何被更新。选择的操作是依据模板测试是否通过与否。 范例 绘制两个点,在每个像素增加模板,然后以红色值为 2 绘制像素: dl( STENCIL_OP(INCR, INCR) ); dl( POINT_SIZE(760) ); dl( BEGIN(POINTS) ); dl( VERTEX2II(50, 60, 0, 0) ); dl( VERTEX2II(110, 60, 0, 0) ); dl( STENCIL_FUNC(EQUAL, 2, 255) ); dl( COLOR_RGB(100, 0, 0) ); dl( VERTEX2II(80, 60, 0, 0) ); 108 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 图形上下文 sfail 与 spass 的值是图形上下文的一部份, 如 Error! Reference source not found.节所述。 请参阅 STENCIL_FUNC, STENCIL_MASK 4.41 TAG 为以下画在屏幕上的图形物件附上标记值,初始标记缓冲器的值是 255。 编码 31 24 23 0x03 8 7 0 s 保留 参数 s 标记值。有效范围是从 1 到 255。 描述 FT800 的标记缓冲器初始值是由 CLEAR_TAG 指令指定,生效是由 CLEAR 指令。TAG 指令可以指定 FT800 的标记缓冲器的值,当图形物件画在屏幕上,标记缓冲器的值会应用在图形物件上。这个 TAG 值会被分 配到下列全部的物件,除非用 TAG_MASK 指令关闭它。以下图形物件一旦被绘制,它们就被成功附加上标记值。 当已附加标记值的图形物件被触摸,寄存器 REG_TOUCH_TAG 将以被触摸图形物件的标记值做更新。 假 如 一 个 显 示 清 单 里 没 有 TAG 指 令 , 當 被 显 示 清 单 渲 染 的 图 形 物 件 被 触 摸 , 它 们 会 向 寄 存 器 REG_TOUCH_TAG,报告标记值为 255。 图形上下文 s 值是图形上下文的一部份, 如 Error! Reference source not found.节所述。 请参阅 CLEAR_TAG, TAG_MASK 4.42 TAG_MASK 控制标记缓冲器的写入 编码 31 24 1 保留 0 mask 0x14 23 参数 mask 109 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 允许标记缓冲器更新。初始值是 1,表示 FT800 的标记缓冲器是以 TAG 指令给的值更新。然而, 以下的图形物件会被附加到 TAG 指令给的标记值。 值为 0 表示 FT800 的标记缓冲器设定成预设值,而不是显示清单里 TAG 指令给的值。 描述 每一个画在屏幕上的图形物件都被附加上标记值,此标记值是定义在 FT800 的标记缓冲器里。 FT800 标记缓冲器可以被 TAG 指令更新。 FT800 标记缓冲器的预设值是由 CLEAR_TAG 和 CLEAR 指令决定。如果显示 清单里没有 CLEAR_TAG 指令,则标记缓冲器里的预设值将为 0 。 TAG_MASK 指令决定 FT800 标记缓冲器从 FT800 标记缓冲器的预设值取值,还是从显示清单里 的 TAG 指令取值。 图形上下文 遮盖的值是图形上下文的一部份, 如 Error! Reference source not found.节所述。 请参阅 TAG, CLEAR_TAG, STENCIL_MASK, COLOR_MASK 4.43 VERTEX2F 在指定的屏幕坐标位置开始图形基元的操作,单位为 1/16 像素。 编码 31 30 29 0b’01 X 15 14 0 Y 参数 x 有符号的 x 坐标,以 1/16 像素为单位 y 有符号的 y 坐标,以 1/16 像素为单位 描述 坐标范围是从-16384 到+16383,单位为 1/16 像素。负的 x 坐标值表示此坐标是在(0,0)左边的虚拟屏 幕,而负的 y 坐标值表示此坐标是在(0,0)上面的虚拟屏幕。若是绘制在负坐标的位置上,绘图操作是看不 见的。 图形上下文 无 请参阅 无 110 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 4.44 VERTEX2II 在指定的像素单位坐标上,开始图形基元的操作。 编码 31 30 2921 0b’10 X 20 12 Y 11 7 handle 6 0 cell 参数 x 以像素为单位的 x 坐标,从 0 到 511。 y 以像素为单位的 y 坐标,从 0 到 511。 handle 位图的句柄。有效范围从 0 到 31,16 到 31 的范围的位图句柄是专给 FT800 内置的字体。 cell 单元格索引号。单元格索引号是位图的索引,这些位图有相同位图布局及格式。举例来说,对于句 柄 31,单元格 65 表示最大内置字体里的”A”字符。 描述 坐标范围是从-16384 到+16383,单位为像素。句柄及单元参数都被忽略,除非在这个指令之前,图形基 元被 BEGIN 指令指定为位图。 图形上下文 无 请参阅 无 111 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5 协处理器引擎指令 CMD_TEXT – 绘制文字 CMD_BUTTON - 绘制按扭 CMD_CLOCK – 绘制一个模拟时钟 CMD_GAUGE - 绘制一个仪表 CMD_GRADIENT - 绘制一个平滑的颜色梯度 CMD_KEYS - 绘制一行按键 CMD_PROGRESS - 绘制一个进度条 CMD_SLIDER - 绘制一个滑块 CMD_SCROLLBAR - 绘制一个滚动条 CMD_DIAL - 绘制一个旋转拨号控制 CMD_TOGGLE - 绘制一个拨动开关 CMD_NUMBER – 绘制一个十进位数字 协处理器引擎是透过一个 4K 字节 FIFO 所馈入,此 FIFO 在 FT800 存储器里的寄存器 RAM_CMD 上。MCU 写 指令到 FIFO,协处理器引擎读取并执行指令。MCU 更新寄存器 REG_CMD_WRITE 以表示在 FIFO 里有新指 令,而协处理器引擎在指令被执行后,更新 REG_CMD_READ。 112 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 所以为了计算在 FIFO 里的可用空间,MCU 会计算: fullness = (REG_CMD_WRITE -REG_CMD_READ) mod 4096 freespace = (4096 - 4) -fullness; 计算不会报告出有 4096 字节可用空间的情况,以避免使 FIFO 进入循环或是看起来是空的。 假如在 FIFO 里有足够的空间,MCU 会在 FIFO RAM 合适的位置写入指令,然后更新 REG_CMD_WRITE。为 了简化 MCU 代码,FT800 硬件自动循环连续的写入,从(RAM_CMD + 4095)回到(RAM_CMD + 0)。 FIFO 的条目总是 4 个字节宽 - REG_CMD_READ 或 REG_CMD_WRITE 如果有非 4 字节整数的值,属于错误 的情况。每一个发到协处理器的指令引擎可以会拿取 1 个或多个字(words):长度是依剧指令本身及任何附加的 数据。一些指令会接著多种长度的数据,所以指令大小可能不是 4 字节的整数倍。在这样的情况,协处理器引擎 忽略额外的 1、2、或 3 个字节,然后继续在接下来的 4 字节的界限上续续读取下一个指令。 5.1 显示清单指令的协处理器操纵 大部份协处理器引擎的指令写到目前的显示清单。目前显示清单的写入位置是维持在 REG_CMD_DL。当协处理 器引擎写入一个字到显示清单,协 处理器引擎就是在 REG_CMD_DL 的位置上写入显示清单,然后增加 REG_CMD_DL。特别指令 CMD_DLSTART 设定 REG_CMD_DL 为 0,是为了一个新显示清单的开始。 所有显示清单指令可以写成协处理器引擎的指令。协处理器引擎复制这些指令到目前的显示清单,其位置在 REG_CMD_DL。例如,这个协处理器引擎指令的序列写到写入一个小的显示清单: cmd(CMD_DLSTART); //开始一个新显示清单 cmd(CLEAR_COLOR_RGB(255, 100, 100)); //设定清除颜色 cmd(CLEAR(1, 1, 1)); //清除屏幕 cmd(DISPLAY()); //显示 113 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 当然,这个显示清单可能已经被写入到 RAM_DL。这个技术的优点是你可以在单一个流 (stream)中,混合低水 平操作(low -level operations)及高水平协处理器引擎指令(high-level co-processor engine commands): cmd(CMD_DLSTART); // 开始一个新的显示清单 cmd(CLEAR_COLOR_RGB(255, 100, 100)); // 设定清除颜色 cmd(CLEAR(1, 1, 1)); // 清除屏幕 cmd_button(20, 20, // x,y 60, 60, // 以像素为单位的宽度和高度 30, // 字体 30 0, // 预设选项 "OK!"); cmd(DISPLAY()); // 显示 5.2 同步 在某些时候,必须等到协处理器处理完所有未完成的指令。当协处理引擎完成在指令缓冲器里最后一个未完成的 指 令 后 , 它 会 举 起 INT_CMDEMPTY 中 断 。 其 他 方 法 是 MCU 会 修 剪 REG_CMD_READ , 直 到 REG_CMD_WRITE 与其相等。 一个需要同步的情况是当 MCU 需要对显示清单做直接的写入,要读出 REG_CMD_DL 的值。在这个情况 MCU 在读出 REG_CMD_DL 时,应该等到协处理器引擎处于空闲状态。 5.3 ROM 及 RAM 字体 图形引擎硬件绘制位图图形,而将这些图形当作字体,对于软件来说是有用处的。 字体度量,例如字体高度及宽度,是在当需要放置字体字符的时候,供软件使用的,对于 ROM 字符位图来说, 这些字体字符是在 ROM 里。当以任何一个内置的 16 个 ROM 字体(编号 16-31)绘制文字时,协处理器引擎会 使用这些度量。使用者可以载入相似的字体度量到 RAM,因此在位图句柄(handle)0-14 的位置创造额外的使用 者定义的字体。句柄 15 则是保留给协处理指令 CMD_Button/CMD_Keys/CMD_Gradient 所使用。 114 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 每个 148-字节的字体度量区块都是以下的格式: 115 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 表 9 FT800 字体度量区块格式 地址 尺寸大小 值 p+0 128 每个字体字符的宽度,以像素为单位 p + 128 4 字体度量格式,例如:L1, L4 或 L8 p + 132 4 字体线跨 ,以字节为单位 p + 136 4 字体宽度,以像素为单位 p + 140 4 字体高度,以像素为单位 p + 144 4 存储器里指像字体图形数据的指针 对 ROM 字体来说,这些区块也在 ROM 里,以一个长度为 16 的阵列存在。这个阵列的地址维持在 ROM 里 0xffffc 的位置。例如要找到字体大小 31 的字符’g’(ASCII 0x67)宽度: 从 0xffffc 读 32-bit 指针 p。 宽度 widths = p + (148 * (31 - 16)) (表中字体大小从 16 开始) 从存储器 widths[0x67]的位置读出字节 对 FT800 内置的 ROM 字体,一个位图句柄有效的字符范围是可印刷的 ASCII 代码。例如 32 到 127 都包含在 内。对用户化的 RAM 字体有效字符的 ASCII 代码范围是从 1 到 127。 在用户介面物件里使用用户化的字体: 从 0 到 14 选一个位图 载入字体度量到存储器里 使用 BITMAP_SOURCE、BITMAP_LAYOUT、和 BITMAP_SIZE 指令设定位图参数 创建及下载一个字体度量区块到 RAM。度量区块的地址应该要对齐到 4 字节的整数倍。 使用指令 CMD_SETFONT ,以选择的句柄去注册此新字体。 在任何协处理器指令的字体属性值里,使用选择的句柄 5.4 警告 对于一些小工具,如果输入的参数值是超过 512 像素的解析度,则产生出来的小工具可能不适当。 如果追踪物件的中心(旋转追踪的情况)或是追踪物件的左上角(线性追踪的情况)是在显示区域的外面,则 CMD_TRACK 的行为不会被定义。 在 CMD_NUMBER(不支持小数部份)的使用上,只有有符号(signed)及无符号(unsigned)的整数有被支持。 假如输入参数值是在有效范围之外,小工具的行为不会被定义。 5.5 错误的情况 有些指令会造成协整理器错误。这些错误的发生是因为协处理引擎无法继续。例如: 116 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 一个无效的 JPEG 被提供到 CMD__LOADIMAGE 一个无效的数据流里被提供到 CMD_INFLATE 试图写入超过 2048 个指令到一个显示清单 在错误的情形下,协处理器引擎设定 REG_CMD_READ 到 0xfff(这是一个非法值因为所有的指令缓冲器数据应 该要对齐 32-bit),然后举起 INT_CMDEMPTY 中断,停止接收新的指令。当主机 MCU 认出这个错误的情况, 主机 MCU 应该按照以下步骤恢复: 将 REG_CPURESET 设定为 1,使协处理器引擎维持在复位的情况 将 REG_CMD_READ 和 REG_CMD_WRITE 设为 0 将 REG_CPURESET 设定为 0,重启协处理器引擎 5.6 小工具实体尺寸 这个部份包含小工具共同的实体尺寸。 所有圆角的半径是小工具字体计算出来的(字符小写’o’的曲度)。半径是以字体高度的 3/16 算出。 所有 3D 阴影是以下列方法画出 (1) 照亮物件左上角偏移 0.5 个像素的区域 (2) 投阴影于物件右 下角偏移 1.0 个像素的区域。 对于进度条、卷动条、及滑块,输出的小工具是垂直的小工具,以防宽度及高度相同的情况。 5.7 小工具颜色设定 协处理器引擎小工具是以先前指令所指派的颜色绘制:CMD_FGCOLOR, CMD_BGCOLOR and COLOR_RGB 。根据这些指令,协处理器引擎会判协处理器引擎小工具里的不同区域,会以不同颜色渲染。 通常,假如协处理器引擎小工具互动的区域是设计给互动的 UI 元素使用,CMD_FGCOLOR 指令会影响协处理 器引擎小工具的互动区域。例如:CMD_BUTTON、CMD_DIAL。 CMD_BGCOLOR 应用在有背景的协处理器 引擎小工具。更多细节请看下面的表格。 表 10 小工具(WIDGET)颜色设定表 Widget CMD_FGCOLOR CMD_BGCOLOR COLOR_RGB CMD_TEXT NO NO YES CMD_BUTTON YES NO YES(标签) CMD_GAUGE NO YES YES(针与标识) CMD_KEYS YES NO YES(文字) CMD_PROGRESS NO YES YES CMD_SCROLLBAR YES(内部条) YES(外部条) NO CMD_SLIDER YES(旋扭) YES(旋扭右边条) YES(旋扭左边条) CMD_DIAL YES(旋扭) NO YES(标识) CMD_TOGGLE YES(旋扭) YES(条) YES(文字) CMD_NUMBER NO NO YES 117 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 CMD_CALIBRATE YES(动画点) YES(外部点) NO CMD_SPINNER NO NO YES 5.8 协处理器引擎图形状态 协 处 理 器 引 擎 会 维 持 一小 部 份 的 内 部 状态 供 图 形 绘 制 。这 个 状 态 在 协 处理 器 引 擎 复 位 的 时候 , 会 被 CMD_COLDSTART 指令设定预设值。状态的值不被 CMD_DLSTART 或 CMD_SWAP 影响,所以应用程式只 需要在启动时设定它们一次。 表 11 协处理器引擎图形状态 状态 预设值 指令 背景颜色 暗蓝 (0x002040) CMD_BGCOLOR 前景颜色 浅蓝 (0x003870) CMD_FGCOLOR 梯度颜色 白 (0xffffff) CMD_GRADCOLOR 转盘 无 CMD_SPINNER 物件追踪器 全部关闭 CMD_TRACK 中断计时器 无 CMD_INTERRUPT CMD_LOADIDENTITY, 位图变换矩阵: [ 𝐴 𝐵 𝐷 𝐸 𝐶 ] 𝐹 1.0 [ 0.0 0.0 1.0 CMD_TRANSLATE, CMD_ROTATE, etc. 0.0 ] 0.0 CMD_GRADCOLOR, CMD_KEYS, CMD_BUTTON 15 位图句柄 5.9 OPTION 参数的定义 下列表格定义这个章节提到的 OPTION 参数。 表 12 OPTION 参数定义 名称 值 描述 指令 CMD_BUTTON,CMD_CLOCK,CMD_KE YS,CMD_GAUGE,CMD_SLIDER, CMD_DIAL, CMD_TOGGLE,CMD_PROGRESS, CMD_SCROLLBAR OPT_3D 0 5.9.1.1.1.1 协处理器小 工具是以 3D 效果绘 制。这是预 设的选项。 OPT_RGB565 0 解码 JPEG 影像格式成 RGB565 的协处理器选项 CMD_IMAGE 1 解码 JPEG 影像格式成 L8 的协处理器选项。例 如 monochrome CMD_IMAGE OPT_MONO 118 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 名称 值 描述 C learance N o.: FT D I#349 指令 2 没有显示清单指令产生给 从 JPEG 影像编码的位图 OPT_FLAT 256 5.9.1.1.1.2 协处理器小 工具以没有 3D 效果的 方式绘制 CMD_BUTTON,CMD_CLOCK,CMD_KE YS,CMD_GAUGE,CMD_SLIDER, CMD_DIAL, CMD_TOGGLE,CMD_PROGRESS, CMD_SCROLLBAR OPT_SIGNED 256 此数字被视为 32bit 有符 号的整数 CMD_NUMBER OPT_CENTERX 512 协处理器小工具水平集中 CMD_KEYS,CMD_TEXT, CMD_NUMBER OPT_CENTERY 1024 协处理器小工具垂直集中 CMD_KEYS,CMD_TEXT, CMD_NUMBER OPT_CENTER 1536 协处理器小工具水平及垂 直集中 CMD_KEYS,CMD_TEXT, CMD_NUMBER OPT_RIGHTX 2048 协处理器小工具上的标签 向右调整 CMD_KEYS,CMD_TEXT, CMD_NUMBER OPT_NOBACK 4096 协处理器小工具没有画背 景。 CMD_CLOCK, CMD_GAUGE OPT_NOTICKS 8192 协处理器时钟小工具没有 绘制小时刻度。仪表小工 具没有画大小刻度。 CMD_CLOCK, CMD_GAUGE OPT_NOHM 16384 协处理器时钟小工具不画 时针、分针、只画秒针 CMD_CLOCK OPT_NOPOINTER 16384 协处理器仪表不画指针 CMD_GAUGE OPT_NOSECS 32768 协处理器时钟小工具不画 秒针 CMD_CLOCK OPT_NOHANDS 49152 协处理器时钟小工具不画 时针、分针、及秒针 CMD_CLOCK OPT_NODL CMD_IMAGE 5.10 协处理器引擎的资源 协处理器引擎不会改变硬件的图形状态。也就是说,像颜色及线宽等图形状态不会被协处理器引擎改变。 然而,小工具会保留一些硬件资源,这是用户程序需要考虑的: 位图句柄 15 是被 3D 效果的按扭、按键、及梯度所用。 一个图形上下文是被物件所用,所以供 SAVE_CONTEXT 及 RESTORE_CONTEXT 使用的有效 栈深是 3 层。 119 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.11 指令组 开始及结束显示清单的指令: CMD_DLSTART -开始一个新的显示清单 CMD_SWAP -交换目前的显示清单 绘制图形物件的指令: CMD_TEXT - 绘制文字 CMD_BUTTON - 绘制一个按扭 CMD_CLOCK - 绘制一个模拟时钟 CMD_BGCOLOR - 设定背景颜色 CMD_FGCOLOR - 设定前景颜色 CMD_GRADCOLOR -为 CMD_BUTTON 和 CMD_KEYS 的強調(highlight)颜色设定 3D 效果 CMD_GAUGE - 绘制一个仪表 CMD_GRADIENT - 绘制一个平滑的颜色梯度 CMD_KEYS - 绘制一行按键 CMD_PROGRESS - 绘制一个进度条 CMD_SCROLLBAR - 绘制一个卷动条 CMD_SLIDER - 绘制一个滑块 CMD_DIAL - 绘制一个旋转拨号控制 CMD_TOGGLE - 绘制一个切换开关 CMD_NUMBER -绘制一个十进位数字 在存储器上操作的指令: CMD_MEMCRC - 为存储器计算一个 CRC-32 CMD_MEMZERO - 写入 0 到一个存储器区块 CMD_MEMSET - 以一个字节的值填满存储器 CMD_MEMWRITE - 写入字节到存储器 CMD_MEMCPY - 复制一个存储器区块 CMD_APPEND -附加存储器到显示清单 载入影像数据到 FT800 存储器的指令: CMD_INFLATE - 解压缩数据到存储器 CMD_LOADIMAGE - 载入一个 JPEG 影像 设定位图变换矩阵的指令: CMD_LOADIDENTITY - 设定目前的矩阵成单位矩阵 CMD_TRANSLATE - 应用翻转效果到目前的矩阵 CMD_SCALE - 应用缩放效果到目前的矩阵 CMD_ROTATE - 应用旋转效果到目前的矩阵 CMD_SETMATRIX - 当一个位图变换,写入目前的矩阵 CMD_GETMATRIX - 取回目前矩阵的系数 其他指令: CMD_COLDSTART - 设定协处理器引擎的状态到预设值 CMD_INTERRUPT - 触发中断 INT_CMDFLAG CMD_REGREAD - 读出一个寄存器的值 CMD_CALIBRATE -执行触屏校正的例行程序 120 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 CMD_SPINNER -开始一个动画转盘 CMD_STOP - 停止任何转盘、屏幕保护、或是素描功能 CMD_SCREENSAVER - 开始一个动画的屏幕保护 CMD_SKETCH - 开始连续的素描更新 CMD_SNAPSHOT - 对目前的屏幕作截屏 CMD_LOGO - 拨放芯片 logo 动画 5.12 CMD_DLSTART – 开始一个显示清单 当协处理引擎执行这个指令,它一直等到目前的显示清单被扫描输出,然后设定 REG_CMD_DL 的值为 0。 C 语言原型 void cmd_dlstart( ); 指令布局 +0 CMD_DLSTART (0xffffff00) 范例 cmd_dlstart(); ... cmd_dlswap(); 5.13 CMD_SWAP – 交换目前的显示清单 当协处理器引擎执行这个指令,在目前的显示清单被扫描输出后,需要一个立即的显示清单交换。在内部,此协 处理器引擎透过写入 REG_DLSWAP 实现这个指令。请参考 REG_DLSWAP 。 这个协处理引擎指令不会产生任何显示清单指令到显示清单存储器 RAM_DL。 C 语言原型 void cmd_swap( ); 指令布局 +0 CMD_DLSWAP(0xffffff01) 范例 无 5.14 CMD_COLDSTART -将协处理器引擎的状态设为预设值 这个指令将协处理器引擎的状态设成预设值 121 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 C 语言原型 void cmd_coldstart( ); 指令布局 +0 CMD_COLDSTART(0xffffff32) 范例 改变成一个定制的颜色主题,然后恢复预设颜色: cmd_fgcolor(0x00c040); cmd_gradcolor(0x000000); cmd_button( 2, 32, 76, 56, 26, 0, "custom"); cmd_coldstart(); cmd_button( "default"); 82, 32, 76, 56, 26, 0, 5.15 CMD_INTERRUPT – 触发 INT_CMDFLAG 中断 当协处理器引擎执行这个指令,会触发中断 INT_CMDFLAG。 C 语言原型 void cmd_interrupt( uint32_t ms ); 参数 ms 中断触发之前的延迟,以毫秒为单位。在这延迟之前,可以保证中断不会发出。假如 ms 为 0,会 立即发出中断。 指令布局 +0 CMD_INTERRUPT(0xffffff02) +4 ms 范例 在一个 JPEG 结束载入后触发一个中断 cmd_loadimage(); ... cmd_interrupt(0); // 载入前一个影像完成,触发中断 122 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 在 0.5 秒后触发一个中断: cmd_interrupt(500); ... 5.16 CMD_APPEND - 附加存储器于显示清单 附加一个存储器区块到目前的显示清单存储器地址,偏移量在 REG_CMD_DL 指示。 C 语言原型 void cmd_append( uint32_t ptr, uint32_t num ); 参数 ptr 在主存储器里源头指令的开始 num 要复制的字节数量。必须是 4 的整数倍。 指令布局 +0 CMD_APPEND(0xffffff1e) +4 Ptr +8 Num 描述 当附加完成后,协处理器引擎会增加 num 到 REG_CMD_DL,以确认显示清单有按照顺序。 范例 ... cmd_dlstart(); cmd_append(0, 40); // 从主存储器地址 0 的位置复制 10 个指令 cmd(DISPLAY); // 结束显示清单 cmd_swap(); 123 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.17 CMD_REGREAD -读取一个寄存器的值 C 语言原型 void cmd_regread( uint32_t ptr, uint32_t result ); 参数 ptr 要读取的寄存器地址 result 在 ptr 地址读到的寄存器数值 指令布局 +0 CMD_REGREAD(0xffffff19) +4 Ptr +8 Result 范例 补捉指令结束的确切时间: uint16_t x = rd16(REG_CMD_WRITE); cmd_regread(REG_CLOCK, 0); ... printf("%08x\n", rd32(RAM_CMD + x + 8)); 5.18 CMD_MEMWRITE -写入字节到存储器 写入下列字节到 FT800 存储器里。这个指令可以用来设定寄存器的值,或是在指定的时间更新存储器的内容。 C 语言原型 void cmd_memwrite( uint32_t ptr, uint32_t num ); 参数 Ptr 要写入的存储器地址 num 要写入的字节数量 描述 124 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 在指令缓冲器里,数据字节应该要立即接在后面。如果字节数量不是 4 的整数倍,则需再附加上 1、2、或 3 个 字节以确保下一个指令可以对齐到 4 字节的整数倍,而这些加上的衬垫字节可以是任何的值。此功能是否完成, 可透过侦测 REG_CMD_READ 是否等于 REG_CMD_WRITE。 警告: 如果使用这个指令,若使用不当可能会损坏 FT800 的存储器 指令布局 +0 CMD_MEMWRITE(0xffffff1a) +4 ptr +8 Num +12 Byte0 +13 Byte1 .. .. +n .. 范例 为一个特定的屏幕截图改变背光亮度到 64 (一半的强度): ... cmd_swap(); // 结束这个显示清单 cmd_dlstart(); // 等待直到交换(swap)之后 cmd_memwrite(REG_PWM_DUTY, 4); // 写入到 PWM_DUTY 寄存器 cmd(100); 5.19 CMD_INFLATE -解压缩数据到存储器 解压缩以下的压缩数据到 FT800 的存储器 RAM_G。这个数据应该已经被 DEFLATE 演算法压缩,例如 ZLIB 库。 ZLIB 压缩对于载入图形数据特别有用。 C 语言原型 void cmd_inflate( uint32_t ptr ); 参数 ptr 目的地地址。在指令缓冲器里,数据字节应该要立即跟在后面。 描述 如果字节数量不是 4 的整数倍,则需再附加上 1、2、或 3 个字节以确保下一个指令可以对齐到 4 字节的整 数倍,而这些加上的衬垫字节可以是任何的值。 指令布局 125 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +0 CMD_INFLATE(0xffffff22) +4 ptr +8 Byte0 +9 Byte1 .. .. +n .. C learance N o.: FT D I#349 范例 载入图形数据到主存储器址址 0x8000: cmd_inflate(0x8000); ... // 以下是 zlib 压缩的数据 5.20 CMD_LOADIMAGE - 截入 JPEG 影像 在主存储器里,解压缩后面的 JPEG 影像数据成一个 FT800 的位图。这个影像数据应该是一个 规律基线 (regular baseline)的 JPEG(JFIF)影像。 C 语言原型 void cmd_loadimage( uint32_t ptr, uint32_t options ); 参数 ptr 目的地地址 options 预设上,选项 OPT_RGB565 表示载入的位图是 RGB565 的格式。OPT_MONO 选项表示载入的 位图是单色(monochrome)的,格式为 L8。此指令附加显示清单指令,以设定源头、布局、以及 结果影像的大小。选项 OPT_NODL 是用来避免载入,没有东西会被写入显示清单。OPT_NODL 可以和 OPT_MONO 或 OPT_RGB565 作联集(OR)。 描述 在指令缓冲器里,数据字节应该要立即接在后面。如果字节数量不是 4 的整数倍,则需再附加上 1、2、或 3 个 字节以确保下一个指令可以对齐到 4 字节的整数倍,而这些加上的衬垫字节可以是任何的值。 主机处理器上的应用程式必须解析 JPEG 的标头(header)以得到 JPEG 影像的属性并决定做解码。对于非基线 JPEG 影像或是产生的输出数据超过 RAM_G 大小的情况,运转行为是无法预测的。 指令布局 126 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +0 CMD_LOADIMAGE(0xffffff24) +4 Ptr +8 Options +12 Byte0 +13 Byte1 .. .. +n .. C learance N o.: FT D I#349 范例 在地址 0 载入一个 JPEG 影像,然后在(10,20) 和 (100,20)绘制位图: cmd_loadimage(0, 0); ... // JPEG 文件数据在后 cmd(BEGIN(BITMAPS)) cmd(VERTEX2II(10, 20, 0, 0)); // 在 (10,20)绘制位图 cmd(VERTEX2II(100, 20, 0, 0)); // 在 (100,20)绘制位图 5.21 CMD_MEMCRC – 为存储器记算一个 CRC-32 为 FT800 存储器的一个区块计算一个 CRC-32 C 语言原型 void cmd_memcrc( uint32_t ptr, uint32_t num, uint32_t result ); 参数 ptr 此存储器区块的开始地址 num 存储器区块里字节的数量 result 输 出 参 数 ; 在 指 令 执 行 后 , 与 CRC-32 一 起 写 入 。 此 功 能 是 否 完 成 , 可 透 过 侦 测 REG_CMD_READ 是否等于 REG_CMD_WRITE。 127 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 指令布局 +0 CMD_MEMCRC(0xffffff18) +4 Ptr +8 Num +12 Result 范例 为了计算 FT800 存储器第一个 1K 字节的 CRC-32,先纪录 REG_CMD_WRITE 的值,执行指令,等待完 成,然后在结果的位置读出此 32-bit 的值: uint16_t x = rd16(REG_CMD_WRITE); cmd_crc(0, 1024, 0); ... printf("%08x\n", rd32(RAM_CMD + x + 12)); 5.22 CMD_MEMZERO -写入零值到一个存储器区块 C 语言原型 void cmd_memzero( uint32_t ptr, uint32_t num ); 参数 ptr 此存储器区块的开始地址 num 存储器区块里字节的数量 此功能是否完成,可透过侦测 REG_CMD_READ 是否等于 REG_CMD_WRITE。 指令布局 +0 CMD_MEMZERO(0xffffff1c) +4 ptr +8 num 128 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 范例 移除主存储器的第一个 1K: cmd_memzero(0, 1024); 5.23 CMD_MEMSET -将一个字节的值填入存储器 C 语言原型 void cmd_memset( uint32_t ptr, uint32_t value, uint32_t num ); 参数 ptr 此存储器区块的开始地址 value 要写入存储器的值 num 存储器区块里的字节数量 此功能是否完成,可透过侦测 REG_CMD_READ 是否等于 REG_CMD_WRITE。 指令布局 +0 CMD_MEMSET(0xffffff1b) +4 ptr +8 Value +12 num 范例 将主存储器的第一个 1K 字节写入 0xff: cmd_memset(0, 0xff, 1024); 5.24 CMD_MEMCPY -复制一个存储器区块 C 语言原型 129 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 void cmd_memcpy( uint32_t dest, uint32_t src, uint32_t num ); 参数 dest 目的地存储器区块的地址 src 源头存储器区块的地址 num 要复制的字节数量 此功能是否完成,可透过侦测 REG_CMD_READ 是否等于 REG_CMD_WRITE。 指令布局 +0 CMD_MEMCPY(0xffffff1d) +4 dst +8 src +12 num 范例 从 0 到 0x8000 复制存储器的 1K 字节: cmd_memcpy(0x8000, 0, 1024); 5.25 CMD_BUTTON –绘制一个按钮 C 语言原型 void cmd_button( int16_t x, int16_t y, int16_t w, int16_t h, int16_t font, uint16_t options, const char* s ); 参数 130 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 x 左上角按扭的 x 坐标,以像素为单位 y 左上角按扭 y 坐标,以像素为单位 font 位图句柄,以指定用在按扭标签上的字体。参考 ROM 及 RAM 字体。 options 预设上,按扭是以 3D 效果绘制,值为 0。OPT_FLAT 移除 3D 效果。OPT_FLAT 的值是 256。 s 按扭的标签。必须是一个以 null 字符结束的字符串。也就是 C 语言的’\0’。对 FT800 内置的 ROM 字体,s 里的有效字符是可打印的 ASCII 代码,也就是从 32 到 127(包含 32 及 123) 。对于定制 的 RAM 字体,s 里有效字符的 ASCII 代码是从 1 到 127。 描述 更多信息可参考 Co-processor engine widgets physical dimensions 指令布局 +0 CMD_BUTTON(0xffffff0d) +4 X +6 Y +8 W +10 H +12 Font +14 Options +16 S +17 .. .. .. +n 0 范例 一个有较大文字,大小为 140x00 像素的按扭: 131 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 cmd_button(10, "Press!"); 10, C learance N o.: FT D I#349 140, 100, 31, 0, 没有 3D 效果的外观: cmd_button(10, 10, 140, 100, 31, OPT_FLAT, "Press!"); 几个较小的按扭: cmd_button(10, 10, 50, 25, 26, 0, "One"); cmd_button(10, 40, 50, 25, 26, 0, "Two"); cmd_button(10, 70, 50, 25, 26, 0, "Three"); 改变按扭的颜色 cmd_fgcolor(0xb9b900), cmd_button(10, "Banana"); 10, 50, 25, 26, 0, 25, 26, 0, cmd_fgcolor(0xb97300), cmd_button(10, "Orange"); 40, 50, cmd_fgcolor(0xb90007), cmd_button(10, 70, 50, 25, 26, 0, "Cherry"); 132 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.26 CMD_CLOCK –绘制一个针式台钟 C 语言原型 void cmd_clock( int16_t x, int16_t y, int16_t r, uint16_t options, uint16_t h, uint16_t m, uint16_t s, uint16_t ms ); 参数 x 时钟中心的 x 坐标,以像素为单位 y 时钟中心的 y 坐标,以像素为单位 options 预设的时钟拨号盘是以一个 3D 效果绘制而这个选项的名称是 OPT_3D。选项 OPT_FLAT 移除此 3D 效果。如果有选项 OPT_NOBACK,不画背景。如果有选项 OPT_NOTICKS,不画 12 小时刻 度。如果有选项 OPT_NOSECS, 不画秒针。如果有选项 OPT_NOHANDS, 不画任何指针。如果 有 OPT_NOHM,不画小时针及分针。 h 小时 m 分钟 s 秒 ms 133 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 毫秒 描述 实体尺寸的详细信息如下: 12 个刻度的标记是放在一个半径为 r*(200/256)的圆上 每个刻度是一个全径为 r*(10/256)的点 秒针长度为 r*(200/256)、宽度为 r*(3/256) 分针长度为 r*(150/256)、宽度为 r*(9/256) 时针长度为 r*(100/256)、宽度为 r*(12/256) 更多信息请参考 Co-processor engine widgets physical dimensions 。 指令布局 +0 CMD_CLOCK(0xffffff14) +4 X +6 Y +8 R +10 Options +12 H +14 M +16 S +18 Ms 范例 一个半径为 50 像素的时钟,显示时间为 8 点 15 分: cmd_clock(80, 60, 50, 0, 8, 15, 0, 0); 设定背景颜色 cmd_bgcolor(0x401010); 134 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_clock(80, 60, 50, 0, 8, 15, 0, 0); 没有 3D 效果的外观: cmd_clock(80, 60, 50, OPT_FLAT, 8, 15, 0, 0); 时间的设定部份可以有大的数值。下图设定的小时是(7 x 3600s)而分钟是(38 x 60s),秒是 59。创建出 一个时钟面标示时间为 7 点 38 分 59 秒: cmd_clock( 80, 60, 50, 0, 0, 0, (7 * 3600) + (38 * 60) + 59, 0); 沒有秒針: 135 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_clock(80, 60, 50, OPT_NOSECS, 8, 15, 0, 0); 沒有背景: cmd_clock(80, 60, 50, OPT_NOBACK, 8, 15, 0, 0); 沒有刻度: cmd_clock(80, 60, 50, OPT_NOTICKS, 8, 15, 0, 0); 沒有指針: 136 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_clock(80, 60, 50, OPT_NOHANDS, 8, 15, 0, 0); 5.27 CMD_FGCOLOR - 设定前景颜色 C 语言原型 void cmd_fgcolor( uint32_t c ); 参数 c 新的前景颜色,格式是一个 24-bit RGB 数字。红色是最高位 8 bits,蓝色是最低位 8 bits。所以 0xff0000 是亮红色。前景颜色可以应用在使用者可以移动的物件,例如把手及按扭。(设计上的 “能供性”)。 指令布局 +0 CMD_FGCOLOR(0xffffff0a) +4 C 范例 最上面的卷动条使用预设的前景颜色,其他则使用改变过的颜色: cmd_scrollbar(20, 30, 120, 8, 0, 10, 40, 100); 137 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_fgcolor(0x703800); cmd_scrollbar(20, 60, 120, 8, 0, 30, 40, 100); cmd_fgcolor(0x387000); cmd_scrollbar(20, 90, 120, 8, 0, 50, 40, 100); 5.28 CMD_BGCOLOR -设定背景颜色 C 语言原型 void cmd_bgcolor( uint32_t c ); 参数 c 新的背景颜色,格式是一个 24-bit RGB 数字。红色是最高位 8 bits,蓝色是最低位 8 bits。所以 0xff0000 是亮红色。背景颜色可以应用在使用者不能移动的物件,例如仪表后及滑块后。 指令布局 +0 CMD_BGCOLOR(0xffffff09) +4 C 范例 最上面的卷动条使用预设的背景颜色,其他则使用改变过的颜色: cmd_scrollbar(20, 30, 120, 8, 0, 10, 40, 100); cmd_bgcolor(0x402000); 138 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_scrollbar(20, 60, 120, 8, 0, 30, 40, 100); cmd_bgcolor(0x202020); cmd_scrollbar(20, 90, 120, 8, 0, 50, 40, 100); 5.29 CMD_GRADCOLOR -设定 3D 按键上强调显示的颜色 C 语言原型 void cmd_gradcolor( uint32_t c ); 参数 c 新的强调梯度颜色,格式是一个 24-bit RGB 数字。红色是最高位 8 bits,蓝色是最低位 8 bits。 所以 0xff0000 是亮红色。 梯度效果只可供按扭及按键小工具支持。 指令布局 +0 CMD_GRADCOLOR(0xffffff34) +4 C 范例 改变梯度颜色: 白色 (预设), 红色, 绿色,及蓝色 cmd_fgcolor(0x101010); cmd_button( 2, 2, 76, 56, 31, 0, "W"); 139 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_gradcolor(0xff0000); cmd_button( 82, 2, 76, 56, 31, 0, "R"); cmd_gradcolor(0x00ff00); cmd_button( 2, 62, 76, 56, 31, 0, "G"); cmd_gradcolor(0x0000ff); cmd_button( 82, 62, 76, 56, 31, 0, "B"); 梯度颜色也可以供按键使用: cmd_fgcolor(0x101010); cmd_keys(10, 10, 140, 30, 26, 0, "abcde"); cmd_gradcolor(0xff0000); cmd_keys(10, 50, 140, 30, 26, 0, "fghij"); 5.30 CMD_GAUGE –绘制一个仪表 C 语言原型 void cmd_gauge( int16_t x, int16_t y, int16_t r, uint16_t options, 140 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 uint16_t major, uint16_t minor, uint16_t val, uint16_t range ); 参数 x 仪表中心的 x 坐标,以像素为单位 y 仪表中心的 y 坐标,以像素为单位 r 仪表半径,以像素为单位 options 预设的时钟拨号盘是以一个 3D 效果绘制而这个选项的值为 0。选项 OPT_FLAT 移除此 3D 效果。 如果有选项 OPT_NOBACK,不画背景。如果有选项 OPT_NOTICKS,不画 12 小时刻度。如果有 选项 OPT_NOPOINTER, 不画指针。 major 拨号盘上的大刻度区间数量,范围 1-10 minor 拨号盘上的小刻度区间数量,范围 1-10 val 仪表指示的值,介于 0 到 range 值之间,包含 range 值。 range 最大值 描述 实体尺寸的细节: 刻度标记放置在一个 270 度的圆弧上,以顺时针方向从西南方位置开始 小刻度线宽 r*(2/256),大刻度 r*(6/256) 刻度间距介于 r*(190/256)到 r*(200/256)之间 指针线宽为 r*(4/256),长度为从中心点开始算 r*(190/256)的长度 线的另一端与指针方向成 90 度垂直,离中心 r*(3/256)的距离。 更多信息可参考 Co-processor engine widgets physical dimensions 指令布局 141 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +0 CMD_GAUGE(0xffffff13) +4 X +6 Y +8 R +10 Options +12 Major +14 Minor +16 Value +18 Range C learance N o.: FT D I#349 范例 一个半径为 50 像素的仪表,5 个大刻度区间,每个大刻度区间里有 4 个小刻度区间,图中指示为 30%: cmd_gauge(80, 60, 50, 0, 5, 4, 30, 100); 没有 3D 效果的外观: cmd_gauge(80, 60, 50, OPT_FLAT, 5, 4, 30, 100); 142 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 10 个大刻度区间,每个大刻度区间有 2 个小刻度区间: cmd_gauge(80, 60, 50, 0, 10, 2, 30, 100); 设定小刻度区间为 1,使其没有小刻度区间: cmd_gauge(80, 60, 50, 0, 10, 1, 30, 100); 设定大刻度区间为 1,则会只有小刻度区间: cmd_gauge(80, 60, 50, 0, 1, 10, 30, 100); 143 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 一个褐色背景、较小的仪表: cmd_bgcolor(0x402000); cmd_gauge(80, 60, 25, 0, 5, 4, 30, 100); 数值范围 0-1000,下图指示结果为 1000: cmd_gauge(80, 60, 50, 0, 5, 2, 1000, 1000); 数值范围 0-65535,下图指示为 49152: cmd_gauge(80, 60, 50, 0, 4, 4, 49152, 65535); 144 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 没有背景: cmd_gauge(80, 60, 50, OPT_NOBACK, 4, 4, 49152, 65535); 没有刻度遮盖: cmd_gauge(80, 60, 50, OPT_NOTICKS, 4, 4, 49152, 65535); 没有指针: cmd_gauge(80,60, 50, OPT_NOPOINTER, 4, 4, 49152, 65535); 145 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 使用两次指令的方式画仪表,以亮红色为指针颜色: GAUGE_0 = OPT_NOPOINTER; GAUGE_1 = OPT_NOBACK | OPT_NOTICKS; cmd_gauge(80, 60, 50, GAUGE_0, 4, 4, 49152, 65535); cmd(COLOR_RGB(255, 0, 0)); cmd_gauge(80, 60, 50, GAUGE_1, 4, 4, 49152, 65535); 增加一个定制的图形到仪表:先画背景,再画一个位图,然后再加上前景: GAUGE_0 = OPT_NOTICKS; OPT_NOPOINTER | GAUGE_1 = OPT_NOBACK; cmd_gauge(80, 60, 50, GAUGE_0, 4, 4, 49152, 65535); cmd(COLOR_RGB(130, 130, 130)); cmd(BEGIN(BITMAPS)); cmd(VERTEX2II(80 - 32, 60 -32, 0, 0)); cmd(COLOR_RGB(255, 255, 255)); cmd_gauge(80, 60, 50, GAUGE_1, 4, 4, 49152, 65535); 146 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.31 CMD_GRADIENT –绘制一个平滑的颜色梯度 C 语言原型 void cmd_gradient( int16_t x0, int16_t y0, uint32_t rgb0, int16_t x1, int16_t y1, uint32_t rgb1 ); 参数 x0 指针 0 的 x 坐标,以像素为单位 y0 指针 0 的 y 坐标,以像素为单位 rgb0 指针 0 的颜色,格式是一个 24-bit RGB 数字。红色是最高位 8 bits,蓝色是最低位 8 bits。所以 0xff0000 是亮红色。 x1 指针 1 的 x 坐标,以像素为单位 y1 指针 1 的 y 坐标,以像素为单位 rgb1 147 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 指针 1 的颜色 描述 所有颜色的步进值是依据从 RGB0 到 RGB1 参数的内插平滑曲线。此平滑曲线公式是独立的计算三种颜色, 此公式为 R0 + t * (R1 - R0),t 是介于 0 到 1 之间的内插。梯度功能必须与剪刀功能一起用以得到想要 的梯度显示效果。 指令布局 +0 CMD_GRAGIENT(0xffffff0b) +4 X0 +6 Yo +8 RGB0 +12 X1 +14 Y1 +16 RGB1 范例 一个从蓝到红的水平梯度 cmd_gradient(0, 0xff0000); 0, 0x0000ff, 160, 0, 一个垂直梯度 148 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 cmd_gradient(0, 0x80ff40); 0, C learance N o.: FT D I#349 0x808080, 0, 120, 对角线梯度里一样的颜色 cmd_gradient(0, 0, 0x808080, 160, 120, 0x80ff40); 使用一个剪刀矩形画一个梯度条纹当作一个标题的 背景: cmd(SCISSOR_XY(20, 40)); cmd(SCISSOR_SIZE(120, 32)); cmd_gradient(20, 0x404080); 0, 0x606060, 140, 0, cmd_text(23, 40, 29, 0, "Heading 1"); 5.32 CMD_KEYS –绘制一行按键 149 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 C 语言原型 void cmd_keys( int16_t x, int16_t y, int16_t w, int16_t h, int16_t font, uint16_t options, const char* s ); 参数 x 按键左上角的 x 坐标,以像素为单位 y 按键左上角的 y 坐标,以像素为单位 font 指示用在按键标签字体的位图句柄。有效范围是从 0 到 31 options 预设上,按键是以 3D 效果 绘制而此选项的值 为 0 。OPT_FLAT 移除此 3D 效果。如果有 OPT_CENTER,按键们会以最小尺寸集中画在在 w x h 矩形里。否则,按键们会展开到全部填满 可用的空间。如果有指定一个 ASCII 代码,按键会画成’按著的状态’。也就是说,移除任何背景颜 色的 3D 效果。 w 按键的宽度 h 按键的高度 s 按键标签,一个按键一个字符。TAG 值是设定到每个按键的 ASCII 值,所以可以利用寄存器 REG_TOUCH_TAG 侦测按键有无按下。 150 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 描述 实体尺寸的详细信息为: 按键之间的空隙是 3 个像素。 对于 OPT_CENTERX 的情况来说,按键是(字体宽 + 1.5)像素宽,否则按键会以填满可用宽度的 方式决定尺寸。 更多信息可参考 Co-processor engine widgets physical dimensions。 指令布局 +0 CMD_KEYS(0xffffff0e) +4 X +6 Y +8 W +10 H +12 Font +14 Options +16 S .. .. +n 0 范例 一行按键: cmd_keys(10, 10, 140, 30, 26, 0, "12345"); 没有 3D 效果的外观: 151 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_keys(10, 10, 140, 30, 26, OPT_FLAT, "12345"); 预设 vs. 集中: cmd_keys(10, 10, 140, 30, 26, 0, "12345"); cmd_keys(10, 60, 140, OPT_CENTER, "12345"); 30, 26, 26, 0x32, 设定选项以使按键’2’呈现’按著的状态’(‘2’是 ASCII 代码 0x32): cmd_keys(10, "12345"); 10, 140, 30, 使用字体 29 的计算机风格键盘: cmd_keys(22, 1, 116, 28, 29, 0, "789"); cmd_keys(22, 31, 116, 28, 29, 0, "456"); 152 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_keys(22, 61, 116, 28, 29, 0, "123"); cmd_keys(22, 91, 116, 28, 29, 0, "0."); 一个以字体 20 绘制的紧密键盘: cmd_keys(2, 2, 156, 21, 20, OPT_CENTER, "qwertyuiop"); cmd_keys(2, 26, 156, 21, 20, OPT_CENTER, "asdfghijkl"); cmd_keys(2, 50, 156, 21, 20, OPT_CENTER, "zxcvbnm"); cmd_button(2, 74, 156, 21, 20, 0, ""); 使 f(ASCII 0x66)按键表现为按著的状态: k = 0x66; cmd_keys(2, 2, 156, 21, OPT_CENTER, "qwertyuiop"); 20, k | cmd_keys(2, 26, 156, 21, OPT_CENTER, "asdfghijkl"); 20, k | cmd_keys(2, 50, 156, 21, OPT_CENTER, "zxcvbnm"); 20, k | cmd_button(2, 74, 156, 21, 20, 0, ""); 153 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.33 CMD_PROGRESS –绘制一个进度条 C 语言原型 void cmd_progress( int16_t x, int16_t y, int16_t w, int16_t h, uint16_t options, uint16_t val, uint16_t range ); 参数 x 进度条左上角的 x 坐标,以像素为单位 y 进度条左上角的 y 坐标,以像素为单位 w 进度条的宽度,以像素为单位 h 进度条的高度,以像素为单位 options 预设上,进度条是以 3D 效果绘制,而此选项的值为 0。选项 OPT_FLAT 移除此 3D 效果,其值为 256。 val 进度条的显示值,介于 0 到 range 值之间,包含 range 值 range 154 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 最大值 描述 实体尺寸的详细信息为: x,y,w,h 定义进度条的外侧尺寸。条的半径(r)是 min(w,h)/2。 内侧进度条的半径为 r*(7/8) 更多信息请参考 Co-processor engine widgets physical dimensions。 指令布局 +0 CMD_PROGRESS(0xffffff0f) +4 X +6 Y +8 W +10 H +12 options +14 val +16 range 范例 一个显示为 50%完成的进度条: cmd_progress(20, 50, 120, 12, 0, 50, 100); 没有 3D 效果的外观: 155 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_progress(20, 50, 120, 12, OPT_FLAT, 50, 100); 一个 4 像素高的进度条,范围 0-65535,背景为褐色: cmd_bgcolor(0x402000); cmd_progress(20, 50, 120, 4, 0, 9000, 65535); 5.34 CMD_SCROLLBAR –绘制一个卷动条 C 语言原型 void cmd_scrollbar( int16_t x, 156 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 int16_t y, int16_t w, int16_t h, uint16_t options, uint16_t val, uint16_t size, uint16_t range ); 参数 x 卷动条左上角的 x 坐标,单位为像素 y 卷动条左上角的 y 坐标,单位为像素 w 卷动条的宽度,单位为像素。如果宽度大于高度,则卷动条以水平方式绘制 h 卷动条的高度,单位为像素。如果高度大于宽度,则卷动条以垂直方式绘制 options 预设上卷动条是以 3D 效果绘制,而此选项的值为 0。选项 OPT_FLAT 可移除此 3D 效果,其值为 256 val 卷动条的显示值,介于 0 到包含的范围内 range 最大值 描述 更多实体尺寸的信息请参考 CMD_PROGRESS。 指令布局 +0 CMD_SCROLLBAR(0xffffff11) +4 X +6 Y +8 W +10 H 157 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +12 options +14 val +16 Size +18 Range C learance N o.: FT D I#349 范例 一个卷动条,指示 10-50%的范围: cmd_scrollbar(20, 50, 120, 8, 0, 10, 40, 100); 没有 3D 效果的外观: cmd_scrollbar(20, 50, 120, 8, OPT_FLAT, 10, 40, 100); 一个褐色主题的垂直卷动条: 158 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_bgcolor(0x402000); cmd_fgcolor(0x703800); cmd_scrollbar(140, 10, 8, 100, 0, 10, 40, 100); 5.35 CMD_SLIDER – 绘制一个滑块 C 语言原型 void cmd_slider( int16_t x, int16_t y, int16_t w, int16_t h, uint16_t options, uint16_t val, uint16_t range ); 参数 x 滑块左上角的 x 坐标,以像素为单位 y 滑块左上角的 y 坐标,以像素为单位 w 滑块的宽度,以像素为单位。如果宽度大于高度,则滑块以水平方式绘制 159 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 h 滑块的高度,以像素为单位。如果高度大于宽度,则滑块以垂直方式绘制 options 预设上滑块是以 3D 效果绘制。选项 OPT_FLAT 可移除此 3D 效果。 val 滑块的显示值,介于 0 到 range 值之间,包含 range 值。 range 最大值 描述 更多实体尺寸的信息可参考 CMD_PROGRESS。 指令布局 +0 CMD_SLIDER(0xffffff10) +4 X +6 Y +8 W +10 H +12 options +14 val +16 Range 范例 一个设为指示 50%的滑块: cmd_slider(20, 50, 120, 8, 0, 50, 100); 没有 3D 效果的外观: 160 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_slider(20, 50, 120, 8, OPT_FLAT, 50, 100); 一个褐色主题的垂直滑块,范围介于 0 到 65535: cmd_bgcolor(0x402000); cmd_fgcolor(0x703800); cmd_slider(76, 65535); 10, 8, 100, 0, 20000, 5.36 CMD_DIAL –绘制一个旋转拨号控制 C 语言原型 void cmd_dial( int16_t x, int16_t y, int16_t r, uint16_t options, 161 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 uint16_t val ); 参数 x 拨号盘中心的 x 坐标,以像素为单位 y 拨号盘中心的 y 坐标,以像素为单位 r 拨号盘的半径,以像素为半径 Options 预设上拨号盘是以 3D 效果绘制,而此选项的值为 0。选项 OPT_FLAT 可移除此 3D 效果,其值为 256 val 透过介于 0 到 65535(包含 65535)的设定值,指定拨号点的位置。0 表示拨号点方向往下, 0x4000 表示往左,0x8000 表示往上,0xc000 表示往右。 描述 实体尺寸的预设值为: 标示是一条宽度为 r*(12/256),离中心距离为 r*(140/256)到 r*(210/256)之间的线。 更多信息可参考 Co-processor engine widgets physical dimensions 指令布局 +0 CMD_DIAL(0xffffff2d) +4 X +6 Y +8 r +10 options +12 val 范例 一个设为 50%的拨号盘: cmd_dial(80, 60, 55, 0, 0x8000); 162 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 没有 3D 效果的外观: cmd_dial(80, 60, 55, OPT_FLAT, 0x8000); 拨号盘设定成 0%、33%、及 66%三种指示结果: cmd_dial(28, 60, 24, 0, 0x0000); cmd_text(28, 100, 26, OPT_CENTER, “0%”); cmd_dial(80, 60, 24, 0, 0x5555); cmd_text(80, “33%”); 100, 26, OPT_CENTER, cmd_dial(132, 60, 24, 0, 0xaaaa); cmd_text(132, “66%”); 100, 26, OPT_CENTER, 5.37 CMD_TOGGLE –绘制一个切换开关 163 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 C 语言原型 void cmd_toggle( int16_t x, int16_t y, int16_t w, int16_t font, uint16_t options, uint16_t state, const char* s ); 参数 x 切换开关左上角的 x 坐标,以像素为单位 y 切换开关左上角的 y 坐标,以像素为单位 w 切换开关的宽度,以像素为单位 font 用于文字的字体。参考 ROM 及 RAM 字体 options 预设上切换开关是以 3D 效果绘制,而此选项的值为 0。选项 OPT_FLAT 可移除此 3D 效果,其值 为 256 state 切换开关的状态:0 为关,65535 为开。 S 切换开关的字符串标签。字符值 255(在 C 语言可以写成\xff)可以分开两个标签。 描述 实体尺寸的详细信息为: 外围长条半径是字体高*(20/16) 164 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 旋扭半径是 r-1.5 更多信息请参考 Co-processor engine widgets physical dimensions 指令布局 +0 CMD_TOGGLE(0xffffff12) +4 X +6 Y +8 W +10 Font +12 Options +14 State +16 S .. .. .. 0 范例 使用中型字体,两种状态的结果 cmd_toggle(60, “\xff”“yes”); 20, 33, 27, 0, 0,“no” cmd_toggle(60, 60, 33, 27, 0, 65535, “no” “\xff" “yes”); 没有 3D 效果的外观 cmd_toggle(60, 20, 33, 27, OPT_FLAT, 0, “no” “\xff” “yes”); cmd_toggle(60, 60, 33, 65535, “no” “\xff” “yes”); 27, OPT_FLAT, 165 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 前景与背景使用不同的色彩: cmd_bgcolor(0x402000); cmd_fgcolor(0x703800); cmd_toggle(60, 20, 33, 27, 0, 0, “no” “\xff” “yes”); cmd_toggle(60, 60, 33, 27, 0, 65535, “no” “\xff” “yes”); 5.38 CMD_TEXT – 绘制文字 C 语言原型 void cmd_text( int16_t x, int16_t y, int16_t font, uint16_t options, const char* s ); 参数 166 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 x 文字基底的 x 坐标,以像素为单位 y 文字基底的 y 坐标,以像素为单位 font 文字使用的字体,字体范围 0-31,参考 ROM 和 RAM 字体 options 预设(x,y)是文字左上角的像素,选项的预设值为 0 。选项 OPT_CENTERX 水平集中文字,选项 OPT_CENTERY 垂直集中。OPT_CENTER 则同时针对垂直及水平两个方向集中。OPT_RIGHTX 向右调整像素位置,所以 x 变成最右边的像素。OPT_RIGHTX 的值是 2048。 文字字符串 文字字符串本身应测该要以一个 null 字符结束 指令布局 +0 CMD_TEXT(0xffffff0c) +4 X +6 Y +8 Font +10 Options +12 S .. .. .. 0(null 字符以结束字符串) 范例 在坐标(0,0)的大字体纯文字: cmd_text(0, 0, 31, 0, “Text!”); 167 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 使用小一点的字体: cmd_text(0, 0, 26, 0, “Text!”); 水平集中: cmd_text(80, 60, 31, OPT_CENTERX, “Text!”); 向右调整像素位置: cmd_text(80, 60, 31, OPT_RIGHTX, “Text!”); 168 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 垂直集中: cmd_text(80, 60, 31, OPT_CENTERY, “Text!”); 同时向水平及垂直两个方向集中: cmd_text(80, 60, 31, OPT_CENTER, “Text!”); 169 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.39 CMD_NUMBER – 绘制一个十进位数字 C 语言原型 void cmd_number( int16_t x, int16_t y, int16_t font, uint16_t options, int32_t n ); 参数 x 文字基底的 x 坐标,以像素为单位 y 文字基底的 y 坐标,以像素为单位 font 供文字用的字体,介于 0-31。可参考 ROM 及 RAM 字体 options 预设上,(x,y)是文字左上角的像素。选项 OPT_CENTERX 水平集中文字,选项 OPT_CENTERY 垂直集中。OPT_CENTER 则同时针对垂直及水平两个方向集中。OPT_RIGHTX 向右调整像素位 置,所以 x 变成最右边的像素。预设上数字显示没有前零串,但若在选项里指定一个 1-9 范围的宽 度,则会视需要加上补垫的前零串,以符合给定的宽度。如果有选项 OPT_SIGNED,则数字被视 为有符号的,若值为负,会前缀一个负号。 n 要显示的数字,格式是无符号的或有符号的 32-bit 指令布局 170 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +0 CMD_NUMBER(0xffffff2e) +4 X +6 Y +8 Font +10 Options +12 n C learance N o.: FT D I#349 范例 一个数字: cmd_number(20, 60, 31, 0, 42); 集中: cmd_number(80, 60, 31, OPT_CENTER, 42); 正数与负数的有符号输出: cmd_number(20, 20, 31, OPT_SIGNED, 42); 171 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_number(20, 60, 31, OPT_SIGNED, -42); 强迫宽度成 3 位,位置向右调整 cmd_number(150, 20, 31, OPT_RIGHTX | 3, 42); cmd_number(150, 60, 31, OPT_SIGNED | OPT_RIGHTX | 3, -1); CMD_LOADIDENTI–Y - 设定目前的矩阵成为单位矩阵。 这个指令指示 FT800 的协处理器引擎将目前的矩阵设成单位矩阵,如此协处理器引擎才能依下列指令的要求形 成新的矩阵:MD_SCALE、 CMD_ROTATE、CMD_TRANSL ATE。更多有关单位矩阵的信息,请参考位图变 换矩阵的章节。 C 语言原型 void cmd_loadidentity( ); 指令布局 +0 CMD_LOADIDENTITY(0xffffff26) 5.40 CMD_SETMATRIX-写入目前的矩阵到显示清单 协处理器引擎透藉由产生显示清单指令 BITMAP_TRANSFORM_A-F,分派目前矩阵的值到图形引擎的位 图变换矩阵。在这个指令之后,接著的位图渲染操作会被新的变换矩阵影响。 172 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 C 语言原型 void cmd_setmatrix( ); 指令布局 +0 CMD_SETMATRIX(0xffffff2a) Parameter 无 5.41 CMD_GETMATRIX -检索目前的矩阵系数 要在协处理器引擎的上下文检索目前的矩阵。请注意,协处理器引擎的上下文里目前的矩阵不会应用到位 图变换,直到目前的矩阵透过 CMD_SETMATRIX 通过图形引擎。 C 语言原型 void cmd_getmatrix( int32_t a, int32_t b, int32_t c, int32_t d, int32_t e, int32_t f ); 参数 a 输出参数;以矩阵系数 a 写入。格式请参考指令 BITMAP_TRANSFORM_A 的参数 a。 b 输出参数;以矩阵系数 b 写入。格式请参考指令 BITMAP_TRANSFORM_B 的参数 b。 c 输出参数;以矩阵系数 c 写入。格式请参考指令 BITMAP_TRANSFORM_C 的参数 c。 d 输出参数;以矩阵系数 d 写入。格式请参考指令 BITMAP_TRANSFORM_D 的参数 d。 e 输出参数;以矩阵系数 e 写入。格式请参考指令 BITMAP_TRANSFORM_E 的参数 e。 f 输出参数;以矩阵系数 f 写入。格式请参考指令 BITMAP_TRANSFORM_F 的参数 f。 173 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 指令布局 +0 CMD_GETMATRIX(0xffffff33) +4 A +8 B +12 C +16 D +20 E +24 F 5.42 CMD_GETPTR –取得解压缩数据的结束存储器地址 C 语言原型 void cmd_getptr( uint32_t result ); 174 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 参数 result CMD_INFLATE 解压缩数据的结束地址。 解压缩数据开始地址,由 CMD_INFLATE 指令指定,而解压缩数据的结束地址也可以利用这个指令取得。 这是一个输出的参数,可被 CMD_GETPTR 指令输入到 RAM_CMD。 指令布局 +0 CMD_GETPTR (0xffffff23) +4 result 范例 cmd_inflate(1000);//解压缩数据到 RAM_G + 1000 ......//接著zlib压缩数据 While(rd16(REG_CMD_WRITE)!= rd16(REG_CMD_READ));//等待直到压缩完成 uint16_t x = rd16(REG_CMD_WRITE); uint32_t ending_address =0; cmd_getptr(0); ending_address = rd32(RAM_CMD + x +4); 源代码片段 13 CMD_GETPTR 指令范例 175 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.43 CMD_GETPROPS -取得 CMD_LOADIMAGE 解压缩的影像特性 C 语言原型 void cmd_getprops( uint32_t &ptr, uint32_t &width, uint32_t &height); 参数 ptr 在 RAM_G 里,由这个指令之前最后一个 CMD_LOADIMAGE 指令解压缩影像的地址。这是一个输出参数。 width 由这个指令之前最后一个 CMD_LOADIMAGE 指令解压缩影像的宽度。这是一个输出参数。 height 由这个指令之前最后一个 CMD_LOADIMAGE 指令解压缩影像的宽度。这是一个输出参数。 指令布局 +0 CMD_GETPROPS (0xffffff25) +4 ptr +8 width +12 Height 描述 这个指令用来检索 CMD_LOADIMAGE 解压缩影像的属性。当这个指令成功执行之后,所有参数会被一一输出。 范例 请参考 CMD_GETPTR 5.44 CMD_SCALE –对目前的矩阵做一个缩放 C 语言原型 void cmd_scale( int32_t sx, int32_t sy ); 参数 sx x 坐标缩放因子,形式是有符号的 16.16 bit 定点 sy y 坐标缩放因子,形式是有符号的 16.16 bit 定点 指令布局 176 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +0 CMD_SCALE(0xffffff28) +4 sx +8 sy C learance N o.: FT D I#349 范例 将一个位图放大成 2X: cmd(BEGIN(BITMAPS)); cmd_loadidentity(); cmd_scale(2 * 65536, 2 * 65536); cmd_setmatrix(); cmd(VERTEX2II(68, 28, 0, 0)); 在一个位图中心点放大成 2X: cmd(BEGIN(BITMAPS)); cmd_loadidentity(); cmd_translate(65536 * 32, 65536 * 32); cmd_scale(2 * 65536, 2 * 65536); cmd_translate(65536 * -32, 65536 * -32); cmd_setmatrix(); cmd(VERTEX2II(68, 28, 0, 0)); 177 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.45 CMD_ROTATE -将目前矩阵做旋转 C 语言原型 void cmd_rotate( int32_t a ); 参数 a 顺时针旋转角度, 单位为(360/65536)度 指令布局 +0 CMD_ROTATE(0xffffff29) +4 a 范例 以位图左上角为准,顺时针旋转位图 10 度: cmd(BEGIN(BITMAPS)); cmd_loadidentity(); cmd_rotate(10 * 65536 / 360); cmd_setmatrix(); cmd(VERTEX2II(68, 28, 0, 0)); 以位图左上角为准,逆时针旋转位图 33 度: cmd(BEGIN(BITMAPS)); cmd_loadidentity(); cmd_rotate(-33 * 65536 / 360); cmd_setmatrix(); cmd(VERTEX2II(68, 28, 0, 0)); 178 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 旋转一个 64 x 64 位图,以其中心为准: cmd(BEGIN(BITMAPS)); cmd_loadidentity(); cmd_translate(65536 * 32, 65536 * 32); cmd_rotate(90 * 65536 / 360); cmd_translate(65536 * -32, 65536 * -32); cmd_setmatrix(); cmd(VERTEX2II(68, 28, 0, 0)); 5.46 CMD_TRANSLATE -将目前矩阵做一个转移 C 语言原型 void cmd_translate( int32_t tx, int32_t ty ); 参数 tx x 坐标转移因子,形式为有符号的 16.16 bit 定点。 ty y 坐标转移因子,形式为有符号的 16.16 bit 定点。 指令布局 +0 CMD_TRANSLATE(0xffffff27) +4 Tx +8 Ty 范例 将一个位图向右转移 20 个像素: 179 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd(BEGIN(BITMAPS)); cmd_loadidentity(); cmd_translate(20 * 65536, 0); cmd_setmatrix(); cmd(VERTEX2II(68, 28, 0, 0)); 将一个位图向左转移 20 个像素: cmd(BEGIN(BITMAPS)); cmd_loadidentity(); cmd_translate(-20 * 65536, 0); cmd_setmatrix(); cmd(VERTEX2II(68, 28, 0, 0)); 5.47 CMD_CALIBRATE -执行一个触屏校正的例行工作 校正的程序从屏幕收集三个触摸点,然后计算并载入一个适当的矩阵到 REG_TOUCH_TRANSFORM_A-F。为 了使用它,创建一个显示清单然后使用 CMD_CALIBRATE。协处理器引擎叠加触摸目标到目前的显示清单上, 收集校正的输入并更新 REG_TOUCH_TRANSFORM_A-F。 C 语言原型 void cmd_calibrate( uint32_t result ); 参数 result 输出参数;若是失败的校正,会写入 0。 此功能是否完成,可透过侦测 REG_CMD_READ 是否等于 REG_CMD_WRITE。 指令布局 180 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +0 CMD_CALIBRATE(0xffffff15) +4 result C learance N o.: FT D I#349 范例 cmd_dlstart(); cmd(CLEAR(1,1,1)); cmd_text(80,30,27, OPT_CENTER,"Please tap on the dot"); cmd_calibrate(); 源代码片段 14 CMD_CALIBRATE 范例 5.48 CMD_SPINNER – 开始一个动态转盘 转盘是一个动态的叠加,可向使用者表现某个任务仍在继续。要触发转盘,要创建一个显示清单然后用指令 CMD_SPINNER。协处理理器引擎叠加转盘到目前的显示清单上,交换显示清单使其变为可视,然后动画会一直 持续到 CMD_STOP。REG_MACRO_0 及 REG_MACRO_1 寄存器可用于表示动画类的效果。点移动的频率是 依据配置的显示帧而定。 通常,480x272 显示屏幕的显示速率大约是 60fps。风格 0 且速率 60fps,点会在 2 秒内一直重覆序列。风格 1 且速率 60fps,点会在 1.25 秒内一直重覆序列。风格 2 且速率 60fps,时钟指针会在 2 秒内一直重覆序列。 风格 3 且速率 60fps,移动点会在 1 秒内一直重覆序列。 注意,在一个时间点,CMD_SKETCH、CMD_SCREENSAVER、或 CMD_SPINNER 这三个指令只能有一个有 作用。 C 语言原型 void cmd_spinner( int16_t x, int16_t y, uint16_t style, uint16_t scale ); 指令布局 +0 CMD_SPINNER(0xffffff16) 181 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +4 X +6 Y +8 Style +10 Scale C learance N o.: FT D I#349 参数 X 转盘左上角的 x 坐标 Y 转盘左上角的 y 坐标 Style 转盘的风格。有效范围是从 0 到 3。 Scale 转盘的缩放系数。0 表示没有缩放。 范例 创建一个显示清单,然后开始转盘效果: cmd_dlstart(); cmd(CLEAR(1,1,1)); cmd_text(80, 30, 27, OPT_CENTER, "Please wait..."); cmd_spinner(80, 60, 0, 0); 转盘风格 0,点绕成的圆: 182 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_spinner(80, 60, 0, 0); 风格 1,点构成的线: cmd_spinner(80, 60, 1, 0); 风格 2,一个转动的时钟指针: cmd_spinner(80, 60, 2, 0); 风格 3,两个点绕轨运行: 183 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 cmd_spinner(80, 60, 3, 0); 半屏幕,缩放 1: cmd_spinner(80, 60, 0, 1); 全屏幕,缩放 2: cmd_spinner(80, 60, 0, 2); 184 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.49 CMD_SCREENSAVER -开始一个动态屏幕保护程序 在屏幕保护指令后,协处理器引擎持续地以 VERTEX2F 指令将变化中的(x,y)坐标更新到寄存器 REG_MACRO_0。这会使得位图在屏幕上绕转,而不用任何 MCU 的工作。CMD_STOP 指令停止这个更 新过程。 注意,在一个时间点,CMD_SKETCH、CMD_SCREENSAVER、或 CMD_SPINNER 这三个指令只能有 一个有作用。 C 语言原型 void cmd_screensaver( ); 描述 REG_MACRO_0 是 依 据 显 示 帧 的 频 率 更 新 ( 取 决 于 显 示 寄 存 器 的 配 置 ) 。 通 常 地 , 对 于 480x272 大小的显示器,帧速率大约是每秒 60 个帧。 指令布局 +0 CMD_SCREENSAVER(0xffffff2f) 范例 要开始屏幕保护,用 MACRO 指令创建一个显示清单 - 协处理器引擎会持续更新: cmd_screensaver(); cmd(BITMAP_SOURCE(0)); cmd(BITMAP_LAYOUT(RGB565,128,64)); cmd(BITMAP_SIZE(NEAREST,BORDER,BORDER,40,30)); cmd(BEGIN(BITMAPS)); cmd(MACRO(0)); cmd(DISPLAY()); 源代码片段 15 CMD_SCREENSAVER 范例 这是结果: 185 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.50 CMD_SKETCH -开始一个连续草图更新 执行素描指令后,协处理器引擎会持续地取样触摸输入然后根据触摸的(x,y)坐标,将像素描绘到位图。这表示不 需要任何 MCU 的工作,使用者的触摸输入即可描绘到位图里。CMD_STOP 指令可停止这个素描过程。 注意,在一个时间点,CMD_SKETCH、CMD_SCREENSAVER、或 CMD_SPINNER 这三个指令只能有一个有 作用。 这个指令可以应用在 FT800 及 FT801。建议使用者使用 CMD_SKETCH 指令,因为已经针对电容式触摸作了 最佳化。 C 语言原型 void cmd_sketch( int16_t x, int16_t y, uint16_t w, uint16_t h, uint32_t ptr, uint16_t format ); 参数 x 素描区域左上角的 x 坐标,以像素为单位 y 素描区域左上角的 y 坐标,以像素为单位 w 素描区域的宽度,以像素为单位 h 素描区域的高度,以像素为单位 ptr 素描位图的基底地址 format 素描位图的格式,亦或是 L1 或是 L8 描述 请注意在图形存储器里,位图数据的更新频率是决定于 FT800 的内置电路 - 模数转换器的取样频率,此取样 频率可以达到 1000 赫兹。 指令布局 +0 CMD_SKETCH(0xffffff30) 186 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +4 X +6 Y +8 W +10 H +12 Ptr +16 Format C learance N o.: FT D I#349 范例 开始素描到一个 480x272 L1 位图里: cmd_memzero(0,480*272/8); cmd_sketch(0,0,480,272,0, L1); //然后显示位图 cmd(BITMAP_SOURCE(0)); cmd(BITMAP_LAYOUT(L1,60,272)); cmd(BITMAP_SIZE(NEAREST, BORDER, BORDER,480,272)); cmd(BEGIN(BITMAPS)); cmd(VERTEX2II(0,0,0,0)); //最后,停止素描更新 cmd_stop(); 源代码片段 16 CMD_SKETCH EXAMPLE 5.51 CMD_STOP -停止任何动态转盘、屏幕保护、草图 这个指令是用来通知协处理器引擎停止由 CMD_SKETCH、CMD_SPINNER、或 CMD_SCREENSAVER 触发 的周期性操作。 C 语言原型 void cmd_stop( ); 指令布局 +0 CMD_STOP(0xffffff17) 参数 无 描述 对于指令 CMD_SPINNER 及 CMD_SCREENSAVER,寄存器 REG_MACRO_0 及 REG_MACRO_1 会停 止更新。 对于 CMD_SKETCH 及 CMD_CSKETCH,RAM_G 里的位图数据会停止更新。 范例 187 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 参考 CMD_SKETCH,CMD_CSKETCH、CMD_SPINNER、CMD_SCREENSAVER 5.52 CMD_SETFONT -设定一个定制的字体 CMD_SETFONT 是用来注册一个自定义的位图字体到 FT800 的协处理器引擎里。在注册后,FT800 协处理器 引擎就能利用其协处理器指令使用此位图字体。 有关如何建立一个定制的字体,请参考 ROM 及 RAM 字体。 C 语言原型 void cmd_setfont( uint32_t font, uint32_t ptr ); 指令布局 +0 CMD_SETFONT(0xffffff2b) +4 font +8 ptr 参数 font 从 0 到 14 的位图句柄。位图句柄 15 可以持续地使用。请参考 4.6 节 ptr 在 RAM 的度量区块地址。要求对齐到 4 字节的整数。 范例 一个合适的字体度量区块已经载入到 RAM 里的地址 1000,要建立起来当作字体 7,与物件一起使用: cmd_setfont(7,1000); cmd_button(20,20, 120,40, 7, 0, "customfont!"); // x,y //宽度、高度,单位为像素 // 字体7,刚载入 // 预设选项,3D风格 源代码片段 17 CMD_SETFONT 188 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 5.53 CMD_TRACK -追踪触摸以供图形物件使用 这个指令能使协处理器引擎分派一个标记值追踪特定图形物件的触摸。然后,协处理器引擎会周期性以 LCD 显 示板的帧速率更新寄存器 REG_TRACKER。 协处理器引擎以旋转追踪模式及线性追踪模式追踪图形物件: 旋转追踪模式 - 追踪触摸点与标记值指的图形物件中心点之间的角度。其值是一个 360 度圆的 1/65536 。以中心点为准,0 表示角度往下,0x4000 表示角度往左,0x8000 表示角度往上, 0xC000 表示角度往右。 线性追踪模式 - 如果参数 w 比 h 还大,追踪触摸点到标记值指定图形物件宽度的相对距离。如果参数 w 不比 h 大,追踪触摸点到标记值指定图形物件高度的相对距离。单位是图形物件的宽度或高度的 1/65536。触摸点距离是指从物件左上角像素到触摸点坐标的距离。 C 语言原型 void cmd_track( int16_t x, int16_t y, int16_t w, int16_t h, int16_t tag ); 参数 x 对于线性追踪功能,是指追踪区域左上角的 x 坐标,以像素为单位。 对于旋转追踪功能,是指追踪区域中心点的 x 坐标,以像素为单位。 y 对于线性追踪功能,是指追踪区域左上角的 y 坐标,以像素为单位。 对于旋转追踪功能,是指追踪区域中心点的 y 坐标,以像素为单位。 w 追踪区域的宽度,以像素为单位 h 追踪区域的高度,以像素为单位 请注意: (1,1)的 w 和 h 表示追踪为旋转追踪模式,且会在 REG_TRACKER 回报一个角度值。(0,0)的 w 和 h 关闭协处理器引擎的追踪功能。 tag 要追踪的图形物件标记, 范围是 1-255 189 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 指令布局 +0 CMD_TRACK(0xffffff2c) +4 X +6 Y +8 W +10 h +12 tag 范例 一个尺寸 40x12 像素矩形的水平追踪,而目前的触摸是在 50%: dl( CLEAR_COLOR_RGB(5, 45, 110) ); dl( COLOR_RGB(255, 168, 64) ); dl( CLEAR(1 ,1 ,1) ); dl( BEGIN(RECTS) ); dl( VERTEX2F(60 * 16,50 * 16) ); dl( VERTEX2F(100 * 16,62 * 16) ); dl( COLOR_RGB(255, 0, 0) ); dl( VERTEX2F(60 * 16,50 * 16) ); dl( VERTEX2F(80 * 16,62 * 16) ); dl( COLOR_MASK(0 ,0 ,0 ,0) ); dl( TAG(1) ); dl( VERTEX2F(60 * 16,50 * 16) ); dl( VERTEX2F(100 * 16,62 * 16) ); cmd_track(60 * 16, 50 * 16, 40, 12, 1); 190 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 一个尺寸 12x40 像素矩形的垂直追踪,而目前的触摸是在 50%: dl( CLEAR_COLOR_RGB(5, 45, 110) ); dl( COLOR_RGB(255, 168, 64) ); dl( CLEAR(1 ,1 ,1) ); dl( BEGIN(RECTS) ); dl( VERTEX2F(70 * 16,40 * 16) ); dl( VERTEX2F(82 * 16,80 * 16) ); dl( COLOR_RGB(255, 0, 0) ); dl( VERTEX2F(70 * 16,40 * 16) ); dl( VERTEX2F(82 * 16,60 * 16) ); dl( COLOR_MASK(0 ,0 ,0 ,0) ); dl( TAG(1) ); dl( VERTEX2F(70 * 16,40 * 16) ); dl( VERTEX2F(82 * 16,80 * 16) ); cmd_track(70 * 16, 40 * 16, 12, 40, 1); 以(80,60) 的显示位置为中心的圆形追踪 dl( CLEAR_COLOR_RGB(5, 45, 110) ); dl( COLOR_RGB(255, 168, 64) ); dl( CLEAR(1 ,1 ,1) ); dl( TAG(1) ); dl( BEGIN(POINTS) ); dl( POINT_SIZE(20 * 16) ); dl( VERTEX2F(80 * 16, 60 * 16) ); cmd_track(80 * 16, 60 * 16, 1, 1, 1); 绘制一个标记 33、中心点在(80, 60)的拨号盘,可用触摸调整: uint16_t angle = 0x8000; cmd_track(80, 60, 1, 1, 33); while (1) { ... cmd(TAG(33)); cmd_dial(80, 60, 55, 0, angle); ... 191 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 uint32_t tracker = rd32(REG_TRACKER); if ((tracker & 0xff) == 33) angle = trackeI> 16; ... } 创建一个标记 34 的可调整滑块: uint16_t val = 0x8000; cmd_track(20, 50, 120, 8, 34); Ile (1) { ... cmd(TAG(34)); cmd_slider(20, 50, 120, 8, val, 65535); ... uint32_t tracker = rd32(REG_TRACKER); if ((tracker & 0xff) == 33) val = tracker >> 16; ... } – 5.54 CMD_SNAPSHOT -对目前的屏幕截图 这个指令使协处理器引擎针目前的屏幕截图,然后将结果写入 RAM_G,当作一个 ARGB4 的位图。这个位图的 尺寸是屏幕的尺寸,值由寄存器 REG_HSIZE 及 REG_VSIZE 提供。 在截图的过程,要把 REG_PCLK 设定为 0 关闭显示,以避免显示故障。 因为协处理器引擎需要将结果写入目的地址址,目的地址址一定不能被图形引擎使用或是参考。 C 语言原型 void cmd_snapshot( uint32_t ptr ); 参数 ptr 截图的目的地地址,在 RAM_G 里。 指令布局 192 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 +0 CMD_SNAPSHOT(0xffffff1f) +4 ptr C learance N o.: FT D I#349 范例 对目前 160 x 120 屏幕作截图,并在新的显示清单里,当作一个位图使用: wr(REG_PCLK,0);//关闭PCLK wr16(REG_HSIZE,120); wr16(REG_WSIZE,160); cmd_snapshot(0);//载屏 wr(REG_PCLK,5);//开启PCLK wr16(REG_HSIZE,272); wr16(REG_WSIZE,480); cmd_dlstart(); cmd(CLEAR(1,1,1)); cmd(BITMAP_SOURCE(0)); cmd(BITMAP_LAYOUT(ARGB4,2*160,120)); cmd(BITMAP_SIZE(NEAREST, BORDER, BORDER,160,120)); cmd(BEGIN(BITMAPS)); cmd(VERTEX2II(10,10,0,0)); 源代码片段 18 CMD_SNAPSHOT 160X120–屏幕 5.55 CMD_LOGO –播放 FTDI 标志的动画 193 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 标志指令使协处理器引擎播发一个段 FTDI 标志的动画。在标志播放的过程中,MCU 不应该使用任何 FT800 的 资源。在经过 2.5 秒后,协处理器引擎对 REG_CMD_READ 及 REG_CMD_WRITE 写入零,然后等待指令。 在这个指令完成后,MCU 应写入下一个指令到 RAM_CMD 的开始地址。 C 语言原型 void cmd_logo( ); 指令布局 +0 CMD_LOGO(0xffffff31) 范例 播放标志动画: cmd_logo(); delay(3000); // 选择性的等待 While((0!=rd16(REG_CMD_WRITE))&& (rd16(REG_CMD_WRITE)!= rd16(REG_CMD_READ)));//等待直到读出&写入两个指针寄存器都等于零 源代码片段 19 CMD_LOGO 指令范例 194 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 6 FT801 操作 6.1 FT801 介绍 FT800 和 FT801 有完全一样的图形及音频功能集。FT800 芯片的触摸能力是设计给电阻屏上的控制触摸,而 FT801 是给电容触摸并可允许达到 5 个触摸点。然而,FT801 有与 FT800 不一样的触摸引擎及触摸控制寄存 器组。所有名字以 “REG_TOUCH”开头的寄存器已经被分派成新的名字, 叫”REG_CTOUCH”。 6.2 FT801 触控引擎 FT801 有新的电容触屏引擎(CTSE),内置以下功能: 连到电容触屏模组(CTPM)的 I2C 介面 同时可支持 5 个触摸点 与 Focaltech FT5x06 系列或 Azotech IQS5xx 系列驱动芯片支持 CTPM 相容模式和延伸模式 预设上,FT801 触摸引擎工作在相容模式,只能侦测一个触摸点。在延伸模式下,FT801 触摸引擎可以同时侦 测 5 个触摸点。 6.3 FT801 触控寄存器 FT801 已经再次定义 FT800 的触摸寄存器,如下所示: 寄存器定义 76 REG_CTOUCH_MODE 定义 REG_CTOUCH_MODE 定义 保留 读/写 31 地址: 0x1024F0 2 1 0 复位值: 0x3 Bit 0 - 1: 主机可以设定这两个 bits 控制 FT80 触摸引擎的触摸引擎取样模式,如下:00: 关闭模式。 没有取样发生。 01: 无定义。 10: 无定义。 11: 开启模式。 Bit 2 – 31: 保留 195 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 77 REG_CTOUCH_EXTENDED 定 义 REG_CTOUCH_EXTEND 定义 保留 读/写 31 1 地址: 0x1024F4 0 复位值: 0x1 Bit 0:这个 bit 控制 FT801 触摸引擎的侦测模式,如下: 0:延伸模式,多触摸侦测模式,最多可侦测 5 个触摸点 1:相容模式,单触摸侦测模式 寄 存器定义 78 REG_CTOUCH_TOUCH0_XY 定 义 REG_CTOUCH_TOUCH0_XY 定义 只读 31 只读 16 15 地址: 0x102510 0 复位值: 0x80008000 Bit 0 -15:这些 bits 的值是第一个触摸点的 Y 坐标 Bit 16 -31:这些 bits 的值是第一个触摸点的 X 坐标 注意:这个寄存器是可供延伸模式及相容模式应用。对相容模式,这个寄存器反应唯一触控点的位置。 196 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 79 REG_CTOUCH_TOUCH1_XY 定 义 REG_CTOUCH_TOUCH1_XY 定义 只读 只读 31 16 15 地址: 0x102508 0 复位值: 0x80008000 Bit 0 -15:这些 bits 的值是第二个触摸点的 Y 坐标 Bit 16 -31:这些 bits 的值是第二个触摸点的 X 坐标 注意:这个寄存器是只供延伸模式应用。 寄 存器定义 80 REG_CTOUCH_TOUCH2_XY 定 义 REG_CTOUCH_TOUCH2_XY 定义 只读 31 只读 16 15 地址: 0x102574 0 复位值: 0x80008000 Bit 0 -15:这些 bits 的值是第三个触摸点的 Y 坐标 Bit 16 -31:这些 bits 的值是第三个触摸点的 X 坐标 注意:这个寄存器是只供延伸模式应用。 197 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 81 REG_CTOUCH_TOUCH3_XY 定 义 REG_CTOUCH_TOUCH3_XY 定义 只读 只读 31 16 15 地址: 0x102578 0 复位值: 0x80008000 Bit 0 -15:这些 bits 的值是第四个触摸点的 Y 坐标 Bit 16 -31:这些 bits 的值是第四个触摸点的 X 坐标 注意:这个寄存器是只供延伸模式应用。 寄 存器定义 82 REG_CTOUCH_TOUCH4_X 定 义 REG_CTOUCH_TOUCH4_X 定义 只读 只读 31 地址: 0x102538 0 复位值: 0x8000 Bit 0 -15:这些 bits 的值是第五个触摸点的 Y 坐标 注意:这个寄存器是只供延伸模式应用。 198 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 寄 存器定义 83 REG_CTOUCH_TOUCH4_Y 定 义 REG_CTOUCH_TOUCH4_Y 定义 只读 只读 31 0 地址: 0x10250C 复位值: 0x8000 Bit 0 -15:这些 bits 的值是第五个触摸点的 Y 坐标 注意:这个寄存器是只供延伸模式应用。 REG_CTOUCH_TRANSFORM_A 定义 REG_CTOUCH_TRANSFORM_A 与 REG_TOUCH_TRANSFORM_A 有一样的定义。 更多细节请参考 REG_TOUCH_TRANSFORM_A REG_CTOUCH_TRANSFORM_B 定义 REG_CTOUCH_TRANSFORM_B 与 REG_TOUCH_TRANSFORM_B 有一样的定义。 更多细节请参考 REG_TOUCH_TRANSFORM_B REG_CTOUCH_TRANSFORM_C 定义 REG_CTOUCH_TRANSFORM_C 与 REG_TOUCH_TRANSFORM_C 有一样的定义。 更多细节请参考 REG_TOUCH_TRANSFORM_C REG_CTOUCH_TRANSFORM_D 定义 REG_CTOUCH_TRANSFORM_D 与 REG_TOUCH_TRANSFORM_D 有一样的定义。 更多细节请参考 REG_TOUCH_TRANSFORM_D REG_CTOUCH_TRANSFORM_E 定义 REG_CTOUCH_TRANSFORM_E 与 REG_TOUCH_TRANSFORM_E 有一样的定义。 更多细节请参考 REG_TOUCH_TRANSFORM_E REG_CTOUCH_TRANSFORM_F 定义 REG_CTOUCH_TRANSFORM_F 与 REG_TOUCH_TRANSFORM_F 有一样的定义。 更多细节请参考 REG_TOUCH_TRANSFORM_F 注意: 校准应只能在相容模式(预设)下执行,对于电阻式显示板也是如此。 REG_CTOUCH_RAW_XY 定义 199 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 REG_CTOUCH_RAW_XY 定义 只读 31 只读 16 地址: 0x102508 15 0 复位值: 0xFFFFFFFF Bit 0 -15:这些 bits 的值是触摸点的 Y 坐标,但是指经过变换矩阵之前 Bit 16 -31:这些 bits 的值是触摸点的 X 坐标,但是指经过变换矩阵之前 注意:这个寄存器是只供延伸模式应用。 REG_CTOUCH_TAG 定义 这个寄存器在两种模式都可用。在延伸模式,在延伸模式,只有第一个触摸点,也就是 REG_CTOUCH_TOUCH0_XY 可用来询问标记值并以结果更新寄存器。这个寄存器与 REG_TOUCH_TAG 有相 同的定义。 200 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 6.4 C learance N o.: FT D I#349 寄存器概要 表 13 触摸寄存器映射表格 FT801- C Mode FT801 – E Mode Default Value (C Mode) Default Value (Extend Mode) FT800 Default Value Address Bit width REG _ CTO UCH_ EX TEND REG _ CTO UCH_ EX TEND 0x1 0x0 REG _ TO UCH_ ADC_ MO DE 0x01 1058036 4 bytes REG _ CTO UCH_ TO UCH0 _ X Y REG _ CTO UCH_ TO UCH0 _ X Y 0x80008000 0x80008000 REG _ TO UCH_ S CREEN_ X Y 0x80008000 1058064 4 bytes RE G _CT O UCH_RAW _X Y RE G _CT O UCH_T O UCH1_ XY 0xFFFFFFFF 0x80008000 REG _ TO UCH_ RAW_ X Y 0xFFFFFFFF 1058056 4 bytes NA RE G _CT O UCH_T O UCH2_ XY 0x0 0x80008000 REG _ TO UCH_ DIRECT_ X Y 0x0 1058164 4 bytes NA RE G _CT O UCH_T O UCH3_ XY NA 0x80008000 REG _ TO UCH_ DIRECT_ Z1Z2 NA 1058168 4 bytes NA RE G _CT O UCH_T O UCH4_ X 0x0 0x8000 REG _ ANALO G 0x0 1058104 2 bytes NA RE G _CT O UCH_T O UCH4_ Y 0x7FFF 0x8000 REG _ TO UCH_ RZ 0x7FFF 1058060 2 bytes RE G _CT O UCH_T RANS F O RM _A RE G _CT O UCH_T RANS F O RM _A 0x10000 0x10000 RE G _T O UCH_T RANS F O R M _A 0x10000 1058076 4 bytes RE G _CT O UCH_T RANS F O RM _B RE G _CT O UCH_T RANS F O RM _B 0x0 0x0 RE G _T O UCH_T RANS F O R M _B 0x0 1058080 4 bytes RE G _CT O UCH_T RANS F O RM _C RE G _CT O UCH_T RANS F O RM _C 0x0 0x0 RE G _T O UCH_T RANS F O R M _C 0x0 1058084 4 bytes RE G _CT O UCH_T RANS F O RM _D RE G _CT O UCH_T RANS F O RM _D 0x0 0x0 RE G _T O UCH_T RANS F O R M _D 0x0 1058088 4 bytes RE G _CT O UCH_T RANS F O RM _E RE G _CT O UCH_T RANS F O RM _E 0x10000 0x10000 RE G _T O UCH_T RANS F O R M _E 0x10000 1058092 4 bytes RE G _CT O UCH_T RANS F O RM _F RE G _CT O UCH_T RANS F O RM _F 0x0 0x0 RE G _T O UCH_T RANS F O R M _F 0x0 1058096 4 bytes RE G _CT O UCH_T AG 0x0 0x0 RE G _T O UCH_T AG 0x0 1058072 4 bytes RE G _CT O UCH_T AG Note: C Mode: Compatibility Mode, default mode after FT801 reset E Mode: Extented Mode 6.5 校正 CMD_CALIBRATE 启始的校正过程只可用在相容模式。然而,校正过程的结果在相容模式及延伸模式都可应用。 因此,建议使用者在进入延伸模式之前完成校正过程。 在校正过程做好之后,寄存器 REG_CTOUCH_TRANSFORM_A~F 会被更新为变换矩阵的系数 6.6 CMD_CSKETCH–电容式触摸的特定草图 这个指令与 CMD_SKETCH 指令有相同功能,差别在 CMD_CSKETCH 有针对电容式触屏作最佳化。因为电容 式触屏以较低的取样频率 (大约 100 赫兹)报告坐标,相对于电阻式触屏,描述功能以较低的频率作更新。 CMD_CSKETCH 引入了线性内插的演算法,当在绘制输出线条的时候,可以有较平滑的效果。 请注意这个指令不能应用在 FT800 芯片。 201 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 C 语言原型 void cmd_csketch( int16_t x, int16_t y, uint16_t w, uint16_t h, uint32_t ptr, uint16_t format, uint16_t freq); 指令布局 +0 CMD_CSKETCH(0xffffff35) +4 X +6 Y +8 W +10 H +12 Ptr +16 Format +18 Freq 参数 x 素描区域左上角的 x 坐标,以像素为单位 y 素描区域左上角的 y 坐标,以像素为单位 w 素描区域的宽度,以像素为单位 h 素描区域的高度,以像素为单位 ptr 素描位图的基底地址 format 202 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 素描位图的格式,是 L1 或是 L8 freq 超取样的频率,典型值是 1500 以确保线能够平滑地连接。若值为 0 表示没有超取样操作。 描述 这个指令只会对 FT801 芯片有效。FT801 协处理器会以’freq’频率超取样由电容屏报告的坐标,然后以较 平滑的效果形成线条。 范例 参考 CMD_SKETCH 范例 203 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 附录 A –参考文件 1) 2) 3) 4) FT800 Datasheet: DS_FT800_Embedded_Video_Engine OpenGL Reference Manual: The Official Reference Document to OpenGL, Version 1.4 FT801 Datasheet: DS_FT801 Application note of FT800 FT801 Internal Clock Trimming: AN_299_FT800_FT801_Internal_Clock_Trimming 204 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 附录 B –首字母缩略词及缩写 Terms 描述 CS Chip select DL/dl Display list EVE Embedded Video Engine GPIO General Purpose Input/output Hz/KHz/MHz Hertz/Kilo Hertz/Mega Hertz I2C Inter-Integrated Circuit LSB least significant bit MCU Micro controller unit MSB most significant bit OS operating system PWM Pulse-width modulation PWR Power RAM Random access memory RGB Red Blue Green SPI Serial Peripheral Interface USB Universal Serial Bus USB-IF USB Implementers Forum RO Read only fps Frame per second 205 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 附录 C –存储器映射 开始地址 结束地址 尺寸 00 0000h 03 FFFFh 256kB 0C 0000h 0C 0003h 4B 名称 描述 RAM_G 主要图形 RAM ROM_CHIPID FT800 芯片识别及修订信息: Byte [0:1] 芯片 ID: “0800” Byte [2:3] 版本 ID: “0100” FT801 芯片识别及修订信息: Byte [0:1] 芯片 ID: “0801” Byte [2:3] 版本 ID: “0100” 0B B23Ch 0F FFFBh 275 kB ROM_FONT 字体表和位图 0F FFFCh 0F FFFFh 4B ROM_FONT_ADDR 字体表指针地址 10 0000h 10 1FFFh 8 kB RAM_DL 显示清单 RAM 10 2000h 10 23FFh 1 kB RAM_PAL 模板 RAM 10 2400h 10 257Fh 380 B REG_* 寄存器 10 8000 h 10 8FFFh 4 kB RAM_CMD 图形引擎指令缓冲器 1C 2000 h 1C 27FFh 2 kB RAM_SCREENSHOT 截图读出缓冲器 注意 1: 这个表格之外的地址是被保留的,不该做读写动作,除非有另外说明。 注意 2: ROM_CHIPID 从 ROM_FONT 地址空间使用了一部份的阴影地址。 206 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited FT800 Series Programmer Guide (Simplified Chinese) Version 2.0 D oc ument Reference N o.: FT _000793 C learance N o.: FT D I#349 附录 D –修订历史 FT800 Series Programmer Guide (Simplified Chinese) 文件标题: FT_000793 文件参考号码: 放行号码.: FTDI#349 产品页面: http://www.ftdichip.com/FTProducts.htm 文件反馈意见: Send Feedback 修订 修改 日期 0.1 初稿释出 2012-08-01 2.0 增加 FT801 内容 2016-03-23 207 P roduc t Page D oc ument Feedback C opyright © Future Technology D evices I nternational L imited