[RISC-V MCU 应用开发] 【原创】 【RISC-V MCU CH32V103测评】W25Q16读写验证

[复制链接]
 楼主| jinglixixi 发表于 2020-11-21 00:30 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2020-12-4 14:30 编辑

在CH32V103开发板上配置了W25Q16存储器,其接口电路如图1所示。

1.jpg
图1 接口电路

此外,官方还提供了测试例程。其实,从程序看它是一个W25QXX系列的光谱测试程序,所支持的芯片有:
W25Q80、 W25Q16、 W25Q32、W25Q64及W25Q128,除了容量不同外,也就剩下名称不同了。
由于是例程,大家都能得的到,程序就不在这里提供了。
其实际的测试过程主要有下列语句实现:
    printf("Start Write W25Qxx....\r\n");
    SPI_Flash_Write((u8*)TEXT_Buf,0,SIZE);
    printf("W25QxxWrite Finished!\r\n");
    Delay_Ms(500);
    printf("Start ReadW25Qxx....\r\n");
    SPI_Flash_Read(datap,0x0,SIZE);
    printf("%s\r\n", datap );
    Delay_Ms(500);
    printf("Start Erase W25Qxx....\r\n");
    SPI_Flash_Erase_Sector(0);  
    printf("W25Qxx EraseFinished!\r\n");
    Delay_Ms(500);
    printf("Start ReadW25Qxx....\r\n");
    SPI_Flash_Read(datap,0x0,SIZE);
    printf("%s\r\n", datap );
也就是说,它是按照这样的流程来处理的,即:
写入-->读取--->显示-->删除-->读取
在对程序编译后,给出的提示为:
2.jpg

天哪,23个错误!
仔细一看,错误只是一种,原始而又低级,竟像使用单片机一样直接通过赋值0和1来输出高低电平!
以函数SPI_Flash_ReadID()为例,其原内容为:
3.jpg

修改后,则为:
4.jpg

经再次编译,其结果为:
V.jpg
在完成程序下载后,其运行结果如图2所示。
5.jpg
图2 运行结果

完了,没戏呀!读写失败。
看过一遍原理图之后,才发现原来片选信号竟被截流了,起连接作用的电阻R11原来没有焊。
找到问题就好办了,将R11的位置直接短接即可。
再进行测试,一切OK,其运行效果见图3所示。

6.jpg
图3 正确结果

有了W25Q16存储器,后面再遇到存储容量紧张的问题就好办了,直接扔给W25Q16即可。

rh10000 发表于 2020-12-4 14:08 | 显示全部楼层
唉!看了好多,还没空研究
 楼主| jinglixixi 发表于 2020-12-4 14:29 | 显示全部楼层
rh10000 发表于 2020-12-4 14:08
唉!看了好多,还没空研究

有例程比较好使用,后面是改成自己的功能即可。
Jekele 发表于 2020-12-5 18:46 | 显示全部楼层
一模一样的问题。
资深技术 发表于 2020-12-7 16:35 | 显示全部楼层
楼主意思是原例程有误?
 楼主| jinglixixi 发表于 2020-12-7 20:16 | 显示全部楼层
资深技术 发表于 2020-12-7 16:35
楼主意思是原例程有误?

你咋理解呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部