打印
[STM32U5]

STM32U5A9NJH6Q使用160Mhz HSPI读取外部PSRAM失败

[复制链接]
816|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laocuo1142|  楼主 | 2024-3-8 13:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用STM32U5A9NJH6Q操作外部PSRAM APS512XXN-OBR-BG,HSPI时钟源为主时钟160Mhz,当分频值设置为1也就是160/(1+1 )= 80Mhz时能正常通信,但是分频值设置为0也就是160/(0+1 )= 160Mhz时就没反应了。

```
hhspi->Instance = HSPI1;

  hhspi->Init.FifoThresholdByte       = 2U;
  hhspi->Init.MemoryMode              = HAL_XSPI_SINGLE_MEM;
  hhspi->Init.MemoryType              = HAL_XSPI_MEMTYPE_APMEM_16BITS;
  hhspi->Init.MemorySize              = (uint32_t)POSITION_VAL(APS512XX_RAM_SIZE);
  hhspi->Init.ChipSelectHighTimeCycle = 1U;//1U;
  hhspi->Init.FreeRunningClock        = HAL_XSPI_FREERUNCLK_DISABLE;
  hhspi->Init.ClockMode               = HAL_XSPI_CLOCK_MODE_0;
  hhspi->Init.WrapSize                = HAL_XSPI_WRAP_32_BYTES;
  hhspi->Init.ClockPrescaler          = 0;//1
  hhspi->Init.SampleShifting          = HAL_XSPI_SAMPLE_SHIFT_NONE;
  hhspi->Init.DelayHoldQuarterCycle   = HAL_XSPI_DHQC_DISABLE;
  hhspi->Init.ChipSelectBoundary      = 11U;//11U;
  hhspi->Init.DelayBlockBypass        = HAL_XSPI_DELAY_BLOCK_ON;
  /* tCEM = 2 us max => REFRESH+4 clock cycles for read */
  hhspi->Init.Refresh                 = ((2U * (hspi_clk / (Init->ClockPrescaler + 1U))) / 1000000U) - 4U;
  hhspi->Init.MaxTran                 = 0U;
```

使用特权

评论回复
沙发
呐咯密密| | 2024-3-8 15:01 | 只看该作者
IO 的工作电压是否是1.8V ?
如果是,需要打开 HSLV。
如果超过2.7V 则不能打开。

使用特权

评论回复
板凳
laocuo1142|  楼主 | 2024-3-15 12:53 | 只看该作者

使用特权

评论回复
地板
classroom| | 2024-3-15 12:56 | 只看该作者
检查PSRAM的供电和地线是否连接正确,是否有足够的电流供应。

使用特权

评论回复
5
flycamelaaa| | 2024-3-15 20:09 | 只看该作者
HSPI接口的时钟配置是否正确

使用特权

评论回复
6
powerantone| | 2024-3-15 21:00 | 只看该作者
检查STM32的HSPI接口与PSRAM之间的硬件连接是否正确。

使用特权

评论回复
7
probedog| | 2024-3-15 21:59 | 只看该作者
有可能是PSRAM本身存在问题。你可以尝试更换另一块PSRAM

使用特权

评论回复
8
stormwind123| | 2024-3-15 22:00 | 只看该作者
PSRAM初始化问题

使用特权

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

本版积分规则

1169

主题

5118

帖子

12

粉丝