W25Q16是一款16Mbit(8MB)Flash型存储器件,可用于声音、文本和数据的存储,典型的应用是构建中文字库。 为了进行W25Q16的读写操作,W25Q16模块与SC95F8616开发板的连接关系为: CS--P10 DI--P13 CLK--P12 D0--P11 串口通信模块与开发板的连接关系为: TX--P21 RX--P20 软按键与开发板的连接关系为: K3 -- P03 K4 -- P04 K1 -- P05 K2 -- P06 COM-- P07 OLED 屏与开发板的连接关系为: SDA --P16 SCK --P17 整体的硬件构成如图1所示。 图1 硬件构成 实现W25Q16的读写功能,软件的设计采用易码魔盒来完成。 1.打通串口 1)使用易码魔盒创建一个新工程,芯片型号为SC89F8616。 2)按图2所示进行管脚的配置,以了解串行通讯模块、W25Q16存储模块、软按键。 图2 管脚的配置
3)按图3所示设置UART0 图3 设置UART0 4)点击“生成工程源代码”图标,在弹出的对话框中点击“保存”按钮,以自命名的文件夹加以保存。 5)右击“函数”列表,从中点击“添加函数”选项,以添加延时函数delay。 6)按图4所示完成程序流程 图4 程序流程 7)添加变量Uart0ReceiveFlag和Uart0SendFlag 8)在工具栏中,右击“变量”列表,从中点击“添加变量”选项,分别增添变量。 按图5所示更改相关配置 图5 更改配置 9)生成代码后,UART0的中断服务程序为: 替代printf语句,在调试过程中printf语句是利用率很高的语句,但它要对putchar函数进行 重定义。然而在易码魔盒中却限制对它的修改(在keil中是可以使用的,并配置stdio.h头文件。),故只能对printf语句说拜拜了。 10)重新按图6所示更改程序流程 图6 修改程序流程 11)添加数组变量cmd3[] 12)如图7所示更改相应的配置 图7 更改配置 13)重新生成程序代码,并进行编译和下载,则运行效果如图8所示。这样我们在调试时,就可以凭此来输出提示信息了。 图8 输出效果 2. 实现W25Q16读写 1)由于W25Q16要用USCI1来控制,故需按图9来设置USCI1。 图9 设置USCI1 2)重新生成程序代码后,USCI1的初始化函数如下: 3)添加新变量,并由P10作为片选信号端CS。 4)添加W25Q16读写的相关函数 5)添加图10所示USCI1中断服务流程 图10 USCI1中断服务流程 6)按图11所示修改USCI1的配置 图11 修改USCI1配置 7)重新生成代码后,USCI1中断服务程序如下: 8)按图12所示修改程序流程,以按键来控制W25Q16的功能选择 图12 程序流程 9)添加收发数组变量 10)按图13所示修改相应配置 图13 修改配置 11)重新生成程序代码后,主程序如下:
12)经编译,其结果如图14所示。 图14 编译结果 13)下载后,按下K1键则结果如图15所示。 图15 运行结果 经对比所读取的数据“FC04 FC 00 FE 42 BE 00 F2 12”与当初以文件方式所写入的内容完全一致,说明读取正确。凭此,后面我们就可以用W25Q16来构建中文字库或图片库啦! 图16 原写入数据
|