打印
[经验分享]

如何用串口下载中文字库到flash

[复制链接]
2271|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhouhuanの|  楼主 | 2016-3-26 18:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过串口下载中文字库到板子上的flash芯片里。准备了一块小单色屏但现在有了彩屏,肯定要做得漂漂亮亮的,上图片和gui之外,中文的支持是必不可少的,那怎么把字库放进来呢,中文字库有2xxKB大,放flash里面占资源,一看板子上有块flash片子,这不现成的么,开干。
沙发
handleMessage| | 2016-3-26 18:19 | 只看该作者
不知道楼主是怎么做的呢?

使用特权

评论回复
板凳
zhouhuanの|  楼主 | 2016-3-26 18:45 | 只看该作者
字库下载到flash有很多途径,之前做过通过sd卡更新,实现起来需要sd卡接口,移植文件系统,操作flash,步骤比较多,但是速度快很多,这块板子没带sd模块,虽然可以用spi接口外接,但是考虑到复杂度,另一方面想玩新鲜的,决定实现串口下载。

使用特权

评论回复
地板
zhouhuanの|  楼主 | 2016-3-26 18:46 | 只看该作者
串口下载字库主要用到两部分,一是uart口模块,我们选择的串口0,而且不用板子上的dp9口,直接把板子上的JP8调开,用串口模块直接引过来,方便好用。二部分是flash的spi接口,实现对flash的操作,这个更简单了,我们只需要初始化,芯片擦除,写入和读取几个函数就好了,当然如果你想提速,可以建个大的缓冲区,实现对flash的扇区写入和擦除,这样速度应该会有所提升。

使用特权

评论回复
5
zhouhuanの|  楼主 | 2016-3-26 18:47 | 只看该作者
    /* 更新字库 */
    void uart_FontLib(void)
    {
            uint8_t temp = 0;
            if(check_flash()!=ERR_FLASH_NOFOUND)
            {
                    uart_ms=0;
                    SPI_Flash_ChipErase();
                    Board_UART_Init ( LPC_USART0, 115200, &UART0arg );
                    Board_UART_SetRxBuff ( LPC_USART0, rx0buff, sizeof(rx0buff) );
                    GUI_PutStrEx(2,120,(uint8_t *)"2.Send font lib files in 5S.",16);        
                    RxCount=0;
                    while(uart_ms<=5000);
                    Board_UART_Disable( LPC_USART0, 115200, &UART0arg );                                                        
        uart_ms=0;
                    //更新标记
                    temp=FLASH_UPDATA;
                    SPI_Flash_Write(FLASH_FONTLIB_FLAG,&temp,1);
            }
    }

使用特权

评论回复
6
bbapple| | 2016-3-26 18:52 | 只看该作者
这是串口中断吧,接收到一个字节储存到flash的对应地址里去。

使用特权

评论回复
7
robter| | 2016-3-27 09:02 | 只看该作者
很好很好,学习了

使用特权

评论回复
8
armink| | 2016-3-27 09:19 | 只看该作者
可以试试我开源的嵌入式 Flash 闪存库(打开链接 github.com/armink/EasyFlash),参考 IAP 的方式,把字库文件通过 串口 + 超级终端 + Ymodem协议形式下载到Flash中。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

1557

帖子

2

粉丝