STM32L4R problem s OCTOSPI

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pátek Prosinec 14 13:33:40 CET 2018


Ani jsem necekal, ze se nekdo najde ;-)
Ty 2 radky doplnim, koukam ze struktura je lokalni promenna a asi zrovna 
ty neinicializovane hodnoty u mne sedly.
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

Ale mam takovy dojem, ze cim novejsi rada STM, tim vic jsou knihovny 
site tak nejak horkou jehlou...

Dne 14.12.2018 v 12:50 Tomáš Hamouz napsal(a):
> Re: STM32L4R problem s OCTOSPI 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.
> Potřeboval jsem to rozeběhnout v režimu v podstatě kompatibilnímu se 
> stadardní SPI pamětí, jen rychlejší.
> 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).
>
> Narazil jsme na pár zádrhelů:
> V Initu  :
>   Před voláním HAL_OSPIM_Config jsem musel přidat ještě tyto řádky:
>     OSPIM_Cfg_Struct.DQSPort = 1;
>     OSPIM_Cfg_Struct.IOHighPort = HAL_OSPIM_IOPORT_1_HIGH;
>    jinak mi to generovalo Hard fault výjimku
>
> 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.
>
> Tomáš
>
>
>
>
> 	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
> Problem je ve vygenerovane  inicializaci, ktera vypada takto:
> /* OCTOSPI1 init function */
> void MX_OCTOSPI1_Init(void)
> {
>   OSPIM_CfgTypeDef OSPIM_Cfg_Struct;
>   OSPI_AutoPollingTypeDef cfg;
>
>   hospi1.Instance = OCTOSPI1;
>   hospi1.Init.FifoThreshold = 1;
>   hospi1.Init.DualQuad = HAL_OSPI_DUALQUAD_DISABLE;
>   hospi1.Init.MemoryType = HAL_OSPI_MEMTYPE_MICRON;
>   hospi1.Init.DeviceSize = 22;
>   hospi1.Init.ChipSelectHighTime = 1;
>   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 = 3;
>   hospi1.Init.SampleShifting = HAL_OSPI_SAMPLE_SHIFTING_NONE;
>   hospi1.Init.DelayHoldQuarterCycle = HAL_OSPI_DHQC_DISABLE;
>   hospi1.Init.ChipSelectBoundary = 0;
>   if (HAL_OSPI_Init(&hospi1) != HAL_OK)
>   {
>     _Error_Handler(__FILE__, __LINE__);
>   }
>
>   OSPIM_Cfg_Struct.ClkPort = 1;
>   OSPIM_Cfg_Struct.NCSPort = 1;
>   OSPIM_Cfg_Struct.IOLowPort = HAL_OSPIM_IOPORT_1_LOW;
>   if (HAL_OSPIM_Config(&hospi1, &OSPIM_Cfg_Struct, 
> HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
>   {
>     _Error_Handler(__FILE__, __LINE__);
>   }
>
>   cfg.Match = 0;
>   cfg.Mask = 1;
>   cfg.MatchMode = HAL_OSPI_MATCH_MODE_AND;
>   cfg.AutomaticStop = HAL_OSPI_AUTOMATIC_STOP_ENABLE;
>   cfg.Interval = 0;
> if (HAL_OSPI_AutoPolling(&hospi1, &cfg, 
> HAL_OSPI_TIMEOUT_DEFAULT_VALUE) != HAL_OK)
>   {
>     _Error_Handler(__FILE__, __LINE__);
>   }
>
>   if (HAL_OSPI_AutoPolling_IT(&hospi1, &cfg) != HAL_OK)
>   {
>     _Error_Handler(__FILE__, __LINE__);
>   }
>
> }
> 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...
> 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...
> 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...
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20181214/b9c2466c/attachment.html>


Další informace o konferenci Hw-list