I2C 통신으로 간단하게 EEPROM(AT24C04) 를 읽기/쓰기 테스트 해 봤습니다.
예전에 PSOC4로 해 놓은 자료가 있으니까, 자세한 설명은 빼고 동작 테스트만 해 보겠습니다.
먼저 I2C 인터럽트를 사용하여 데이터를 보내고 받는 함수들은 다음과 같습니다.
1. HAL_I2C_Master_Transmit_IT()
: I2C 인터럽트를 사용하여 데이터를 보내는(Write) 함수
2. HAL_I2C_MasterTxCpltCallback()
: I2C 인터럽트를 사용하여 데이터를 보내고 다 보내면 인터럽트에 의해 호출되는 함수
3. HAL_I2C_Master_Receive_IT()
: I2C 인터럽트를 사용하여 데이터를 받는(Receive) 함수
4. HAL_I2C_MasterRxCpltCallback()
: I2C 인터럽트를 사용하여 정해진 개수의 데이터를 다 받으면 인터럽트에 의해 호출되는 함수
위의 함수들은 stm32f4xx_hal_i2c.c 파일에 정의되어 있습니다.
HAL_I2C_MasterTxCpltCallback(), HAL_I2C_MasterRxCpltCallback() 과 같은 콜백함수는 __weak 키워드를 없애고
main.c 파일에 복사해서 내부 내용을 바꿔서 쓰면 인터럽트가 걸릴때 마다 콜벡함수를 호출하게 됩니다.
이 파일의 위치는 다음과 같습니다.
친구 돌잔치를 가봐야 해서 main.c 에서 EEPROM 읽고 쓰는 부분을 그림으로 올려 놓겠습니다.
[16 Byte Write 오실로 스코프 파형]
[Word Address Write 오실로 스코프 파형]
[16 Byte Read 오실로 스코프 파형]
소스 파일 첨부합니다.
'STM32F4' 카테고리의 다른 글
[STM32F4xx] Nucleo 보드 테스트 #8(SDIO CLK 설정:KEIL) (0) | 2016.12.01 |
---|---|
[STM32F4xx] Nucleo 보드 테스트 #7 (u-SD - SDIO-4Bit :KEIL) (0) | 2016.12.01 |
[STM32F4xx] Nucleo 보드 테스트 #5(I2C 1/2 :KEIL) (0) | 2016.12.01 |
[STM32F4xx] Nucleo 보드 테스트 #4(UART2 Interrupt:KEIL) (0) | 2016.12.01 |
[STM32F4xx] Nucleo 보드 테스트 #3 (Cube 사용법&Timer3 Interrupt:KEIL) (0) | 2016.12.01 |