xueshawu1 发表于 2017-6-13 11:51:59

OLED+串口+FLASH字库

因为OLED需要显示的字很多,所以想把字库放到flash中调用;我通过PC端利用串口调试助手发送字库数据;处理方式如下:
void USART2_IRQHandler(void) //接收字库专用
{
uint8_t res;
if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)
{
res = USART_ReceiveData(USART2);
W25QXX_Write(&res,Font_Star_Addr++,1);
}
}

串口调试助手我采用 的是XCOM;


然后,我测试的时候发现,显示出来的是OLED全亮;
然后,仿真是读取我存在flash中 的部分数据;发现有可能字库写入失败;

所以,想请教下,到底应该怎么做;我的FLASH只有1M的空间;所以只能选择GB2312的字库;我采用的点阵大小是16的

zhao.zhao 发表于 2017-6-13 12:18:22

你的CPU如果是512K的,那么直接将点阵字库作为文件,写在CPU的FLASH内。如果CPU的FLASH比较小,则可以将字库文件分割后,做几个程序,分别写到W25QXX的相应的位置。当然,字库文件字节要准备好。

xueshawu1 发表于 2017-6-13 14:40:32

zhao.zhao 发表于 2017-6-13 12:18
你的CPU如果是512K的,那么直接将点阵字库作为文件,写在CPU的FLASH内。如果CPU的FLASH比较小,则可以将字 ...

分割倒是不用;肯定是要存储在flash中的;我目前测试发现串口中断接收数据后,写入flash中会卡死;串口波特率是115200;SPI时钟速度是12M;我看网上好多接收一个Byte就写入一个 字节;有点奇怪

zhao.zhao 发表于 2017-6-13 15:59:17

初步判断SPI写的时间过长,可能超过了USART的时间了,所以出现卡死的迹象。
为了测试,你可以先写100个字节,然后再写个程序只读这100个字节,从串口输出,如果两者相同,那么以上判断错误,如果有数据丢失,那么上面判断正确,你得换个思路了

xueshawu1 发表于 2017-6-13 16:40:00

zhao.zhao 发表于 2017-6-13 15:59
初步判断SPI写的时间过长,可能超过了USART的时间了,所以出现卡死的迹象。
为了测试,你可以先写100个字节 ...

字库,我暂时写进去了;我换了串口上位机;然后,我读取一个字显示,发现字是躺下来的;然后,换了一种取模方式,结果也一样;我刚看到一种SD卡的字库方式,需要支持fatfs,但是我只有flash没有sd;这样行的通么

xueshawu1 发表于 2017-6-13 16:42:11

zhao.zhao 发表于 2017-6-13 15:59
初步判断SPI写的时间过长,可能超过了USART的时间了,所以出现卡死的迹象。
为了测试,你可以先写100个字节 ...

我之前用OLED显示过几个简单的汉字;通过取模放在片内的flash里面;然后,我刚用那个软件,生成字库是font格式的,貌似我不能用 串口助手去导入

xueshawu1 发表于 2017-6-13 17:45:45

字库的FON文件如何利用串口助手导入

zhao.zhao 发表于 2017-6-13 19:28:08

明天我发个字库的,你来下载试试

zhao.zhao 发表于 2017-6-13 19:28:54

顺便问一下,你的CPU型号是什么?

xueshawu1 发表于 2017-6-14 11:00:10

zhao.zhao 发表于 2017-6-13 19:28
顺便问一下,你的CPU型号是什么?

我的CPU型号是STM32F030C8T6;另外,FON文件通过串口发送,我已经解决了;现在有新问题,我采用的字库是GB2312;我计算 出来的偏移量不对
页: [1] 2
查看完整版本: OLED+串口+FLASH字库