硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4809|回复: 4
收起左侧

[SPI/QSPI] STM32H750 双qspi flash XIP映射地址问题

[复制链接]

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2020-10-9 11:47:18 | 显示全部楼层 |阅读模式
我在H750上配置用了dual qspi flash 两片W25Q256FV。
http://www.armbbs.cn/forum.php?m ... ghlight=dual%2Bqspi
根据群里大佬的帖子移植了程序之后,通过QSPI_ReadBuffer和QSPI_WriteBuffer读写都是对的。
log信息如下:
读串行Flash成功,数据如下:
11 22 33 44 55 66 77 88 22 CC 22 CC 22 CC 22 CC -  22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC
22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC -  22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC
22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC -  22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC
22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC -  22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC
22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC -  22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC
22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC -  22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC
22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC -  22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC
22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC -  22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC 22 CC
55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA -  55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA
55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA -  55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA
55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA -  55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA
55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA -  55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA
55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA -  55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA
55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA -  55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA
55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA -  55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA
55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA -  55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA 55 AA
这些数据和写入的是一样的。

但是通过QSPI_MemoryMapped映射到0x90000000的时候,前两个字节没有映射,是从第三个字节映射的?这个是什么原因造成的?



无标题1.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-10-9 11:49:43 | 显示全部楼层
帮顶。
H750,H743就是这个地方设计的略坑,搞了个双bank实现8线,不像后来出的H7系列,基本都直接支持8线的OctoSPI,而且支持硬件实时解密。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2020-10-9 12:28:27 | 显示全部楼层
感谢版主的支持。我仔细查找了代码,h7和规格书和w25q256fv,感觉设置都是没有问题的。不知道哪里设置是不是有问题。也不应该是w25q256fv的问题。如果一直这样,我测试一下是不是就是跳过前两个字节,而后面都是连续映射的,如果是,我就把前dual flash的前两个字节跳过,直接从第三个字节开始存数据然后映射到memory地址。
回复

使用道具 举报

1

主题

94

回帖

97

积分

初级会员

积分
97
发表于 2020-10-9 15:20:15 | 显示全部楼层
很有可能是那个Dummy 的设置值原因,仔细看规格书,按照规格书的来,不同的芯片后缀这里估计有差别。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2020-10-9 17:45:21 | 显示全部楼层
仔细研究了这个映射函数

void QSPI_MemoryMapped(void)
{
        QSPI_CommandTypeDef      sCommand={0};
        QSPI_MemoryMappedTypeDef sMemMappedCfg={0};

        sCommand.InstructionMode   = QSPI_INSTRUCTION_1_LINE;
        sCommand.AddressSize       = QSPI_ADDRESS_32_BITS;
        sCommand.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
        sCommand.DdrMode           = QSPI_DDR_MODE_DISABLE;
        sCommand.DdrHoldHalfCycle  = QSPI_DDR_HHC_ANALOG_DELAY;
        sCommand.SIOOMode          = QSPI_SIOO_INST_EVERY_CMD;
  
        sCommand.AddressMode = QSPI_ADDRESS_4_LINES;//QSPI_ADDRESS_1_LINE;
        sCommand.DataMode    = QSPI_DATA_4_LINES;
        sCommand.NbData      = 0;
        /* Reading Sequence ------------------------------------------------ */
        sCommand.Instruction = QUAD_INOUT_FAST_READ_4_BYTE_ADDR_CMD;
        sCommand.DummyCycles = DUMMY_CLOCK_CYCLES_READ_QUAD;

        sMemMappedCfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;

        if (HAL_QSPI_MemoryMapped(&QSPIHandle, &sCommand, &sMemMappedCfg) != HAL_OK)
        {
                Error_Handler(__FILE__, __LINE__);
        }
}

原来定义如下:

#define DUMMY_CLOCK_CYCLES_READ_QUAD         8

按照这个定义,映射0x90000000就会少两个字节。

改为如下
#define DUMMY_CLOCK_CYCLES_READ_QUAD         6

问题就解决了。原有程序是W25Q256JV的参数,W25Q256FV的应该是6.

多谢多谢指点。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 15:34 , Processed in 0.243615 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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