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.