Identifiant de l'article: 000083077 Type de contenu: Dépannage Dernière révision :: 11/18/2014

Pourquoi la bibliothèque matérielle SPI SoC (HWLIB) ne configure-t-elle pas la taille de la trame de contrôle ?

Environnement

  • Édition d'abonnement Intel® Quartus® II
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descriptif La bibliothèque matérielle SoC (HWLIB) peut configurer et contrôler les contrôleurs SPI (Serial Peripheral Interface). La source SPI HWLIB se trouve dans le fichier /ip/altera/hps/altera_hps/hwlib/src/hwmgr/alt_spi.c.  Le fichier alt_spi.c contient une fonction, alt_spi_mw_config_set, qui configure la taille de la trame de contrôle.  Cependant, cela utilise incorrectement le ALT_SPIM_CTLR0_DFS_SET définir une macro.  Cela entraîne que la taille de la trame de contrôle soit écrite sur le champ de taille de trame de données dans le registre de contrôle à la place.
    Solution

    Pour contourner ce problème, remplacez le texte « ALT_SPIM_CTLR0_DFS_SET » dans la fonction alt_spi_mw_config_set du fichier alt_spi.c par « ALT_SPIM_CTLR0_CFS_SET ».  La fonction mise à jour doit être :

     

    //
    Définissez les paramètres de configuration sur les registres appropriés pour le mode microwire.
    //
    ALT_STATUS_CODE alt_spi_mw_config_set (ALT_SPI_DEV_t*spi_dev),
    const ALT_SPI_MW_CONFIG_t* cfg)
    {
    statut ALT_STATUS_CODE = ALT_E_SUCCESS ;

    si (alt_spi_is_enabled(spi_dev) == ALT_E_TRUE)
    {
    ALT_E_ERROR de retour ;
    }

    si (alt_spi_checking(spi_dev) == ALT_E_FALSE)
    {
    ALT_E_BAD_ARG de retour ;
    }

    si (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 de retour ;
    }

    Définissez les paramètres de configuration sur les registres appropriés
    uint32_t mwcr_register ;
    uint32_t mwcr_mask ;
    commutateur (spi_dev->op_mode)
    {
    ALT_SPI_OP_MODE_MASTER de dossier :
    mwcr_register = ALT_SPIM_MWCR_MWMOD_SET (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->location), 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)) ;
    break ;

    ALT_SPI_OP_MODE_SLAVE de dossier :
    mwcr_register = ALT_SPIS_MWCR_MWMOD_SET (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->location), 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)) ;
    break ;
    }

    état de retour ;
    }

     

    Cette configuration sera corrigée dans une version ultérieure de la suite Altera SoC Embedded Design.

     

     

    Produits associés

    Cet article concerne 1 Produits

    FPGA SoC Arria® V ST

    Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c'est la version anglaise qui prévaut. Afficher la version anglaise de cette page.