STM32如何实现W25X16的汉字字库存储

系统中使用过多的汉字会出现芯片容量不够用的问题,可将数据存储在外部flash中,在需要使用时进行调用即可。本文是通过stm32串口1实现对w25x16的汉字字库存储。软件层面,配置串口1和spi1即可,程序初始化后,在对w25x16进行写之前,必须先擦除,可以一个字节、一页、一扇区、一块以及整片擦除。写字库前,我们用整片擦除方式,如下:
整个程序中,关键在于串口接收中断函数的编写,如下:
u32 writeaddress=0;
void usart1_irqhandler(void)
{
u8 res;
if(usart_getitstatus(usart1,usart_it_rxne)!=reset)
{
usart_clearitpendingbit(usart1,usart_it_rxne);
res=usart_receivedata(usart1);
spi_flash_write_nocheck(&res,writeaddress,1);
writeaddress++;
}
}
也就是从地址0开始,一个字节一个字节进行写入。
代码为最简单的通信代码,不过多说,然后打开串口助手,进行配置,勾选启用文件数据源,选择下载或者自己做好的字库文件;勾选按十六进制发送,在芯片完全擦除后再进行发送:
经过几十秒的等待,字库会发送完成,通过看发送的字节数与字库的字节数对比,即可知道是否发送完毕。(上图中发送字节数不是字库字节数)前面的文章有写过汉字点阵获取的方法,此处不再赘述。如此,即可通过spi访问外部flash来调用汉字,并将其显示在显示屏上。同样对于asiic码可以将其写入某个块中,然后通过地址的偏移来计算对应的字符。
对于图片的存储也是相同原理,在之前实现汉字显示的基础上,笔者测试了图片的显示,而且获得正确的显示。笔者使用的显示屏为tft1.44的,为128*128,占用32768字节,两张图片正好占用65536字节,也就是64kb,而w25x16一个块是64kb,进行块擦除后,每个块可以载入两张图片,非常完美。基本程序相同,只是此时因为字库的写入,不使用片擦除指令,而使用块擦除实现对未使用块区的擦除:
计算了下,字库占用了3个块多点,因此彻底避开此区+在:
可以打开看下字库文件,然后对获取的图片文件进行编辑即可。下面贴出自己编写的图片显示的代码:
void showimage_w25x16(u32 writeaddr)
{
int i;
u32 j;
unsigned char pich,picl;
u8 datatemp[2];
lcd_clear(white);
lcd_setregion(0,0,127,127);
for(j=0;j《1024;j++)
for(i=0;i《16;i++)
{
spi_flash_read(datatemp,writeaddr,2);
picl=datatemp[0];
pich=datatemp[1];
writeaddr=writeaddr+2;
lcd_writedata_16bit(pich《《8|picl);
}
}

电源EMI滤波器基本原理及结构_电源滤波器性能参数
锂离子电池和干电池的差别,锂离子电池和干电池哪个好
EMI/RFI 对调幅收音机有何影响?
新版发布 | 合宙Air105最新RTT支持、扫码枪TurnKey 、低功耗、拍照功能,哪个你最爱?
iphone8、华为Mate10什么时候上市最新消息汇总:配置、外观、系统、价格对比分析选谁?
STM32如何实现W25X16的汉字字库存储
「行业分析」汽车制造行业
基于微芯科技MGC3130在3D手势识别上的应用
科学家研发可给电影评级的AI工具
光缆插头连接简法,DIY simple fiber connector
一种实用的VXI总线接口设计
美国联邦通信委员会开始撤销中国电信在美国运营的授权
“人机大战2”迎来大结局:柯洁被AlphaGo横扫败北
iFixit拆解确认iPhone11ProMax标配4GB内存
苹果汽车的到来越来越近了
单片机的一些开发技巧
电商平台将提供鼎阳科技X系列示波器SDS1052X
苹果Apple TV+捆绑购买拉低iPhone利润率
后发而先至的腾讯混元大模型,到底有哪些技术亮点?
GTC23 | NVIDIA 为全球企业带来生成式 AI,推出用于创建大型语言模型和视觉模型的云服务