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