如何使用采用
SPI Flash
存储中文字符库的方法说明
在嵌入式系统中,有时候需要中文字符来表示我们的某些信息,但是中文?
符库本身占据空间比较大,
因此有时候仅仅对系统中需要的字符进行编码?/p>
其它的则省掉?/p>
但是这样对于编程调用字符时是比较麻烦的,只能一个一个进行调用然户显示。然而,?/p>
时候在比较大的系统中需要很多的中文字符?/p>
如果还是对需要的进行一个个编码将显得非
常费时,此时有必要采用一个字库来完成我们的工作?/p>
在嵌入式系统中,用得比较多的?/p>
GBK2312B
编码的字库(还有一个是
Unicode
编码?/p>
?/p>
编码后得到的是一个字符数组,每一个中文字符对应多个字节(具体字节数看取模的大
小)
?/p>
需要显示某个字符只需取得该字符的
GBK
内码?/p>
然后找到该字符对应数组中的地址?/p>
最后将这个字符对应的所有字节按照预定的格式写入液晶屏即可?/p>
这样操作带来的简便就
是,
你想显示某个字符只需以字符串的格式输入该字符然后调用显示函数就行了?/p>
这时?/p>
个问题出现了?/p>
7
千多个字符编码后得占用多大空间啊?/p>
大概?/p>
200KB
,但是对于现在的
MCU
,本身自带的
rom
就很宝贵,另?/p>
MCU
?/p>
ROM
越大其成本就越高。所以,如果?/p>
200kb
的字库写?/p>
MCU
将不太划算。不将字库存?/p>
MCU
,就得存入另外一种介质中,这种介质可能是
SD
卡,
SPI Flash
。对?/p>
SD
卡我没有
试过,虽然容量大,但据说读取速度比较慢,另外封装较大,占板子面积,感觉适用与大
的系统吧,比?/p>
MP3
;?/p>
SPI flash,
体积小,容量也还可以,我所了解的也?/p>
8M
的,?/p>
能还有更大容量的?/p>
好了?/p>
废话了这么多?/p>
那么本文接下来就绍如何用
SPI flash
做中文字
?/p>
:
第一步,当然需要你将你所用的
SPIflasn
的初始化以及读写函数写好(我使用?/p>
W25X16,2M
,传输速率最?/p>
74MHZ
,很快的;板子主芯片
STM32F103RBT6
?/p>
。写函数?/p>
void W25X_Write_Bytes(uint32_t addr,u8* pBuffer, u16 nBytes)
注:
W25X16
写时,需要先
擦除。读函数?/p>
void W25X_Read_Bytes(uint32_t addr, u8* pBuffer, u16 nBytes)
第二步,?/p>
写串口传输函数,采用串口中断的方式,波特率设置为
115200
(测试没有问题)
,接收外
部输入的一个字节后立马将其写入
SPI FLASH
?/p>
与之前两个字符表示一个字节的方法速度