Skip to main content
Visitor II
December 3, 2019
Question

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

  • December 3, 2019
  • 1 reply
  • 677 views

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?

    This topic has been closed for replies.

    1 reply

    stanleyAuthor
    Visitor II
    December 13, 2019

    Anybody here?