OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6786|回复: 20

用sfud操作w25qxx

[复制链接]

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
发表于 2022-5-30 15:16:34 | 显示全部楼层 |阅读模式
用sfud操作w25qxx比较麻烦,文件需改动的地方有好几处。且有对应的关系。笔者经过长时间的磨难痛苦摸索,终于摸清里面的关系。首先声明,本人只是一个菜鸟。在新乡辉县这个小地方,没有人能够请教,也没有人能够商量。现把里面的关系说一下。因为从原子哥这里也学了好多东西。绝对是干货,每一步都经过开发板实际捡验。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 16:42:20 | 显示全部楼层
本人太菜了,资料传不上去。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 17:06:59 | 显示全部楼层
用stm32cubemx生成的文件,直接编译生成的文件是驱动不了w25qxx的,需要对MISO进行改造,将其设定为多功能模式。否则程序永远调不好。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 17:13:51 | 显示全部楼层
w25qxx的 对应片选端pb12要用软件方式控制,并且是推拉方式。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 17:56:27 | 显示全部楼层
最重要的是sfud_err spi_write_read函数的编写,当你用HAL_SPI_TransmitReceive编写和 用HAL_SPI_Transmit与
HAL_SPI_Receive两个组合函数编写时是不同的。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 18:05:36 | 显示全部楼层
下面分别给出其中重要的组成部分。当使用sfud_err spi_write_read函数时使用下面的程序:

         for (size_t i = 0; i < write_size + read_size; i++) {
      
        if (i < write_size) {
            send_data = *write_buf++;
        } else {
            send_data = SFUD_DUMMY_DATA;
        }
      
        if(HAL_SPI_TransmitReceive(spi_dev->spix,&send_data,&read_data,1,1000) != 0x00)
          goto exit;
   
        if (i >= write_size) {
            *read_buf++ = read_data;
        }
    }
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 18:10:37 | 显示全部楼层
当使用HAL_SPI_Transmit与HAL_SPI_Receive两个组合时用这样的程序:

          if(write_size && read_size)
        {
                if(HAL_SPI_Transmit(spi_dev->spix, (uint8_t *)write_buf, write_size, 1000)!=HAL_OK)       
                {
                        result = SFUD_ERR_WRITE;
                }       
        while (HAL_SPI_GetState(spi_dev->spix) != HAL_SPI_STATE_READY);
                if(HAL_SPI_Receive(spi_dev->spix, (uint8_t *)read_buf, read_size, 1000)!=HAL_OK)
                {
                        result = SFUD_ERR_READ;
                }
        }else if(write_size)
        {
                if(HAL_SPI_Transmit(spi_dev->spix, (uint8_t *)write_buf, write_size, 1000)!=HAL_OK)       
                {
                        result = SFUD_ERR_WRITE;
                }
        }else
        {
                if(HAL_SPI_Receive(spi_dev->spix, (uint8_t *)read_buf, read_size, 1000)!=HAL_OK)
                {
                        result = SFUD_ERR_READ;
                }
        }
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 18:16:53 | 显示全部楼层
上面两段程序,选用一段既可。因为对应两种不同的数据传输方法 。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 18:23:29 | 显示全部楼层
这都是我实际作过的,绝对是 干货。105开发板已被我刷成破烂了。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 18:34:24 | 显示全部楼层
淘宝上销售的105开发板 ,说是HAL程序,打开后根本就不是HAL程序。而且给的程序也不管用。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 18:52:23 | 显示全部楼层
由于涉及好多地方文件需要修改,且存在对应关系,本人又太笨,打字又慢,我就不再写了。如果你正在做这样的程序需要帮忙,请把你的程序发到我的邮箱里,我把初始化给你调通。hxsyqz@.com
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 18:57:45 | 显示全部楼层
有时软件需要和硬件配合,硬件有问题,软件再折腾也不行。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-30 19:11:27 | 显示全部楼层
使用SFUD的好处是更换了不同型号以及不同容量的存储器后,原来的程序不用改动 ,再汇编一下,直接使用就可以了。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-31 09:48:32 | 显示全部楼层
上面邮箱错了,是:hxsyqz@163.com ,因为涉及到的注意点和改写点太多,那怕是少一个逗号,汇编就通不过,我就被坑过。所以希望把你的程序发过来,调好后再给你发回去,你也可以对照那些地方需要改写了,应改成什么样子。初次接触
sfud会感到很迷茫,一头雾水,无从下手,没个头绪,甚至不知道怎样使用它。举个例子来说,现在手上有原子哥的
w25q256的程序,现在想用w25q128,  w25q64,   w25q32,  w25q80,  w25q16 等来替换,程序应该怎样改写?而在
sfud中,这些压根就不用考虑。在sfud中根本就不用    w25qxx.h 和 w25qxx.c 这样的文件。这对于使用不同的存储器件和替换是非常方便的。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-31 10:22:48 | 显示全部楼层
sfud的使用:在sfud中提供了几个操作函数,可以对w25qxx进行整片擦除,扇区擦除,任意地址的数据存储,以及单字节                     的擦写存储。具体是那几个函数,怎样使用,大家可以网上搜一下,上面讲的很清楚。我人太笨,打字太慢,                    就不一 一列举了。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-31 10:52:51 | 显示全部楼层
sfud中给出的Demo例程,只有Qspi的例子和库函数的例子,而没有常使用的spi例子,网上找的例子好些 也不管用,有些甚至是在胡说八道,是为了骗积分。前面我给出的接口的重要组成部分,懂程序的人一看就知道是怎么回事,绝对是干货,可以直接使用。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-31 11:25:06 | 显示全部楼层
sfud为什么这么方便,是因为在其软件内部,有一张各种存储器列表,只要你给出型号,软件将自动搜索加载各项参数。
而sfud的各项操作函数,比我们自己编写的函数要完善和好的多。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-31 11:58:01 | 显示全部楼层
stm32cubemx编译出来的程序框架,其MISO端被设定为输入端,对W25qxx来说绝对是个坑,在这个坑里我被坑害蹲苦了好久。还是原子哥的编程思想启发了我,应改为多功能模式,否则一辈子也爬不出来编不出程序。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-31 12:06:57 | 显示全部楼层
从原子哥这里学了好多东西,人是应改有一颗感恩之心的。我这么做也算是想为原子哥的论坛积拉点人气吧。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-31 12:18:00 | 显示全部楼层
再次说明,本人只是一个菜鸟,性格内向,不善交际。是一个编程爱好者,且是一个自学者,不是科班出身,水平能有多高?不当之处请高手批评指正。谢谢大家。
回复 支持 反对

使用道具 举报

4

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2012-5-22
在线时间
59 小时
 楼主| 发表于 2022-5-31 17:31:12 | 显示全部楼层
零外,我的邮箱也不经常看,如果你急着需要,请加我微信: fcyjwxfx  咱们切搓一下,也给我一个向你学习的机会。本人就这点 爱好,别的也没什么爱好。我想 ,总比去吸烟· 喝酒· 打牌· 赌博强吧。如果原子哥认为我那点说的不合适的话,就把它删了算了。谢谢大家。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 01:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表