打印
[AT32F403/403A]

【原创】基于AT32F403A开发板的FLASH型数码相框

[复制链接]
1234|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2020-10-24 14:15 编辑

在AT32F403A的开发板上,为增强存储的能力,特意配置了EN25QH128这样一个辅助存储器,作为第二存储器,并可参与编程,其接口如图1所示。
相应引脚的连接关系为:
SPIF_SCK    : PB1
SPIF_CS     : PA8
SPIF_TX     : PB10= MOSI
SPIF_RX     : PB11= MISO
SPIF_HOLD_N : PB6
SPIF_WP_N   : PB7

图1 W25Q128接口
有了EN25QH128,就不再为存储器容量小二发愁了,但新的问题也提了出来,该如何消化它那,白放在那岂不是浪费?
要问当今啥最费存储容量,除了强大规模的程序,就数图库和字库,字库还好说,毕竟谁也不会天天换字库,相对讲它是固定的。但图库就不同了,千图千样,非常好存储容量。所以就用EN25QH128
作个数码相框吧。
依EN25QH128的存储容量为128Mbit,即16MB。若以320*240像素的显示屏来显示一张图片,则需要320*240*2=153600B,也就是说它能存放6MB/153600B=40张图片。

1. EN25QH128的读写
要实现数码相框功能,首先就要从EN25QH128的读写开始。
在厂家的例程中,就有EN25QH128读写的程序,只不过粗糙了些,被写成了一个点灯程序,即读写一致就点亮指定的LED,缺少一种应用感。
但提供的这个EN25QH128读写基础是十分重要的。
该例程的执行结果如图2和图3所示,简不简单,惊不惊奇!

图2 串口的显示结果

图3 LED灯的显示效果

为了进行透明观察,特将数据写入过程添加了串口输出处理,其效果如图4所示。

图4按地址显示数据

2.图片的存储
要建立图库,首先要将图片存放到EN25QH128中,方法有2种,一种是通过数组调用内存来完成,具有操作简单的特点;另一种是使用串行通讯,将图片文件分批次的传入并进行相应处理。
这里选择前者,编写程序的工作相对较小,但不足是需要多次写入才能完成。
图片存储的主要步骤为:
1)整体尺寸一幅图片的存储区,因为EN25QH128是按页进行擦除的,每页为4096字节。
一幅图片要占20页,200*200*2/4096=19页,故擦除程序如下:


2)将数组中的数据转存到FLASH
图片转存的程序为:


3)TFT屏驱动
TFT显示屏所占用的引脚为:
CS:PA5
REST:PA6
DC:PA7
SDI: PC7
SCK: PA9
LED: PB6

TFT屏驱动的测试效果如图5所示

图5 测试TFT屏
4)模拟读取FLASH显示图片
为保证按读取FLASH数据显示图片的正确性,先按读取FLASH 的方式改写了原图片显示函数,其验证结果如图6所示。

图6 以读取FLASH方式显示图片
5)读取FLASH显示图片
显示一页FLASH数据的程序如下:




图7 图片再现

显示单张图片的测试主程序如下:
int main(void)
{
        AT32_Board_Init();
        AT32_TFT_Init();
        AT32_key_Init();
        Delay_ms(200);
        TFT_Init();
        LCD_Clear(RED);
        BACK_COLOR=RED;
        POINT_COLOR=WHITE;
        while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pins_0)==0);
        LCD_Clear(WHITE);
        show_imageh(10,300,1);  //200*200 * 1        
        UART_Print_Init(115200);
         LCD_ShowString(10,10,"ext.flash test");
        SPIM_test();
        LCD_ShowString(10,60,"test SPIM success!");
       while(1);
}



使用特权

评论回复
沙发
isageko| | 2020-10-24 16:39 | 只看该作者
对flash存储器容量要求很高啊 果然还是需要能力过硬的芯片来

使用特权

评论回复
板凳
084425| | 2020-11-27 22:10 | 只看该作者
厉害 看起来好高级

使用特权

评论回复
地板
jinglixixi|  楼主 | 2020-11-28 00:12 | 只看该作者
084425 发表于 2020-11-27 22:10
厉害 看起来好高级

使用特权

评论回复
5
cr315| | 2020-12-1 10:38 | 只看该作者
感觉很厉害的样子

使用特权

评论回复
6
jinglixixi|  楼主 | 2020-12-1 11:16 | 只看该作者
cr315 发表于 2020-12-1 10:38
感觉很厉害的样子

其实它只是一个过渡方式,目标应该在于SD卡的读写或U盘的读写,那样数码相框实现起来才更方便!

使用特权

评论回复
7
里面有晴雨| | 2020-12-3 09:38 | 只看该作者
这个很炫酷,不错,不错的,很棒的。

使用特权

评论回复
8
jinglixixi|  楼主 | 2020-12-3 09:55 | 只看该作者
里面有晴雨 发表于 2020-12-3 09:38
这个很炫酷,不错,不错的,很棒的。

感谢支持和鼓励!!!

使用特权

评论回复
9
里面有晴雨| | 2020-12-11 17:53 | 只看该作者
这个太赞了,我认为不错的好东西,好东西的。

使用特权

评论回复
10
jiangyongabc| | 2020-12-11 18:01 | 只看该作者
做数码相框的话,屏幕小了。

使用特权

评论回复
11
jinglixixi|  楼主 | 2020-12-11 20:51 | 只看该作者
里面有晴雨 发表于 2020-12-11 17:53
这个太赞了,我认为不错的好东西,好东西的。

使用特权

评论回复
12
jinglixixi|  楼主 | 2020-12-11 20:54 | 只看该作者
jiangyongabc 发表于 2020-12-11 18:01
做数码相框的话,屏幕小了。

其实这里说的只是这种技术,当然做为数码相框来讲尺寸大些比较好。

使用特权

评论回复
13
HiHuiji| | 2021-1-19 17:31 | 只看该作者
这个芯片是不是可以做内存映射,如果代码太大,可以一部分存于外部flash中呢

使用特权

评论回复
评论
muyichuan2012 2021-1-19 17:51 回复TA
可以的 使用SPIM外设,可以最多可以增加16M byte.使用XMC也是的可以的,类似于ST FSMC. 
14
MICHAELUSE273| | 2022-5-18 22:25 | 只看该作者
是否能提供整个例程,谢谢

使用特权

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

本版积分规则

446

主题

2675

帖子

37

粉丝