본문 바로가기

Develop Knowledge/STM32F4 by ChrisP

9강. I2C 통신

본 단행본은 inflearn에 있는 ChrisP 강사님의 "HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌"를 정리한 글입니다.

 

강좌 바로 보기 >> https://www.inflearn.com/course/stm32f4/dashboard

 

[무료] HAL, CubeMX, TrueSTUDIO를 이용한 STM32F4 무료 강좌 - 인프런 | 강의

고성능 마이크로컨트롤러인 STM32F 시리즈를 처음 접하는 분들이 쉽게 시작할 수 있도록 무료 컴파일러 TrueSTUDIO 및 코드자동생성 프로그램 CubeMX 설치부터 칩 기능의 개념설명, 소스코드작성(HAL

www.inflearn.com

 

- I2C

강의는 영상에서 잘 해주므로, 여기서는 핵심만 보도록 하겠습니다.

 

- 회로도

위에 있습니다.

- CubeMX 설정

1. Pinout & Configuration

I2C 1 -> I2C 활성화

I2C 1에서는...

I2C Speed Mode -> Fast Mode.

 

- 코드 생성

CLCD.c
0.01MB
CLCD.h
0.00MB

  #include "CLCD.h"
  
  uint8_t str[20];
  uint8_t eeprom[10] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99};

  // 불러온 함수마다 I2C 통신하는 방식이 다르므로, 데이터시트와 hal_i2c.c를 보면서 확인할 것!!
  HAL_I2C_Mem_Write(&hi2c1, 0xA0, 0x00, I2C_MEMADD_SIZE_8BIT, &eeprom[0], 10, 10);
  HAL_Delay(3); // eeprom의 특성에 의해, 다른 동작을 수행하기 전에 딜레이가 필요햐다.

  for(int i=0; i<10; i++) eeprom[i] = 0x00; // eeprom 배열 초기화

  HAL_I2C_Mem_Read(&hi2c1, 0xA0, 0x00, I2C_MEMADD_SIZE_8BIT, &eeprom[0], 10, 10);

  // eeprom에서 데이터를 잘 불러왔는지 확인해본다.
  CLCD_GPIO_Init();
  CLCD_Init();
  sprintf(str, "%02x %02x %02x %02x %02x", eeprom[0], eeprom[1], eeprom[2], eeprom[3], eeprom[4]);
  CLCD_Puts(0, 0, str);
  sprintf(str, "%02x %02x %02x %02x %02x", eeprom[5], eeprom[6], eeprom[7], eeprom[8], eeprom[9]);
  CLCD_Puts(0, 1, str);

'Develop Knowledge > STM32F4 by ChrisP' 카테고리의 다른 글

11강. SDIO + FATFS 파일입출력  (0) 2023.02.05
10강. SPI 통신 (VS1003 음성코덱)  (0) 2023.02.04
8강. DAC  (0) 2023.02.03
7강. ADC with DMA  (0) 2023.02.03
6강. PWM 생성하기  (0) 2023.02.02