数码之家

 找回密码
 立即注册
搜索
查看: 5797|回复: 13

[C51] W25Q64做字库的地址分配问题请教大家

[复制链接]
发表于 2019-5-18 10:54:02 | 显示全部楼层 |阅读模式
通过电脑串口软件用W25Q*做简易的单片机字库已经弄过了,16年在老站发帖中就已经分享过我的代码了:基于STC12LE*单片机的TFT真彩屏日历Flash字库DS3231时基【不断更新添加所有C程序】|http://bbs.mydigit.cn/read.php?tid=1597751&page=9   那是一个并没有完成的制作也是一篇没完结的帖子,屏幕和板子也一直在桌上散着,这几天想添加字体完善一下W25Q字库,但不会分配flash地址,特此发帖求问,希望各位指点一下。   
待写入的文件属性提示的字节量324864:

我写入W25Q64的第一个文件的起始地址是1100;经过串口写字库的软件写入文件后,提示的写入字节量小了一倍为162432:

写入完成后,经单片机读出后在电脑上显示数据,用来比对写入字节是否正确可靠:
如图是从地址1000开始读出的,比对的结果,数据的第一个值(红色方框的)并不是写入的值,其后的数据都是正确的。

为什么图一和图二的字节量差了一倍?如果我继续向W25Q64中写入新的字库文件,那么下一个文件的起始地址选择多少呀?读出的数据之前多出一个鬼符是哪里的?
另外如果使用坛友 @2545889167     提供的文件GT30L32S4W_2m.bin 做字库,在STC单片机+串口的情况下怎样将文件写入W25Q之中我弄不懂。
问题好多也不好意思,嫌烦的敬请绕行,愿意参与的请指点一下,对此话题感兴趣的也希望说一下,先行谢过!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 2019-10-8 07:53:43 来自手机浏览器 | 显示全部楼层
用winhex编缉bin文件,再用编程写进去也是一个好方法
回复 支持 反对

使用道具 举报

发表于 2019-10-7 11:00:23 | 显示全部楼层
我买了字库芯片可俺不会用
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-21 10:36:52 | 显示全部楼层
595953427@qq 发表于 2019-5-20 12:45
我这几天也在搞字库,我是把字库的BIN文件存在SD卡里面,用Fat文件系统读取BIN文件,从BIN文件里面找到字模 ...

通过SD写W25Q64字库方便很多,但我现在这个C51的板子上没有SD卡,就只能用电脑串口写了,但我感觉也没什么,虽然慢点但也不是想象的那么慢,反正这东西是一劳永逸的事也不用经常改动。
回复 支持 反对

使用道具 举报

发表于 2019-5-20 12:45:27 | 显示全部楼层
我这几天也在搞字库,我是把字库的BIN文件存在SD卡里面,用Fat文件系统读取BIN文件,从BIN文件里面找到字模数据,这样的好处是方便改字库,用读卡器连接电脑换字模文件就可以了。坏处也很明显,要用到SD卡和文件系统,不过我用的是STM32和STM8,过几天有空了再把SD驱动和文件系统移植到8051上,这样就可以在51上用SD和文件系统了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-19 14:08:26 | 显示全部楼层
2545889167 发表于 2019-5-19 00:04
可以啊,但是用串口助手不麻烦码?
直接用编程器烧不是更快

我的这个板子上只有STC单片机和W25,手里也没有其他编程器,串口慢些不着急还好吧,如果是STM32的板子因为有SD卡就好多了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-19 14:04:28 | 显示全部楼层
简燕 发表于 2019-5-18 21:42
如果FLASH是全空的,写入的第一个文件的起始地址是1100,写入了162432个字节,写入第二个文件的起始地址大 ...

好的,全明白了,再次感谢你的耐心指点。
回复 支持 反对

使用道具 举报

发表于 2019-5-19 00:04:47 | 显示全部楼层
慕名而来 发表于 2019-5-18 20:34
这个问题明白了,@你也是想知道你分享的字库文件能否通过电脑串口写入W25Q,我写入时那个牧码的串口软件 ...

可以啊,但是用串口助手不麻烦码?
直接用编程器烧不是更快
回复 支持 反对

使用道具 举报

发表于 2019-5-18 21:42:14 | 显示全部楼层
慕名而来 发表于 2019-5-18 20:40
请教各位,我写入的第一个文件的起始地址是1100,写入了162432个字节,那么我写入第二个文件的起始地址是否 ...

如果FLASH是全空的,写入的第一个文件的起始地址是1100,写入了162432个字节,写入第二个文件的起始地址大于1100+162432-1=163531就可以了.

如果FLASH不是全空,或者需要部分重写,就需要考虑到W25Q64是按整扇区擦除.当单片机的RAM不足以缓存一个扇区的内容时,在地址规划的时候,每一个文件的起始地址最好是扇区的整倍数.



回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-18 20:40:04 | 显示全部楼层
请教各位,我写入的第一个文件的起始地址是1100,写入了162432个字节,那么我写入第二个文件的起始地址是否是大于1100+162432=163532就可以了,需要多空出写地址吗,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-18 20:34:09 | 显示全部楼层
2545889167 发表于 2019-5-18 19:27
不能看记事本的 。记事本里面存的使ascii,不一样啊。
就像HEX文件和BIN文件不一样大 ...

这个问题明白了,@你也是想知道你分享的字库文件能否通过电脑串口写入W25Q,我写入时那个牧码的串口软件不能设置为hex模式写入,随便写入后读不出数据来,这个真心不懂。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-18 20:24:09 | 显示全部楼层
本帖最后由 慕名而来 于 2019-5-18 20:27 编辑
简燕 发表于 2019-5-18 11:50
文本文件存储的是ASCII码,每个字符占一个字节.
例如 " FF ",文本文件表达方式 0x46 0x46,占两个字节.用十六 ...

非常感谢解答,懂了。



我原本以为文件中的数据只是去掉了0x后排列的,不知道是以ASCII码运行的。再谢。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2019-5-18 19:27:01 | 显示全部楼层
不能看记事本的 。记事本里面存的使ascii,不一样啊。
就像HEX文件和BIN文件不一样大

打赏

参与人数 1家元 +20 收起 理由
慕名而来 + 20 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2019-5-18 11:50:50 | 显示全部楼层
文本文件存储的是ASCII码,每个字符占一个字节.
例如 " FF ",文本文件表达方式 0x46 0x46,占两个字节.用十六进制方式发送到串口, 是0xFF,一个字节.正好差一倍.

打赏

参与人数 1家元 +20 收起 理由
慕名而来 + 20 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-29 03:04 , Processed in 0.156000 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表