Identyfikator artykułu: 000083077 Typ materiałów: Rozwiązywanie problemów Ostatnia zmiana: 18-11-2014

Dlaczego biblioteka sprzętu SPI SoC Hardware Library (HWLIB) nie konfiguruje rozmiaru ramki sterowania?

Środowisko

  • Intel® Quartus® II Subscription Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Opis Biblioteka sprzętu SoC (HWLIB) może skonfigurować i kontrolować kontrolery Szeregowego Interfejsu Peryferyjnego (SPI) SoC. Źródło SPI HWLIB można znaleźć w pliku /ip/altera/hps/altera_hps/hwlib/src/hwmgr/alt_spi.c.  Plik alt_spi.c zawiera funkcję alt_spi_mw_config_set, która konfiguruje rozmiar klatki sterowania.  Jednakże błędnie wykorzystuje się ALT_SPIM_CTLR0_DFS_SET zdefiniować makro.  W zamian powoduje to zapisanie rozmiaru klatki sterowania w polu Rozmiar klatki danych w rejestrze kontrolnym.
    Rozdzielczość

    Aby rozwiązać ten problem, zamienić tekst "ALT_SPIM_CTLR0_DFS_SET" w funkcji alt_spi_mw_config_set w pliku alt_spi.c na "ALT_SPIM_CTLR0_CFS_SET".  Zaktualizowaną funkcją powinny być:

     

    //
    Ustawienie parametrów konfiguracji dla odpowiednich rejestrów w trybie mikrowire.
    //
    ALT_STATUS_CODE alt_spi_mw_config_set(ALT_SPI_DEV_t *spi_dev,
    const ALT_SPI_MW_CONFIG_t* cfg)
    {
    ALT_STATUS_CODE status = ALT_E_SUCCESS;

    jeśli (alt_spi_is_enabled(spi_dev) == ALT_E_TRUE)
    {
    ALT_E_ERROR zwrotu;
    }

    jeśli (alt_spi_checking(spi_dev) == ALT_E_FALSE)
    {
    zwrócić ALT_E_BAD_ARG;
    }

    jeśli ( cfg->ctl_frame_size > ALT_SPI_MW_CTL_FRAME_SIZE_MAX
    || > ALT_SPI_MW_SEQUENTIAL cfg->mode
    || > ALT_SPI_MW_DIR_TX cfg->dir)
    {
    ALT_E_ARG_RANGE zwrotu;
    }

    Ustawienie parametrów konfiguracji dla odpowiednich rejestrów
    uint32_t mwcr_register;
    uint32_t mwcr_mask;
    (spi_dev->op_mode)
    {
    ALT_SPI_OP_MODE_MASTER przypadku:
    mwcr_register = ALT_SPIM_MWCR_MWMOD_SET(model cfg->mode)
    | ALT_SPIM_MWCR_MDD_SET(cfg->dir)
    | ALT_SPIM_MWCR_MHS_SET(cfg->handshake_enabled);

    mwcr_mask = ALT_SPIM_MWCR_MWMOD_SET_MSK
    | ALT_SPIM_MWCR_MDD_SET_MSK
    | ALT_SPIM_MWCR_MHS_SET_MSK;

    alt_replbits_word(ALT_SPIM_MWCR_ADDR(spi_dev->lokacja), mwcr_mask, mwcr_register);
    alt_replbits_word(ALT_SPIM_CTLR0_ADDR(spi_dev->location),
                              ALT_SPIM_CTLR0_CFS_SET_MSK,
                              ALT_SPIM_CTLR0_CFS_SET(cfg->ctl_frame_size));
    przerwa;

    ALT_SPI_OP_MODE_SLAVE przypadku:
    mwcr_register = ALT_SPIS_MWCR_MWMOD_SET(model cfg->mode)
    | ALT_SPIS_MWCR_MDD_SET(cfg->dir);

    mwcr_mask = ALT_SPIS_MWCR_MWMOD_SET_MSK
    | ALT_SPIS_MWCR_MDD_SET_MSK;

    alt_replbits_word(ALT_SPIS_MWCR_ADDR(spi_dev->lokacja), mwcr_mask, mwcr_register);
    alt_replbits_word(ALT_SPIS_CTLR0_ADDR(spi_dev->location),
                              ALT_SPIS_CTLR0_CFS_SET_MSK,
                              ALT_SPIS_CTLR0_CFS_SET(cfg->ctl_frame_size));
    przerwa;
    }

    status zwrotu;
    }

     

    Naprawi się to w przyszłej wersji zestawu wbudowanych układów SoC Altera.

     

     

    Podobne produkty

    Ten artykuł dotyczy 1 prod.

    FPGA Arria® V ST SoC

    Zastrzeżenie

    1

    Publikowanie treści i wykorzystanie zawartości tej witryny podlega Regulaminowi witryny Intel.com.

    Materiały zawarte na tej stronie są tłumaczeniem z języka angielskiego, wykonanym częściowo przez człowieka, a częściowo automatycznie. Materiały te są udostępnione dla Twojej wygody i należy je traktować jedynie jako ogólne źródło informacji. Nie ma jednak gwarancji, że są one kompletne bądź poprawne. Jeśli istnieje jakakolwiek rozbieżność między wersją angielską tej strony a jej tłumaczeniem, wersja angielska jest wersją obowiązującą i ma rozstrzygające znaczenie. Wyświetl anglojęzyczną wersję tej strony.