cancel
Showing results for 
Search instead for 
Did you mean: 

STMH7 I2S extension module didn't work in latest HAL driver V1.5.0 and V1.6.0

stanley
Associate II

I try to include stm32h7xx_hal_i2s_ex.h and define SPI_I2S_FULLDUPLEX_SUPPORT

These are the errors that occur as below:

..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(243): error:  #20: identifier "HAL_I2S_STATE_BUSY_TX_RX" is undefined
    hi2s->State = HAL_I2S_STATE_BUSY_TX_RX;
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(250): error:  #136: struct "<unnamed>"  has no field "DR"
      hi2s->Instance->DR = (*pTxData++);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(254): error:  #20: identifier "I2S2ext_BASE" is undefined
      
_HAL_I2SEXT_ENABLE(hi2s);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(254): error:  #20: identifier "I2S3ext_BASE" is undefined
      
_HAL_I2SEXT_ENABLE(hi2s);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(254): error:  #20: identifier "SPI_I2SCFGR_I2SE" is undefined
      
_HAL_I2SEXT_ENABLE(hi2s);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(280): error:  #136: struct "<unnamed>"  has no field "DR"
          hi2s->Instance->DR = (*pTxData++);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(323): error:  #20: identifier "I2S2ext_BASE" is undefined
      
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(323): error:  #20: identifier "I2S3ext_BASE" is undefined
      
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(327): error:  #20: identifier "SPI_I2SCFGR_I2SE" is undefined
      
_HAL_I2SEXT_ENABLE(hi2s);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(377): error:  #136: struct "<unnamed>"  has no field "DR"
          (*pRxData++) = hi2s->Instance->DR;
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(487): error:  #20: identifier "I2S2ext_BASE" is undefined
      
_HAL_I2SEXT_ENABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR));
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(487): error:  #20: identifier "I2S3ext_BASE" is undefined
      
_HAL_I2SEXT_ENABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR));
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(504): error:  #20: identifier "I2S2ext_BASE" is undefined
    
_HAL_I2SEXT_ENABLE(hi2s);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(504): error:  #20: identifier "I2S3ext_BASE" is undefined
    
_HAL_I2SEXT_ENABLE(hi2s);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(504): error:  #20: identifier "SPI_I2SCFGR_I2SE" is undefined
    
_HAL_I2SEXT_ENABLE(hi2s);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(574): error:  #20: identifier "HAL_I2S_STATE_BUSY_TX_RX" is undefined
    hi2s->State     = HAL_I2S_STATE_BUSY_TX_RX;
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(600): error:  #20: identifier "I2S2ext_BASE" is undefined
      HAL_DMA_Start_IT(hi2s->hdmarx, (uint32_t)&
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(600): error:  #20: identifier "I2S3ext_BASE" is undefined
      HAL_DMA_Start_IT(hi2s->hdmarx, (uint32_t)&
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(603): error:  #20: identifier "SPI_CR2_RXDMAEN" is undefined
      
ET_BIT(I2SxEXT(hi2s->Instance)->CR2, SPI_CR2_RXDMAEN);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(607): error:  #136: struct "<unnamed>"  has no field "DR"
      HAL_DMA_Start_IT(hi2s->hdmatx, *(uint32_t *)tmp, (uint32_t)&hi2s->Instance->DR, hi2s->TxXferSize);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(610): error:  #20: identifier "SPI_CR2_TXDMAEN" is undefined
      
ET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(613): error:  #20: identifier "SPI_I2SCFGR_I2SE" is undefined
      if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE)
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(633): error:  #20: identifier "I2S2ext_BASE" is undefined
      HAL_DMA_Start_IT(hi2s->hdmatx, *(uint32_t *)tmp, (uint32_t)&
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(633): error:  #20: identifier "I2S3ext_BASE" is undefined
      HAL_DMA_Start_IT(hi2s->hdmatx, *(uint32_t *)tmp, (uint32_t)&
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(636): error:  #20: identifier "SPI_CR2_TXDMAEN" is undefined
      
ET_BIT(I2SxEXT(hi2s->Instance)->CR2, SPI_CR2_TXDMAEN);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c(640): error:  #136: struct "<unnamed>"  has no field "DR"
      HAL_DMA_Start_IT(hi2s->hdmarx, (uint32_t)&hi2s->Instance->DR, *(uint32_t *)tmp, hi2s->RxXferSize);
..\Drivers\STM32H7xx_HAL_Driver\Src\stm32h7xx_hal_i2s_ex.c: 0 warnings, 30 errors

It appears that the current stm32h7xx_hal_i2s_ex.c file is broken due to undeclared identifiers.

I saw the I2S full duplex was mentioned in the release notes of the v1.3.0 (Known Limitations section) and Fully reworked HAL I2S driver to fix issues in the release notes of the v1.5.0.

So anybody know what's going wrong?

1 REPLY 1
stanley
Associate II

Anybody here?