STM32
直播中

陈键

8年用户 1028经验值
擅长:可编程逻辑 电源/新能源
私信 关注
[问答]

请问STM32H730 OSPI在内存映射模式下单次读写长度是多少?

我最近尝试使用OSPI驱动APS6404,这非常方便的扩展了RAM的大小,读写速度也有30M字节每秒。
我在阅读APS6404的手册时注意到它单次突发访问是1k字节大小,在STM32中我没有注意到这方面的配置。
  OSPIM_CfgTypeDef sOspiManagerCfg = {0};  /* USER CODE BEGIN OCTOSPI1_Init 1 */  /* USER CODE END OCTOSPI1_Init 1 */  hospi1.Instance = OCTOSPI1;  hospi1.Init.FifoThreshold = 1;  hospi1.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;  hospi1.Init.MemoryType = HAL_OSPI_MEMTYPE_APMEMORY;  hospi1.Init.DeviceSize = 23;  hospi1.Init.ChipSelectHightime = 2;  hospi1.Init.FreeRunningClock = HAL_OSPI_FREERUNCLK_DISABLE;  hospi1.Init.ClockMode = HAL_OSPI_CLOCK_MODE_0;  hospi1.Init.WrapSize = HAL_OSPI_WRAP_NOT_SUPPORTED;  hospi1.Init.ClockPrescaler = 2;  hospi1.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_HALFCYCLE;  hospi1.Init.DelayHoldQuarterCycle = HAL_OSPI_DHQC_DISABLE;  hospi1.Init.ChipSelectBoundary = 0;  hospi1.Init.DelayBlockBypass = HAL_OSPI_DELAY_BLOCK_BYPASSED;  hospi1.Init.MaxTran = 0;  hospi1.Init.Refresh = 0;  if (HAL_OSPI_Init( hospi1) != HAL_OK)  {    Error_Handler();  }是不是WrapSize可以进行设置,但是我配置为NOT_SUPPORTED似乎也工作的很好。我想了解一些OSPI在内存映射模式下默认的突发访问长度是多少?



回帖(1)

陈敏

2024-5-31 17:26:04
首先,我们需要了解STM32H730 OSPI(Octal Serial Peripheral Interface)的基本功能。OSPI是一种高速串行接口,用于与外部存储器(如SPI闪存、SRAM等)进行通信。在STM32H730中,OSPI可以配置为内存映射模式,这意味着它可以像访问内部存储器一样访问外部存储器。

关于STM32H730 OSPI在内存映射模式下单次读写长度的问题,我们需要查看STM32H7系列的参考手册和OSPI驱动的配置。在STM32H7系列的参考手册中,OSPI的内存映射模式并没有明确指定单次读写长度。然而,我们可以从OSPI驱动的配置中找到一些线索。

在您提供的代码片段中,我们可以看到以下几个关键配置:

1. `hospi1.Instance = OCTOSPI1;`:这行代码设置了OSPI实例为OCTOSPI1。
2. `hospi1.Init.FifoThreshold = 1;`:这行代码设置了FIFO阈值为1。FIFO(First In First Out)是一种缓冲区,用于在OSPI传输过程中存储数据。当FIFO中的可用空间少于阈值时,OSPI会触发中断。这个设置并不直接影响单次读写长度。
3. `hospi1.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;`:这行代码禁用了双四线模式。双四线模式允许OSPI在一个时钟周期内传输更多的数据。禁用此模式意味着OSPI将使用单线模式进行通信。

关于APS6404的单次突发访问长度为1k字节的问题,这实际上是与APS6404芯片的特性有关,而不是STM32H730 OSPI的配置。在STM32中,您需要确保OSPI驱动能够与APS6404的突发访问长度兼容。这通常涉及到设置OSPI驱动的时序参数,以适应APS6404的访问需求。

在STM32H730的OSPI驱动中,您可以通过配置`OSPIM_CfgTypeDef`结构体中的`Init`字段来设置时序参数。例如,您可以设置`Init.SampleShifting`、`Init.DelayHoldQuarterCycle`等参数,以确保OSPI驱动与APS6404的时序要求相匹配。

总之,STM32H730 OSPI在内存映射模式下单次读写长度并没有一个固定的值,而是取决于OSPI驱动的配置以及外部存储器(如APS6404)的特性。为了确保OSPI驱动与APS6404兼容,您需要仔细配置OSPI驱动的时序参数,并确保它们满足APS6404的访问需求。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分