查看: 2566|回复: 6

[已解决] LPC54608 SPIFI读写

[复制链接]

该用户从未签到

61

主题

233

帖子

7

高级会员

Rank: 4

积分
750
最后登录
2021-1-25
发表于 2017-10-19 16:10:00 | 显示全部楼层 |阅读模式
demo来源:SDK_2.2_LPC54608J512\boards\lpcxpresso54608\driver_examples\spifi\polling_transfer在main函数中,SPIFI在读数据的时候是这样读的:
  /* Reset to memory command mode */
    SPIFI_ResetCommand(EXAMPLE_SPIFI);
    SPIFI_SetMemoryCommand(EXAMPLE_SPIFI, &command[READ]);
    for (i = 0; i < SECTOR_SIZE; i++)
    {
        val = (uint8_t *)(FSL_FEATURE_SPIFI_START_ADDR + i);
        if (*val != g_buffer[i % PAGE_SIZE])
        {
            PRINTF("Data error in address 0x%x, the value in memory is 0x%x\r\n", i, *val);
            err++;
        }
    }

问题1:读数据的时候是要采用SPIFI_SetMemoryCommand 这个函数吗?为什么没用跟写数据一样的SPIFI_SetCommand ?
问题2:写数据用了SPIFI_WriteData,读数据的时候怎么没用到与写数据类似的SPIFI_ReadData ?而且也没有设置读数据地址, SPIFI_SetCommandAddress?

最佳答案

paulkiyt 发表于 2017-10-20 16:03 你好,请问根据FLASH手册指令,读写已经是quad模式了,还需要写状态寄存器,使其为quad模式吗 ... 那不需要了,这个QE位一般都是Non-volatile位,只需要写一次,所以只要打开了之 ...
回复

使用道具 举报

该用户从未签到

61

主题

233

帖子

7

高级会员

Rank: 4

积分
750
最后登录
2021-1-25
 楼主| 发表于 2017-10-20 10:28:03 | 显示全部楼层
另外在主函数的enable_quad_mode()这个函数里:void enable_quad_mode(){
    /* Write enable */
    SPIFI_SetCommand(EXAMPLE_SPIFI, &command[WRITE_ENABLE]);

    /* Set write register command */
    SPIFI_SetCommand(EXAMPLE_SPIFI, &command[WRITE_REGISTER]);

    SPIFI_WriteData(EXAMPLE_SPIFI, 0x40);

    check_if_finish();
}
标红写0x40  写0x40是什么意思?


回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

90

帖子

0

中级会员

Rank: 3Rank: 3

积分
419
最后登录
1970-1-1
发表于 2017-10-20 12:09:34 | 显示全部楼层
paulkiyt 发表于 2017-10-20 10:28
另外在主函数的enable_quad_mode()这个函数里:void enable_quad_mode(){
    /* Write enable */
    SPIF ...

你可以在查一下板载FLASH芯片的datasheet,这个应该是写Status 寄存器,把bit6 (QE) 位改成1
回复 支持 反对

使用道具 举报

该用户从未签到

61

主题

233

帖子

7

高级会员

Rank: 4

积分
750
最后登录
2021-1-25
 楼主| 发表于 2017-10-20 15:38:13 | 显示全部楼层
浪淘沙-407988 发表于 2017-10-20 12:09
你可以在查一下板载FLASH芯片的datasheet,这个应该是写Status 寄存器,把bit6 (QE) 位改成1 ...

嗯 看到了,代码里描述的Flash跟开发板带的Flash竟然不一样,难怪没找到的。代码里描述的应该是原理图中另一个未在板子上焊接的MX25系列,但是板子上实际是MT25QL128的。一个是旺宏的,一个是镁光的
回复 支持 反对

使用道具 举报

该用户从未签到

61

主题

233

帖子

7

高级会员

Rank: 4

积分
750
最后登录
2021-1-25
 楼主| 发表于 2017-10-20 15:38:18 | 显示全部楼层
浪淘沙-407988 发表于 2017-10-20 12:09
你可以在查一下板载FLASH芯片的datasheet,这个应该是写Status 寄存器,把bit6 (QE) 位改成1 ...

嗯 看到了,代码里描述的Flash跟开发板带的Flash竟然不一样,难怪没找到的。代码里描述的应该是原理图中另一个未在板子上焊接的MX25系列,但是板子上实际是MT25QL128的。一个是旺宏的,一个是镁光的
回复 支持 反对

使用道具 举报

该用户从未签到

61

主题

233

帖子

7

高级会员

Rank: 4

积分
750
最后登录
2021-1-25
 楼主| 发表于 2017-10-20 16:03:00 | 显示全部楼层
浪淘沙-407988 发表于 2017-10-20 12:09
你可以在查一下板载FLASH芯片的datasheet,这个应该是写Status 寄存器,把bit6 (QE) 位改成1 ...

你好,请问根据FLASH手册指令,读写已经是quad模式了,还需要写状态寄存器,使其为quad模式吗
QQ截图.png
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

90

帖子

0

中级会员

Rank: 3Rank: 3

积分
419
最后登录
1970-1-1
发表于 2017-10-20 16:28:53 | 显示全部楼层
paulkiyt 发表于 2017-10-20 16:03
你好,请问根据FLASH手册指令,读写已经是quad模式了,还需要写状态寄存器,使其为quad模式吗 ...

那不需要了,这个QE位一般都是Non-volatile位,只需要写一次,所以只要打开了之后,后面都不用再开了,否则反而影响FLASH的寿命
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-5-4 05:10 , Processed in 0.147747 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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