본문 바로가기
임베디드기기

STM32 DMA를 통한 I2C Receive시 Hard Fault 문제

by Joseph.Lee 2020. 8. 29.

STM32CubeMX로 코드를 생성하고 Linux Machine 과 연결한 뒤 HAL_I2C_Slave_Receive_DMA 으로 읽기를 시작한다.

 

Linux Machine에서 i2cdetect 명령을 실행하면 STM32에서는 Hard Fault가 발생한다.

 

https://community.st.com/s/question/0D50X0000BTcGDf/bug-report-fix-hal-i2c-interrupt-handler-not-working

 

 

비슷한 문제인거 같다.

 

stm32f1xx_hal_i2c.c의 I2C_DMAAbort에서

 

/* Clear Complete callback */
hi2c->hdmatx->XferCpltCallback = NULL;
hi2c->hdmarx->XferCpltCallback = NULL;

 

RX에만 DMA를 활성화 시킨 경우 hdmatx가 NULL이기 때문이다..

 

 

 

반응형

댓글