里飞网

标题: QSPI—读写串行 FLASH-W25Q256 [打印本页]

作者: 阿里兄    时间: 2019-12-19 17:35
标题: QSPI—读写串行 FLASH-W25Q256
本帖最后由 阿里兄 于 2019-12-19 17:41 编辑

QSPI—读写串行 FLASH-W25Q256

一些注意事项,后面直接看代码
1、W25Q256的最大时钟为104M,时钟配置为hqspi.Init.ClockPrescaler = 2;即216M/(2+1)=72M。
2、QSPI FlashSize为2^(FlashSize+1)次方,W25Q256为32M字节,hqspi.Init.FlashSize = 24;即2^(24+1)=32MB,此处需配置为24。
3、QUADSPI 内存映射模式为只读模式,在此模式下, 只允许对外部 FLASH 进行读操作。
4、内存映射地址为0x90000000。
5、W25Q256大小为32M,需要配置为4字节地址模式。


初始化
  1. void MX_QUADSPI_Init(void)
  2. {

  3.   hqspi.Instance = QUADSPI;
  4.   hqspi.Init.ClockPrescaler = 2;
  5.   hqspi.Init.FifoThreshold = 4;
  6.   hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_HALFCYCLE;
  7.   hqspi.Init.FlashSize = 24;
  8.   hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_5_CYCLE;
  9.   hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
  10.   hqspi.Init.FlashID = QSPI_FLASH_ID_1;
  11.   hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE;
  12.   if (HAL_QSPI_Init(&hqspi) != HAL_OK)
  13.   {
  14.     Error_Handler();
  15.   }

  16. }
复制代码
配置QSPI为内存映射模式
  1. //配置QSPI为内存映射模式
  2. uint32_t W25QXX_EnableMemoryMappedMode(void)
  3. {
  4.   QSPI_CommandTypeDef      s_command;
  5.   QSPI_MemoryMappedTypeDef s_mem_mapped_cfg;

  6.   s_command.InstructionMode   = QSPI_INSTRUCTION_1_LINE;
  7.   s_command.Instruction       = W25X_QUAD_INOUT_FAST_READ_CMD_4BYTE;
  8.   s_command.AddressMode       = QSPI_ADDRESS_4_LINES;
  9.   s_command.AddressSize       = QSPI_ADDRESS_32_BITS;
  10.   s_command.AlternateByteMode = QSPI_ALTERNATE_BYTES_NONE;//无交替字节必需设为无,否则读失败
  11.   s_command.DataMode          = QSPI_DATA_4_LINES;
  12.   s_command.DummyCycles       = 6;
  13.   s_command.DdrMode           = QSPI_DDR_MODE_DISABLE;
  14.   s_command.DdrHoldHalfCycle  = QSPI_DDR_HHC_ANALOG_DELAY;
  15.   s_command.SIOOMode          = QSPI_SIOO_INST_EVERY_CMD;

  16.   s_mem_mapped_cfg.TimeOutActivation = QSPI_TIMEOUT_COUNTER_DISABLE;
  17.   s_mem_mapped_cfg.TimeOutPeriod     = 0;

  18.   if (HAL_QSPI_MemoryMapped(&hqspi, &s_command, &s_mem_mapped_cfg) != HAL_OK)
  19.   {
  20.     return HAL_ERROR;
  21.   }

  22.   return HAL_OK;
  23. }
复制代码


读写速度
(, 下载次数: 737)


工程代码: (, 下载次数: 1281)





欢迎光临 里飞网 (http://dz.lfly.xyz/) Powered by Discuz! X3.3