华邦存储器W25Q80, W25Q16, W25Q32系列与stm32f1系列单片机的spi通讯
2020.4.9 spi通讯在配置好之后一定要开启spi使能,和串口的配置是一样的
2020.4.13 华邦存储器的spi通讯调试完成。
总结,在调试的过程中出现了两次大的问题,第一次是没法得到读到的数据,因此也无法确定写入是否正确,这个过程直如摸瞎。第二次是可以读数据了,但读回来的三个数据中第一个数有问题,但是用示波器看读入数据的波形,是正确的,但第一个数就是有问题。
第一个问题,当我遇到这个问题的时候,真的是一次次对比了华邦存储器手册的读写操作,又到网上搜索了相关的资料,然后又检查了自己配置的spi参数。先是发现自己gpio引脚配置有问题,只需把引脚设置成复用引脚就好了,不用开启复用时钟。然后又是发现spi未启动,于是使能spi外设。等配置好了引脚之后,又配置spi的相关参数,波特率分频,软片选,时钟采集设置(当开始传输时,是上升沿还是下降沿采集数据),时钟极性设置(不传输时时钟是高电平还是低电平)。都设置好了,我再开始写入数据,先从简单的开始,读取状态寄存器的值,这个读到了,确定可以写入数据并且可以收到数据了。然后开始读取某个存储地址的值。从这个时候开始就进入第二个困难了。
我发现读出的数据一点都不对,于是我开始检查我写入的数据是不是存在什么问题,一步一步的来,结合网上搜索到的资料程序(最后发现有些地方是对的,有些地方是错的),然后纠正,写使能之后要读状态寄存器判断是否可以写入操作了,整个写完动作完成后(片选引脚被拉高),还有读状态寄存器的值,看看是否busy(busy为0,则写操作完成)。擦除操作也是完成之后要判断状态寄存器中的busy位是否为0,,等我把这些判断操作加入好了之后,发现读回来的数,第一个数始终有问题。
我开始使用示波器观察波形,发现正确的数据是回来了,波形正确,,但单片机在读的时候就出现了错误,而且只是第一个数据出错。在这个地方被困了两天,最后查资料,查到单片机上的spi->DR
寄存器,有可能是dr寄存器没有为空的时候就有数据进来了,突然想到网上搜的华邦存储器的程序中出现过一段这样的代码,说是写数据的子程序中,将数据给到spi->DR寄存器之后,有一个“接收缓冲器

本文记录了华邦存储器W25Q80, W25Q16, W25Q32系列与STM32F1单片机SPI通讯的调试过程,包括SPI配置、问题排查与解决。遇到的问题包括数据读取错误,通过示波器确认波形正确,最终发现需要在写操作后清空SPI的DR寄存器以确保正确读取数据。"
96853683,8669329,C# 操作TreeView状态:保存与读取展开节点,"['C#开发', 'GUI编程', 'Windows应用', '控件操作', '数据序列化']
最低0.47元/天 解锁文章
1552





