2024年4月10日发(作者:蓟慧秀)
中文字库芯片GT30L32S4W在emWin图形库中的应用
赵 云
(桂林电器科学研究院有限公司,桂林541004)
摘要:介绍了应用GT30L32S4W字库芯片使emWin图形库支持中文显示的解决方案。在硬件方面介绍了
GT30L32S4W和sTM32F103ZET6的SPI接口电路;在软件方面分析了GT30L32S4W字模的定位算法,以及emWin调
用GT30L32S4W字模显示的方法,并提供了需要增改的文件列表。最后给出该方案应用到检测仪器的实际界面效果,
证明该方案能解决emWin对中文的支持问题,兼容性良好。
关键词:GT3OL32S4w;字库;emWin;STM32F103ZET6
中图分类号:TN27 文献标识码:A
Application of GT30L32S4W in emWin Graphics Library
Zhao Yiln
(Guilin Electrical Equipment Scientific Research Institute Co.,Ltd.,Guilin 541004,China)
Abstract:This paper introduces the solution of the emWin graphics library supporting for Chinese display using GT30L32S4W font chip.
The SPI interface circuit of GT30L32S4W and STM32F103ZET6 is introduced.In the software aspect,the contents are introduced such
as the localization algorithm of GT30L32S4W,the method of emWin calling the GT30L32S4W font display and the file lists need to be
modified.It is proved that the solution can solve the problem of Chinese display of emWin,and it has good compatibility through the prac—
tical application.
Key words:GT30L32S4W;font chip;emWin;STM32F103ZET6
避免额外对Flash的烧录工作,降低使用第三方字库的风
引 言
随着嵌入式系统已渗透入社会生活的很多领域(如电
子消费品、医疗仪器、工业环境),无论是普通消费者还是
险,也不需要占用MCU的R0M空间,用emWin做界面
设计时,可直接调用GT30L32S4W内全部汉字资源,方案
框图如图1所示。
商业用户,都期待更友好的UI界面体验。emWin图形库
是目前广泛应用于嵌入式系统界面开发的中间件,但em—
win中不能直接使用中文,且只提供库文件,不开放源代
码,使通过修改emWin源代码实现中文支持非常困难。
如何在emWin中实现中文界面显示,一直是嵌入式GUI
图1 GT30L32S4W方案框图
设计中关注的问题。
常用的emWin支持中文的方法有两种:
①用emWin提供的fontCvt工具生成特定的C语言
1 GT30L32S4W和STM32F103ZET6的硬件接口
1.1 简述GT30L32S4W
GT30L32S4W为上海高通(GOTOP)发布的字库芯
片,支持国标字符集GB2312(6 763个汉字),支持12×
12、16×16、24×24、32×32四种点阵字型,总线接口为
SPI,封装为S0P8。
该芯片与sTM32F103zET6的接口电路如图2所示,
格式的字库代码,加载在ROM空间供emWin调用,缺点
是需要占用ROM资源。
②用第三方工具生成字库文件,然后拷贝到SD卡或
烧录到Flash芯片,供emWin用文件系统方式调用,但用
Flash需要额外烧录,用SD卡又会拖慢显示速度。
本文的方案把GT30L32S4W字库映射到emWin的
字体显示接口,使emWin支持中文显示。这种方式可以
可以借鉴参考文献[3]给出的SPI时序要求,直接调用
敬请登录网站在线投稿 2015#-g 10期 《平 机 嵌入式系碗应冈》41
曩
一
0 一¨¨。 一一_
鬻舞薯囊囊。囊 叠_≯ 0叠。。
VCC3.3
PA4
SPI1 MISO PA6
SPI1 SCK PA5
SPI1 MOSl Pf~7
STM32F103ZET6
头文件GUI.H和GUI
TYPE.H,把新字体的显示方法
指向GUIPROP
X
DispChar()函数,这部分的_丁作在参
2
3
4
考文献[2]中有论述,具体源代码可以借鉴参考文献[6]。
注意:emWin可以视为是开源的UC/GUI v3.98之后不
GT30L32S4W
GND
开源的高级版本。
图2 STM32F103ZET6和GT30L32S4W硬件SPI1接口电路
2.2高通字库的通用字模的定位算法
GT30L32S4W支持12×12、l6×16、24×24、32×32
STM32的库函数实现GT30L32S4W的SP1读写函数。
1.2 GT30L32S4W连续读出单个汉字字模
这里给出读取以DST为首地址的连续no
bytes个字
_
四种点阵字型,由于参考文献[2]、[3]和[4]给出不同点阵
字型的计算方式不同,使用不方便。这里归纳出一套通用
的字库IC汉字地址计算方法:
If(MSB>一0xA16&&MSB<一0Xa9&&LSB>=0xA1)
Address一((MSB--0xA1)*94+(LSB一0xA1))*FontByte
+BaseAdd;
节的实现方法,读取完成后,字模保存在GUI
DataBuf[ ̄数组,供下一步处理。
void SPI
Read
Cont(u32 Dst,u32 no
一~
匪
Font—
—
bytes){
unsigned long i一0;
FONTCS一0;
—
else if(MSB>:0xB0&&MSB<=0xF7&& LSB>:
0xA1)
SPI1
Writebyte(OxOB);
SPI1
Writebyte((Dst&0xFFFFFF)>>16);
Address一((MSB一0xB0)*94+(LSB一0xA1)+846)*
SPI1
Writebyte((Dst&0x00FFFF)>>8);
FontByte+BaseAdd;
SP[I
Writebyte((Dst&0x0000FF)>>0);
①BaseAdd:一套点阵字体在GT30L32S4W芯片中
的起始地址,例如16×16点阵的起始地址为0x2 C9D0。
②MSB:一个汉字的内部GB2312编码为16位,MSB
表示该汉字GB2312编码的高8位。
③LSB:类似MSB,表示一个汉字GB2312编码的低
SPI1
Writebyte(0xFF);
for(i=0;i<nobytes;i++)
GUI
F0nt
DataBuf[i]:SPI1
Readbyte();
F0NT CS=1;
}
2 GT30L32S4W和emWin的软件接口
2,1 emWin的字库接口
①结构体GUI—pUC—API为emWin的字符编码接
口,emWin通过GUI—UC—SetEncodeNone()函数调用了
需表要示连,一续个 12 48篓 个×个 字2 4T节-汉 节,字 3。2需 ×如要 3图23 点3× 2阵所4 I.J
24
一
该接口,但是emWin图形库不开放源代码,无法直接修改
库文件。对应的方法是打开UCGUI v3.98开源版本中提
供的GUI—UC—EneodeNone.C文件,改写里面的一GetChar—
Code()、
GetCharSize()、
CalcSizeOfChar()、Encode()
一一
共72个字节的存储长度,读取字 M ;: 璧 DF
模的时候需要连续读取72个字
节,保存到一个数组里,再等待下图3 2 2 的汉字
步显示处理。
这4个函数,增加GB2312编码的处理,然后把改动过的
文件加入工程编译,可以使GUI—pUC-API指向改动过的
函数,实现emWin对GB2312汉字的识别。
②emWin的字符显示接口为GUIPROP—DispChar(),
这个函数的功能是获取字符字模,再执行画位图的函数将
字符显示出来,该函数原型在UCGU1 v3.98开源版本的
⑤Address:由MSB和LSB组成的16位GB2312汉字
在字库IC芯片中的字节地址,如图3中汉字“高”的
GB2312码为0xB8DF,拆开MSB就是0xB8,LSB就是
0xDF。表1为GT3OL32s4w的汉字地址表,可以根据该表
将参数代入定位算法得到某个汉字的字模位置。
表1 GT30L32S4W等宽汉字地址表
点阵类型
12×12等宽汉字
1 6×1 6等宽汉字
24×24等宽汉字
32×32等宽汉字
GUIcharP.C文件中。修改的方法是参考GUIPROP—Dis—
起始地址
ox00000
0x2C9DO
0x68190
0xEDF00
存储长度/字节
24
48
72
128
pChar()源代码,改写为GUIPROP
X
DispChar()函数,
在获取字模时先区分英文和汉字,如果为汉字就调用高通
字模定位算法,连续读取一个汉字的字模,然后进行显示
处理。
③加入新字体还需要修改emWin图形库中提供的
42 Microcontrollers&Embedded Systems 2015年第10期 www.mesnet.corn.cll
2024年4月10日发(作者:蓟慧秀)
中文字库芯片GT30L32S4W在emWin图形库中的应用
赵 云
(桂林电器科学研究院有限公司,桂林541004)
摘要:介绍了应用GT30L32S4W字库芯片使emWin图形库支持中文显示的解决方案。在硬件方面介绍了
GT30L32S4W和sTM32F103ZET6的SPI接口电路;在软件方面分析了GT30L32S4W字模的定位算法,以及emWin调
用GT30L32S4W字模显示的方法,并提供了需要增改的文件列表。最后给出该方案应用到检测仪器的实际界面效果,
证明该方案能解决emWin对中文的支持问题,兼容性良好。
关键词:GT3OL32S4w;字库;emWin;STM32F103ZET6
中图分类号:TN27 文献标识码:A
Application of GT30L32S4W in emWin Graphics Library
Zhao Yiln
(Guilin Electrical Equipment Scientific Research Institute Co.,Ltd.,Guilin 541004,China)
Abstract:This paper introduces the solution of the emWin graphics library supporting for Chinese display using GT30L32S4W font chip.
The SPI interface circuit of GT30L32S4W and STM32F103ZET6 is introduced.In the software aspect,the contents are introduced such
as the localization algorithm of GT30L32S4W,the method of emWin calling the GT30L32S4W font display and the file lists need to be
modified.It is proved that the solution can solve the problem of Chinese display of emWin,and it has good compatibility through the prac—
tical application.
Key words:GT30L32S4W;font chip;emWin;STM32F103ZET6
避免额外对Flash的烧录工作,降低使用第三方字库的风
引 言
随着嵌入式系统已渗透入社会生活的很多领域(如电
子消费品、医疗仪器、工业环境),无论是普通消费者还是
险,也不需要占用MCU的R0M空间,用emWin做界面
设计时,可直接调用GT30L32S4W内全部汉字资源,方案
框图如图1所示。
商业用户,都期待更友好的UI界面体验。emWin图形库
是目前广泛应用于嵌入式系统界面开发的中间件,但em—
win中不能直接使用中文,且只提供库文件,不开放源代
码,使通过修改emWin源代码实现中文支持非常困难。
如何在emWin中实现中文界面显示,一直是嵌入式GUI
图1 GT30L32S4W方案框图
设计中关注的问题。
常用的emWin支持中文的方法有两种:
①用emWin提供的fontCvt工具生成特定的C语言
1 GT30L32S4W和STM32F103ZET6的硬件接口
1.1 简述GT30L32S4W
GT30L32S4W为上海高通(GOTOP)发布的字库芯
片,支持国标字符集GB2312(6 763个汉字),支持12×
12、16×16、24×24、32×32四种点阵字型,总线接口为
SPI,封装为S0P8。
该芯片与sTM32F103zET6的接口电路如图2所示,
格式的字库代码,加载在ROM空间供emWin调用,缺点
是需要占用ROM资源。
②用第三方工具生成字库文件,然后拷贝到SD卡或
烧录到Flash芯片,供emWin用文件系统方式调用,但用
Flash需要额外烧录,用SD卡又会拖慢显示速度。
本文的方案把GT30L32S4W字库映射到emWin的
字体显示接口,使emWin支持中文显示。这种方式可以
可以借鉴参考文献[3]给出的SPI时序要求,直接调用
敬请登录网站在线投稿 2015#-g 10期 《平 机 嵌入式系碗应冈》41
曩
一
0 一¨¨。 一一_
鬻舞薯囊囊。囊 叠_≯ 0叠。。
VCC3.3
PA4
SPI1 MISO PA6
SPI1 SCK PA5
SPI1 MOSl Pf~7
STM32F103ZET6
头文件GUI.H和GUI
TYPE.H,把新字体的显示方法
指向GUIPROP
X
DispChar()函数,这部分的_丁作在参
2
3
4
考文献[2]中有论述,具体源代码可以借鉴参考文献[6]。
注意:emWin可以视为是开源的UC/GUI v3.98之后不
GT30L32S4W
GND
开源的高级版本。
图2 STM32F103ZET6和GT30L32S4W硬件SPI1接口电路
2.2高通字库的通用字模的定位算法
GT30L32S4W支持12×12、l6×16、24×24、32×32
STM32的库函数实现GT30L32S4W的SP1读写函数。
1.2 GT30L32S4W连续读出单个汉字字模
这里给出读取以DST为首地址的连续no
bytes个字
_
四种点阵字型,由于参考文献[2]、[3]和[4]给出不同点阵
字型的计算方式不同,使用不方便。这里归纳出一套通用
的字库IC汉字地址计算方法:
If(MSB>一0xA16&&MSB<一0Xa9&&LSB>=0xA1)
Address一((MSB--0xA1)*94+(LSB一0xA1))*FontByte
+BaseAdd;
节的实现方法,读取完成后,字模保存在GUI
DataBuf[ ̄数组,供下一步处理。
void SPI
Read
Cont(u32 Dst,u32 no
一~
匪
Font—
—
bytes){
unsigned long i一0;
FONTCS一0;
—
else if(MSB>:0xB0&&MSB<=0xF7&& LSB>:
0xA1)
SPI1
Writebyte(OxOB);
SPI1
Writebyte((Dst&0xFFFFFF)>>16);
Address一((MSB一0xB0)*94+(LSB一0xA1)+846)*
SPI1
Writebyte((Dst&0x00FFFF)>>8);
FontByte+BaseAdd;
SP[I
Writebyte((Dst&0x0000FF)>>0);
①BaseAdd:一套点阵字体在GT30L32S4W芯片中
的起始地址,例如16×16点阵的起始地址为0x2 C9D0。
②MSB:一个汉字的内部GB2312编码为16位,MSB
表示该汉字GB2312编码的高8位。
③LSB:类似MSB,表示一个汉字GB2312编码的低
SPI1
Writebyte(0xFF);
for(i=0;i<nobytes;i++)
GUI
F0nt
DataBuf[i]:SPI1
Readbyte();
F0NT CS=1;
}
2 GT30L32S4W和emWin的软件接口
2,1 emWin的字库接口
①结构体GUI—pUC—API为emWin的字符编码接
口,emWin通过GUI—UC—SetEncodeNone()函数调用了
需表要示连,一续个 12 48篓 个×个 字2 4T节-汉 节,字 3。2需 ×如要 3图23 点3× 2阵所4 I.J
24
一
该接口,但是emWin图形库不开放源代码,无法直接修改
库文件。对应的方法是打开UCGUI v3.98开源版本中提
供的GUI—UC—EneodeNone.C文件,改写里面的一GetChar—
Code()、
GetCharSize()、
CalcSizeOfChar()、Encode()
一一
共72个字节的存储长度,读取字 M ;: 璧 DF
模的时候需要连续读取72个字
节,保存到一个数组里,再等待下图3 2 2 的汉字
步显示处理。
这4个函数,增加GB2312编码的处理,然后把改动过的
文件加入工程编译,可以使GUI—pUC-API指向改动过的
函数,实现emWin对GB2312汉字的识别。
②emWin的字符显示接口为GUIPROP—DispChar(),
这个函数的功能是获取字符字模,再执行画位图的函数将
字符显示出来,该函数原型在UCGU1 v3.98开源版本的
⑤Address:由MSB和LSB组成的16位GB2312汉字
在字库IC芯片中的字节地址,如图3中汉字“高”的
GB2312码为0xB8DF,拆开MSB就是0xB8,LSB就是
0xDF。表1为GT3OL32s4w的汉字地址表,可以根据该表
将参数代入定位算法得到某个汉字的字模位置。
表1 GT30L32S4W等宽汉字地址表
点阵类型
12×12等宽汉字
1 6×1 6等宽汉字
24×24等宽汉字
32×32等宽汉字
GUIcharP.C文件中。修改的方法是参考GUIPROP—Dis—
起始地址
ox00000
0x2C9DO
0x68190
0xEDF00
存储长度/字节
24
48
72
128
pChar()源代码,改写为GUIPROP
X
DispChar()函数,
在获取字模时先区分英文和汉字,如果为汉字就调用高通
字模定位算法,连续读取一个汉字的字模,然后进行显示
处理。
③加入新字体还需要修改emWin图形库中提供的
42 Microcontrollers&Embedded Systems 2015年第10期 www.mesnet.corn.cll