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.