<html><head><title>Re: STM32L4R problem s OCTOSPI</title>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-2">
</head>
<body>
<span style=" font-family:'Courier New'; font-size: 10pt;">Měl jsem s tím také problém, Autopolling se mi také nepodařilo rozeběhnout, ale je fakt že jsem se o to nijak extra nesnažil.<br>
Potřeboval jsem to rozeběhnout v režimu v podstatě kompatibilnímu se stadardní SPI pamětí, jen rychlejší.<br>
Nakonec jsem jen použil kód z inicializace a zbytek jen jako inspiraci. Rozhodně to co vypadlo z Cube moc použitelné nebylo (ano, vím, zhřešil jsem a použil Cube a ještě měl hříšné myšlenky že by mi to usnadnilo práci).<br>
<br>
Narazil jsme na pár zádrhelů:<br>
V Initu  :<br>
  Před voláním HAL_OSPIM_Config jsem musel přidat ještě tyto řádky:<br>
    OSPIM_Cfg_Struct.DQSPort = 1;<br>
    OSPIM_Cfg_Struct.IOHighPort = HAL_OSPIM_IOPORT_1_HIGH;<br>
   jinak mi to generovalo Hard fault výjimku<br>
<br>
Další zádrhel je že dummy byty se zdávají jako počet hodinových cyklů, nikoliv počet bytů. Tzn. ve standardním SPI x8, v QSPI x2.<br>
<br>
Tomáš<br>
<br>
<br>
<br>
</span><table bgcolor="#ffffff">
<tr>
<td width=2 bgcolor= #0000ff><br>
</td>
<td width=1155><span style=" font-family:'courier new'; font-size: 10pt;">Zdravim, jsem z toho uz trosku jelen, normalne v CubeMX nakonfiguruju rozhrani a parametry (tady jeste trosku tapu) vygeneruju kod a prelozim. Pripojena je SPI FLASH 26F064 kterou bych chtel provozovat  jako QSPI<br>
Problem je ve vygenerovane  inicializaci, ktera vypada takto:<br>
/* OCTOSPI1 init function */<br>
void MX_OCTOSPI1_Init(void)<br>
{<br>
  OSPIM_CfgTypeDef OSPIM_Cfg_Struct;<br>
  OSPI_AutoPollingTypeDef cfg;<br>
<br>
  hospi1.Instance = OCTOSPI1;<br>
  hospi1.Init.FifoThreshold = 1;<br>
  hospi1.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;<br>
  hospi1.Init.MemoryType = HAL_OSPI_MEMTYPE_MICRON;<br>
  hospi1.Init.DeviceSize = 22;<br>
  hospi1.Init.ChipSelectHighTime = 1;<br>
  hospi1.Init.FreeRunningClock = HAL_OSPI_FREERUNCLK_DISABLE;<br>
  hospi1.Init.ClockMode = HAL_OSPI_CLOCK_MODE_0;<br>
  hospi1.Init.WrapSize = HAL_OSPI_WRAP_NOT_SUPPORTED;<br>
  hospi1.Init.ClockPrescaler = 3;<br>
  hospi1.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_NONE;<br>
  hospi1.Init.DelayHoldQuarterCycle = HAL_OSPI_DHQC_DISABLE;<br>
  hospi1.Init.ChipSelectBoundary = 0;<br>
  if (HAL_OSPI_Init(&hospi1) != HAL_OK)<br>
  {<br>
    _Error_Handler(__FILE__, __LINE__);<br>
  }<br>
<br>
  OSPIM_Cfg_Struct.ClkPort = 1;<br>
  OSPIM_Cfg_Struct.NCSPort = 1;<br>
  OSPIM_Cfg_Struct.IOLowPort = HAL_OSPIM_IOPORT_1_LOW;<br>
  if (HAL_OSPIM_Config(&hospi1, &OSPIM_Cfg_Struct, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)<br>
  {<br>
    _Error_Handler(__FILE__, __LINE__);<br>
  }<br>
<br>
  cfg.Match = 0;<br>
  cfg.Mask = 1;<br>
  cfg.MatchMode = HAL_OSPI_MATCH_MODE_AND;<br>
  cfg.AutomaticStop = HAL_OSPI_AUTOMATIC_STOP_ENABLE;<br>
  cfg.Interval = 0;<br>
  <span style=" color: #ff0000;">if (HAL_OSPI_AutoPolling(&hospi1, &cfg, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)<br>
<span style=" color: #000000;">  {<br>
    _Error_Handler(__FILE__, __LINE__);<br>
  }<br>
<br>
  if (HAL_OSPI_AutoPolling_IT(&hospi1, &cfg) != HAL_OK)<br>
  {<br>
    _Error_Handler(__FILE__, __LINE__);<br>
  }<br>
<br>
}<br>
Funkce if (HAL_OSPI_AutoPolling(&hospi1, &cfg, HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK) vrati HAL_OSPI_ERROR_INVALID_SEQUENCE protoze hospi->State == HAL_OSPI_STATE_CMD_CFG neni splneno a state je HAL_OSPI_STATE_READY, coz je logicke, protoze nebyl spusten zadny command...<br>
Je to BUG a nezbyde, nez v CubeMX periferii zakazat a nakonfigurovat komplet sam, nebo delam neco spatne? IMHO to takhle proste nemuze fungovat, inicializaci jsem docela dukladne prokrokoval a neni tam nic, co by state zmenilo na HAL_OSPI_STATE_CMD_CFG...<br>
Bohuzel tohle rozhrani ma v konfiguratoru jen volbu HAL, zadne LL a konfiguracni dialog mi prijde taky sity nejak horkou jehlou, chybi tam spousta nastaveni co by dle DS sla, hlavne treba rezim, aby to krome inicializace nic automaticky nedelalo...<br>
<br>
</td>
</tr>
</table>
</body></html>