개요 |
|
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 로 부터 데이터 읽기 하려는 경우. |
|
연관
DMA 이용한 non-blocking 방식의 i2c
상위정리
1. MCU : http://igotit.tistory.com/244 의 STM32
2. Connectivity : http://igotit.tistory.com/280 의 I2C
첫 등록 : 2016.03.10
최종 수정 : 2023.07.27
단축 주소 : https://igotit.tistory.com/702
'임베디드.일렉트로닉스 > STM32' 카테고리의 다른 글
STM32. L4x6 SPI 개요. (0) | 2016.03.23 |
---|---|
STM32. 리셋핀 NRST 풀업저항. (0) | 2016.03.17 |
STM32L476 보드. D1P123R1 (0) | 2016.03.05 |
STM32. SPI 사용 설정. (0) | 2016.02.01 |
STM32. JTAG/SWD 핀 설정. (0) | 2016.02.01 |
댓글