STM32CubeMX 에서 i2c DMA 설정.
- 본 예는 I2C4 Master 로 사용하는 경우,
- I2C Configuration 에서 DMA Setting 에서 I2C4_RX, I2C4_TX 추가
NVIC 설정에서 I2C event interrupt, I2C error Interrupt 필수 체크하여 활성화 .
활성화 하지 않으면, 코드에서 함수 HAL_I2C_Master_Transmit_DMA(,,,) 호출 반환값이 HAL_ERROR 반환되고 정상 데이터 송신 안됨.
코드 생성
main.c 의 MX_DMA_INIT() 함수를 보면 DMA1 Ch3 , 4 활성화 추가 된다.
사용자 코드
i2c 데이터 송신 , 수신용으로 함수 이름에 _DMA 부착된 함수 호출하면 된다.
main.c 등에 송신 , 수신 완료시 실행되는 콜백함수를 정의하고 완료시 실행되어야 할것 구현한다.
연관
DMA 사용하지 않는 blocking 방식
상위정리
https://igotit.tistory.com/244 의 STM32
첫 등록 : 2023.07.27
최종 수정 :
단축 주소 : https://igotit.tistory.com/4750
'임베디드.일렉트로닉스 > STM32' 카테고리의 다른 글
STM32CubeIDE . 디버그 콘솔에 printf 출력 (0) | 2023.08.16 |
---|---|
STM32CubeIDE . 프로젝트 복사하여 다른 이름 새 프로젝트 만들기. (2) | 2023.07.16 |
STM32 USB DFU . STM32CubeProgrammer 이용 가능 (0) | 2023.07.15 |
STM32CubeIDE . Debug . SWV 활성화 . 데이터 그래프로 보기 (0) | 2023.07.14 |
STM32CubeIDE . 오류 해결 . Debug . No source available for "main() at 0x8000262" (0) | 2023.07.14 |
댓글