<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-2">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Ani jsem necekal, ze se nekdo najde ;-)</div>
<div class="moz-cite-prefix">Ty 2 radky doplnim, koukam ze struktura
je lokalni promenna a asi zrovna ty neinicializovane hodnoty u mne
sedly. <br>
</div>
<div class="moz-cite-prefix">Vzal jsem jinak kod, jak ho vytvoril
konfigurator a upravil, funguje mi to vsechno vcetne autopoolingu,
je to naknec velmi podobne koncipovano jako QSPI u treba F7, jen
to muze mit az 8 I/O. Skoda, ze nejde zvolit varianta LL knihoven,
stejne mam uz DS teto periferie dokonale nastudovany, jak jsem se
s tim drbal :-D<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Ale mam takovy dojem, ze cim novejsi
rada STM, tim vic jsou knihovny site tak nejak horkou jehlou...<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Dne 14.12.2018 v 12:50 Tomáš Hamouz
napsal(a):<br>
</div>
<blockquote type="cite"
cite="mid:1905609203.20181214125000@divesoft.cz">
<title>Re: STM32L4R problem s OCTOSPI</title>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-2">
<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">
<tbody>
<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>
</span></span></span></td>
</tr>
</tbody>
</table>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list - sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
</blockquote>
<p><br>
</p>
</body>
</html>