본문 바로가기
임베디드.일렉트로닉스/STM32

STM32. I2C 사용하기.

by 리치굿맨 2016. 3. 10.

 

개요

 

STM32 에서 I2C 사용하기 위하여 CubeMX에서의 설정 .

 

I2C 활용하는 전체순서.

1. CubeMX에서 I2C사용하도록 설정하고, 이를 프로젝트 (예 : KEIL)에 반영하고,

2. 프로젝트(예 : KEIL )에서 I2C 관련 함수 호출.

 

연관.

I2C 기본 지식 : http://igotit.tistory.com/328

 

 

 

 

 

CubeMX에서 I2C 사용 설정

 

 

CubeMX 프로그램에서 Pinout탭에서 I2C1 에서 I2C 선택한다(아래 붉박), 그럼 I2C SDA, SCL 핀이 자동으로 지정된다(아래 파박).

 

I2C 설정하기. 탭 "Configuration" 에서 I2C1 클릭하여,

 

탭 "Parameter Settings" 에서 I2C통신속도 선택하여 아래 붉박은 Standard Mode 를 선택한 경우이다. 이 경우의 I2C주파수는 100kHz 로 자동 설정된다. Fast 모드를 선택하면 400kHz, Fast Mode Plus 를 선택하면 1000kHz 로 I2C 주파수가 자동설정된다. 개발대상 시스템의 I2C 버스에 물려있는 모든 Slave 들의 가능한 지원속도에 맞게 선택하면된다.

 

 

I2C 핀의 Pull-up 설정.

I2C로 핀이 할당되면 자동으로 풀업으로 설정된다. 외부회로상에서 I2C 버선 선 2개에 별도로 풀업저항 달지 않아도 되므로 편하다.

 

여기까지가 CubeMX 에서 I2C 관련 설정의 전부임. 이후 I2C 설정을 프로젝트에 반영하기 위하여

메뉴 : Project  -> Generate Code 클릭하여 프로젝트에 반영시킨다. 

 

 

 

 

 

 

프로젝트에서 I2C 함수 활용.

 

상기 CubeMX 에서 I2C 사용가능하게 한 이후 프로젝트 (예 KEIL) 에서 보면 아래처럼 라이브러리 파일이 들어와 있다.

 _hal_i2c.c 에 필수 IO 핸들링가능한 함수가 제공된다.  _hal_i2c_ex.c 에는 wakeup 관련 함수가 있다.

사용법은 해당 파일의 주석 부분을 보면서 이해 해야한다.

 

main.c 에보면 CubeMX에서 자동으로 생성해둔 I2C관련 부분을 보면 (아래 그림),

I2C_HandleTypeDef 자료형으로 hi2c1 이 선언되어있고, I2C 초기화 하는 함수 MX_I2C1_Init(void)가 정의되어있고 main 함수 초기에 호출되고 있다.

 

초기화 함수 내 부분에 CubeMX에서 우리가 설정한 것들(예 속도 standard 로 선택하여  I2C 스피드가 100kHz 한것등.)대로 되어있다.

 

I2C 함수 호출하기.

- 아래2개가 가장 흔하게 사용되는 함수임.

 

HAL_I2C_Master_Transmit (,,, ) : STM32가 I2C Master 이면서 I2C 버스의 특정 slave로 데이터 출력 하려는 경우.

 

HAL_I2C_Master_Receive(,,, ) : STM32가 I2C Master 이면서 I2C 버스의 특정 slave 로 부터 데이터 읽기 하려는 경우.

 

 

 

 

 

 

 

 본 글이 포함된 상위 정리장소 :

 

1. MCU : http://igotit.tistory.com/244 의 STM32

 

2. Connectivity : http://igotit.tistory.com/280 의 I2C

 

 

 

///702.

 

 

'임베디드.일렉트로닉스 > STM32' 카테고리의 다른 글

STM32. L4x6 SPI 개요.  (0) 2016.03.23
STM32. 리셋핀 NRST 풀업저항.  (0) 2016.03.17
STM32. I2C 사용하기.  (0) 2016.03.10
STM32L476 보드. D1P123R1  (0) 2016.03.05
STM32. SPI 사용 설정.  (0) 2016.02.01
STM32. JTAG/SWD 핀 설정.  (0) 2016.02.01

태그

, ,

댓글0


   
현물 |선물 인버스 |선물 USDT     현물 | 선물 USDT |봇제작툴/카피트레이딩     현물 |선물 인버스 |선물 USDT     선물 인버스 |선물 USDT