ATOLLIC에서 I2C HAL driver를 사용하여 I2C 방식 EEPROM 을 읽고 쓰는 글을 올렸었다.
테스트 과정에서 EEPROM 읽기 쓰기가 동작 했다 안했다 하여 한참 고생한 적이 있다.
정확한 원인은 찾지 못했으나,
- 오실로스코프로 측정 하여 MX_I2C1_Init() 과정에서 이상 파형이 출력되는 것을 확인
- 기준 clock이 enable 되는 시점이 문제라고 판단하여 그부분을 수정하였고 정상 동작됨을 확인 하였다.
(아래 파형 사진은 Time division이 모두 같음)
1. 현상
: I2C 초기화 중 SDA, SCL에 pulse 파형이 출력(MX_I2C1_Init()만 호출해도 결과는 같음)

2. 조치
: MX_I2C1_Init()의 I2C clock enable 시점을 변경하여 문제 해결
(회로 변경 X)

재미있는건, ST MCU shortage로 GigaDevice 복제품을 테스트 중이라 2번 조치 없이 I2C를 테스트 해보았는데, 파형은 아래와 같으며 정상 동작 한다.

정확한 원인을 아시거나, 같은 문제로 고민하시는 분은 댓글 달아주시면 많은 도움이 될것입니다.
'ST > STM32F103C8' 카테고리의 다른 글
| STM32F103C8 - LL driver + ADC + DMA (0) | 2025.08.08 |
|---|---|
| STM32F103C8 - 1cycle Time (0) | 2025.08.08 |
| STM32F103C8 - ADC(DMA interrupt) (1) | 2025.08.08 |
| STM32F103C8 - I2C(EEPROM) (1) | 2025.08.08 |
| STM32F103C8 - RTC(Systick handler) (0) | 2025.08.08 |




