硬汉嵌入式论坛

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

[SPI/QSPI] STMH743使用QSPI映射模式32M的W25Q256, 只能映射16M大小。

[复制链接]

7

主题

74

回帖

100

积分

初级会员

积分
100
发表于 2020-8-19 17:02:46 | 显示全部楼层 |阅读模式
1.如果使用如下配置读出来的数据都是0x88。

uint8_t QSPI_EnableMemoryMappedMode(QSPI_HandleTypeDef *hqspi)
{
          QSPI_CommandTypeDef      s_command;
          QSPI_MemoryMappedTypeDef s_mem_mapped_cfg;

          /* 配置读指令 */
          s_command.InstructionMode   = QSPI_INSTRUCTION_1_LINE;
          s_command.Instruction          =    0xEC;
          s_command.AddressMode      = QSPI_ADDRESS_4_LINES;
          s_command.AddressSize        = QSPI_ADDRESS_32_BITS;
          s_command.DataMode          = QSPI_DATA_4_LINES;
          s_command.DummyCycles     = 6;
          s_command.DdrMode            = QSPI_DDR_MODE_DISABLE;
          s_command.DdrHoldHalfCycle  = QSPI_DDR_HHC_ANALOG_DELAY;
          s_command.SIOOMode          = QSPI_SIOO_INST_EVERY_CMD;

          /* 配置内存映射模式 */
          s_mem_mapped_cfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
          s_mem_mapped_cfg.TimeOutPeriod     = 0;

          if (HAL_QSPI_MemoryMapped(hqspi, &s_command, &s_mem_mapped_cfg) != HAL_OK)
          {
            return 1;
          }

          return 0;
}

2.如果使用如下配置,能读取0x90000000到0x91000000的数据,但是超过0x91000000读取的数据,
又回到了0x90000000开始的数据,相当于又开始从头开始读。

uint8_t QSPI_EnableMemoryMappedMode(QSPI_HandleTypeDef *hqspi)
{
          QSPI_CommandTypeDef      s_command;
          QSPI_MemoryMappedTypeDef s_mem_mapped_cfg;

          /* 配置读指令 */
          s_command.InstructionMode   = QSPI_INSTRUCTION_4_LINES;
          s_command.Instruction          =    0xEB;
          s_command.AddressMode      = QSPI_ADDRESS_4_LINES;
          s_command.AddressSize        = QSPI_ADDRESS_24_BITS;
          s_command.DataMode          = QSPI_DATA_4_LINES;
          s_command.DummyCycles     = 6;
          s_command.DdrMode            = QSPI_DDR_MODE_DISABLE;
          s_command.DdrHoldHalfCycle  = QSPI_DDR_HHC_ANALOG_DELAY;
          s_command.SIOOMode          = QSPI_SIOO_INST_EVERY_CMD;

          /* 配置内存映射模式 */
          s_mem_mapped_cfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
          s_mem_mapped_cfg.TimeOutPeriod     = 0;

          if (HAL_QSPI_MemoryMapped(hqspi, &s_command, &s_mem_mapped_cfg) != HAL_OK)
          {
            return 1;
          }

          return 0;
}


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-8-19 17:16:32 | 显示全部楼层
你这个问题都倒腾整整两个月了,还没有搞定?
回复

使用道具 举报

7

主题

74

回帖

100

积分

初级会员

积分
100
 楼主| 发表于 2020-8-19 17:31:11 | 显示全部楼层
eric2013 发表于 2020-8-19 17:16
你这个问题都倒腾整整两个月了,还没有搞定?

本来以为好了,最近发现用超过16M又出问题了,配置也是按照文档设置的没发现啥问题。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2020-9-25 17:18:49 | 显示全部楼层
地址不是4字节?
回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
发表于 2020-10-15 17:22:02 | 显示全部楼层
估计是你这个  s_command.AddressSize        = QSPI_ADDRESS_24_BITS; 地址范围不够,

你可以看看这个芯片的 地址 是如何设置 ?

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 18:38 , Processed in 0.156667 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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