|
前几天制作完成的小音频功放,https://www.mydigit.cn/forum.php?mod=viewthread&tid=261567,由于这小功放是自己用的,根据自己的实际及操作习惯搞的,没有通用性,所以没提供电路图及代码。这个制作显示部份是有底图显示的,且BT401蓝牙模块输出的汉字编码是Unicode,这个制作的字库是用以前制作的备份,用编程器写入W25Q128的,小功放制作需在W25Q128里增加9张图的数据及Unicode转换GB的表,由于STM32F030的空间太少,如用以前本人制作字库贴的方法通过这板多次写入太麻烦了,也不方便日后换图片,所以采用串口发送数据方法对W25Q128进行写入操作。编写了对应的小软件及对应的单片机子程序,所以本贴是这小功放的额外的东西,不是专门所为的,所以程序只编写比较简单,只编写数据处理及串口数据发送部份,没有进行错误处理、超时处理以及对数据对错处理,也没有写入过程数据变化的进度条显示,且在使用及测试中发现一次无故串口数据发送错误,重启对应的软硬件才正常,所以本小软件只能凑合使用,如出现写入错误,多操作几次。本贴是把小功放制作的写入部份进行整理出来,独立写一个贴,只是提供个方法仅参考。
以下是本贴主要内容,用串口对W25Q进行写入操作,使用STM32F030实验板+W25Q32+0.96寸OLED,以写入OLED所用的字库为例,说明一下这使用方法及简单原理。
硬件的接法,如下图,W25Q芯片接stm32f030的硬件SPI接口。OLED及按钮开关的作用用于验证写入完成后,按一下开关,OLED显示的内容是否正确,如正确表示写入正确。2个LED灯是状态灯,接PA8的是写入操作显示灯,常亮表示擦写空间中,闪表示写入数据中,PA9灯是每0.5S闪,表示本电路工作中。如不需要验证及显示以上的都可以不接OLED等。电脑串口接实验板的PA2PA3。
以下实验板接线。DIP8转换板上的是W25Q32。
本小软件的数据格式是有要求的,只能是十六进制的字符及逗号及回车,不能有其它字符,也不要有空格,不能有注释,如有就会出错,如下图,字库文件采用http://bbs.mydigit.cn/read.php?tid=2352395这里的方式,
以下为电脑小软件操作,设置对应的串口号,输入需要写入W25Q的地址,这个需要是6位十六进制写法,由于这次写入是OLED字库,GB字库地址是0x000000,ASII地址是0x048000,先写入GB,导入处理好的字库编码文件,
然后按数据写入键,就等软件处理好数据后,发送擦写空间命令,擦写完成后,就发送编码数据,发送完成就结束写入,由于串口是9600,所以一秒大约发送1000个数据,由于GB字库数据接近300K,所以需等待大约6分钟才完成写入,
接住再写入ASII数据,就完成这个字库写入操作了。
以下为实验板LED显示情况。左上角的LED是接PA7的,接电后一直闪。
中间那个LED擦写是常亮,数据写入时闪,平时为灭。
写入完成后,按一下开关,OLED显示如下唐诗文字,表示写入正确。
以上采用写入字库的方式演示写入过程,这个是顺序写入,可以写各种数据进入W25Q的芯片里,由于速度不快,不建议写入过大的数据。
最下面的压缩包是本贴的文件,里面有电脑端程序,单片机程序及整理好的编码。简单说下工作原理,电路是用stm32f030硬件SPI接W25Q,用串口2发送数据,电脑软件发送写入命令时,先整理数据后发送擦写命令,擦写命令里包括11位引导码+6位要发送的数据量值+8位16进制擦写的地址,单片机接收到命令就擦写对应的空间,擦完后,发送sendok命令给电脑,电脑就直接发送需写入的数据直到结束。
对于单片机方面的程序,详细看代码,就是W25Q的SPI基础子程序,增加一个写入一个数据的子程序void W25X_Flash_Write_one(uint32_t WriteAddr,uint8_t datavol)及根据地址及擦除数量的擦写4K空间程序uint8_t W25X_Flash_Erase_rsdattp(uint32_t WriteAddr,uint32_t datavol)。
在单片机main主程序内有一个16进转10进制的子程序uint8_t jianhuan16to10(uint8_t indat),用于计算电脑发过来的地址等数据,及有个对电脑发过来的数据进行处理void RS2W25write(),这两个程序是对串口收到的引导数据进行处理,计算出来擦写的地址及总数据量,进行擦写操作,并触发写入控制值,允许进行数据写入操作,擦写操作完成后,发送sendok命令给电脑,状态就改为写入数据状态,直至写入完成。写入程序主要是串口中断子程序中,就2部份,上部份是用来接收引导码及判断命令,下部分是用来数据写入操作的。
对W25Q写入部份是小功放内嵌小程序,所以程序做得简单,只有数据处理及发送,能用就行,单片机程序是把小功放程序分离出来的,本贴的程序已测试过几次,能用,电脑程序是用易语言编写的,安全软件可能认为是病毒文件,仅供参考。
单片机部份代码不多,可以直接嵌入制作中,在写入及擦写中不能有对W25Q的另外操作,如有会出错。如是嵌入制作写入状态显示可以写丰富些,以下的图是针对小功放操作的图。
GB2312单片机字库的制作:https://www.mydigit.cn/thread-310871-1-1.html
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|