打印
[STM32H7]

QSPI内存映射不能随机读取数据

[复制链接]
1915|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
op07|  楼主 | 2021-6-28 22:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在使用W25Q128FV这个flash,stm32h750, qspi能读能写,数据OK,但是使用HAL_QSPI_MemoryMapped内存映射后,从地址0x9000000直接读取数据也正常,但是我想随意定一个地址开始读取数据,比如从0x90001000开始读取,就发现全是FF。按理说这个地址也在flash范围以内啊?这是个bug么?

使用特权

评论回复
沙发
op07|  楼主 | 2021-6-28 22:10 | 只看该作者
下面是我内存映射代码,从0x90000000顺序读取,数据就是对的,从0x90001000读取就全是FF,跟MPU无关
uint32_t QSPI_EnableMemoryMappedMode()
{
        QSPI_CommandTypeDef      s_command;
  QSPI_MemoryMappedTypeDef s_mem_mapped_cfg;
       
  /* Configure the command for the read instruction */
  s_command.InstructionMode   = QSPI_INSTRUCTION_1_LINE;
  s_command.Instruction       =  Fast_Read_Quad;
  s_command.AddressMode       = QSPI_ADDRESS_4_LINES;
  s_command.AddressSize       = QSPI_ADDRESS_24_BITS;
  s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;
  s_command.DataMode          = QSPI_DATA_4_LINES;
  s_command.DummyCycles       = 26;
  s_command.DdrMode           = QSPI_DDR_MODE_DISABLE;
  s_command.DdrHoldHalfCycle  = QSPI_DDR_HHC_HALF_CLK_DELAY;
  s_command.SIOOMode          = QSPI_SIOO_INST_EVERY_CMD;
        s_command.Address = 0;
        s_command.NbData            = 1;

  /* Configure the memory mapped mode */
  s_mem_mapped_cfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
  s_mem_mapped_cfg.TimeOutPeriod     = 0;

  return HAL_QSPI_MemoryMapped(&hqspi, &s_command, &s_mem_mapped_cfg);
}

使用特权

评论回复
板凳
carpsnow| | 2021-6-30 16:40 | 只看该作者
qspi是个啥呢?跟SPI区别大么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

61

帖子

0

粉丝