首页 > 编程知识 正文

em253模块说明书,mt41k256m16tw-107:p

时间:2023-05-05 19:47:25 阅读:165857 作者:4823

华邦存储器W25Q80、W25Q16、W25Q32系列与stm32f1系列单片机的spi通信

2020.4.9配置spi通信后,请务必启用spi,就像配置串行端口一样

2020.4.13华邦存储器的spi通信调试已完成。

总结起来,调试中发生了两次大问题。 第一次得不到读的数据,也不知道写入是否正确,这个过程好像是盲目的。 第二次可以读取数据,但是读取的3个数据中,最初的数量有问题。 但是,用示波器看读取的数据波形时,虽然是正确的,但最初的数量有问题。

第一个问题是,我遇到这个问题的时候,真的一次比较了华邦内存手册的读写操作,又在网上搜索了相关资料,然后检查了自己配置的spi参数。 首先,我发现自己的gpio引脚配置有问题。 只需将端子设定为复用端子即可,不需要开启复用时钟。 接下来,您会发现spi尚未启动,并启用spi外围设备。 配置引脚后,可以选择spi相关参数、波特率分频、软片选择、时钟采集设置(传输开始时,通过上升沿或下降沿采集数据)、时钟极性设置) (不传输时时钟为高电平还是低电平) 都设定好了。 我开始写入数据。 首先从简单的东西开始,读取状态寄存器的值。 这个我读了。 已写入数据并确认可以接收数据。 然后,开始读取存储地址的值。 从此进入了第二个困难。

我意识到我读的数据完全错误,所以我开始检查我写的数据有没有问题。 一步一步,结合网上检索的资料程序(最后发现有些地方是对的,有些地方是错的),进行修改,待可以写入后再读取状态寄存器判断是否可以进行写入操作,写入操作完成读取状态寄存器的值,确认是否为busy的删除操作也完成后,判断状态寄存器的busy位是否为0。添加这些判断操作后,我发现读取的数量、最初的数量总是有问题。

我开始用示波器观察波形。 正确的数据回来了。 波形是正确的。 但是单片机在阅读的过程中出现了错误。 而且只有最初的数据是错误的。 在这个地方被困了两天,最后查了资料,查了单片机的spi-DR

寄存器可能在dr寄存器不为空时有数据进入。 突然想到在网上搜索的华邦内存的程序中出现了这样的代码。 在写入数据的子程序中将数据传递到spi-DR寄存器后,判断为“接收缓冲区不为空”,可以将该代码放入我自己的写入数据的子程序中,正确读取数据。 就是这样的幽灵过程。

然后,吃完午饭回来准备做好几次测试的时候,发现读来的数据中,第一个又变成了0xff。 我意识到,上午写入操作后添加的接收缓冲区不为空的判断并不是根本原因。 又开始寻找哪里有问题了。 我认为问题是SPi-DR寄存器, 想起了DR寄存器在使用时必须先读一次数据,清空DR寄存器,然后才能使用DR寄存器这句话。 因此,新设了读取数据时,首先读取DR中的数据并清空DR寄存器的变量。 果然,效果现在完全出来了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。