找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

Numaker-PFM-M487开发板W25Q32读写异常

[复制链接]
跳转到指定楼层
#
匿名  发表于 2022-7-1 17:22:53 回帖奖励 |正序浏览 |阅读模式
Numaker-PFM-M487开发板下载官方M480_BSP_CMSIS_V3.05.003内的SPIM测试case后,日志上均显示fail。
写开发板上的W25Q32数据时,也异常,使用的步骤是:

(1)erase,代码是:SPIM_EraseBlock(u32Addr, 0, OPCODE_SE_4K, 1, 1);

(2)enable Write,代码是  spim_set_write_enable(1, 1UL);

(3)send data,,先发02命令,再发24位地址,之后发送数据,代码如下:(测试时写入地址设置为0,发送数据为1~256,一共256个字节)

        SPIM_SET_SS_EN(1);

        cmdBuf[0]=OPCODE_PP;//02命令 Page program

        SwitchNBitOutput(1);

        spim_write(cmdBuf, 1);



        addBuf[0]=(uint8_t)(u32Addr >>16);

        addBuf[1]=(uint8_t)(u32Addr >>8);

        addBuf[2]=(uint8_t)(u32Addr >>0);

        SwitchNBitOutput(1);

        spim_write(addBuf, 3);



        SwitchNBitOutput(1);

        spim_write(pu8TxBuf, sizeof(pu8TxBuf));

        SPIM_SET_SS_EN(0);

(4)wait done,代码是:spim_wait_write_done(1UL);



除此之外还采用了库函数中的写函数,但是结果也是error,哪位能帮忙解答一下,不甚感激。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具

7#
匿名  发表于 2022-7-4 15:53:58

SPIM_CIPHER例程中更换main 3字节地址后的log显示如下所示:
[1] 3-bytes address mode, fast read...Erase SPI flash block 0x10000...done.
Verify SPI flash block 0x10000 be erased...FAILED!
Flash address 0x10000, read 0xa5dea5de!
FAILED!!
回复 支持 反对

使用道具

6#
admin 发表于 2022-7-4 14:44:05 | 只看该作者
main 3字节地址模式.c (11.04 KB, 下载次数: 420)
牛卧堂
回复 支持 反对

使用道具 举报

5#
admin 发表于 2022-7-4 14:43:35 | 只看该作者
SPIM_CIPHER例程是针对4字节地址的SPI flash芯片的。我们开发板上的spi flash是2字节地址的。需要disable四字节地址。参考下面文件里BYTE_4_ADDR
宏定义的相关地方。
牛卧堂
回复 支持 反对

使用道具 举报

地板
匿名  发表于 2022-7-4 14:01:16
admin 发表于 2022-7-4 11:36
可以在debug的时候 通过pinview看看引脚配置是否正确

如果引脚配置有问题的话,读W25Q32 ID的值应该就有问题,我现在读出来ID为0xEF15,JEDEC ID为0xEF4016
,跟手册是一致的。而且我能对寄存器1、2、3进行读写操作,但是写page就出错了,读出来的page值都是FF
回复 支持 反对

使用道具

板凳
匿名  发表于 2022-7-4 13:58:14
admin 发表于 2022-7-4 11:35
我这边测试了下 两个uart可以正常通讯,请确认引脚配置是否正确

引脚配置没问题吧:

/* Init SPIM multi-function pins, MOSI(PC.0), MISO(PC.1), CLK(PC.2), SS(PC.3), D3(PC.4), and D2(PC.5) */
  SYS->GPC_MFPL &= ~(SYS_GPC_MFPL_PC0MFP_Msk | SYS_GPC_MFPL_PC1MFP_Msk |
                                    SYS_GPC_MFPL_PC2MFP_Msk | SYS_GPC_MFPL_PC3MFP_Msk |
                                    SYS_GPC_MFPL_PC4MFP_Msk | SYS_GPC_MFPL_PC5MFP_Msk);

    SYS->GPC_MFPL |= SYS_GPC_MFPL_PC0MFP_SPIM_MOSI | SYS_GPC_MFPL_PC1MFP_SPIM_MISO |
                     SYS_GPC_MFPL_PC2MFP_SPIM_CLK | SYS_GPC_MFPL_PC3MFP_SPIM_SS |
                     SYS_GPC_MFPL_PC4MFP_SPIM_D3 | SYS_GPC_MFPL_PC5MFP_SPIM_D2;
    PC->SMTEN |= GPIO_SMTEN_SMTEN2_Msk;
回复 支持 反对

使用道具

沙发
admin 发表于 2022-7-4 11:36:43 | 只看该作者
可以在debug的时候 通过pinview看看引脚配置是否正确
牛卧堂
回复 支持 反对

使用道具 举报

楼主
admin 发表于 2022-7-4 11:35:19 | 只看该作者
我这边测试了下 两个uart可以正常通讯,请确认引脚配置是否正确
牛卧堂
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU