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

STM32. I2C 사용하기.

by i.got.it 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 로 부터 데이터 읽기 하려는 경우.



 

연관

DMA 이용한 non-blocking 방식의 i2c 

 

STM32 . i2c DMA

STM32CubeMX 에서 i2c DMA 설정. - 본 예는 I2C4 Master 로 사용하는 경우, - I2C Configuration 에서 DMA Setting 에서 I2C4_RX, I2C4_TX 추가 코드 생성 main.c 의 MX_DMA_INIT() 함수를 보면 DMA1 Ch3 , 4 활성화 추가 된다. 사용

igotit.tistory.com

 

 

상위정리 

 

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

 

STM32. nRF52. ESP32. EFM8. EFM32. PSoC 활용 정리.

STM32. nRF52. ESP32. EFM8. EFM32. PSoC 총정리 제조사 칩 주요특징 실리콘랩 8bit MCU EFM8 시리즈 32bit EFM32 시리즈 EFM8 싸다. STM STM32 . 최고 항상 만족. Cypress pSoC pSoC6 은 기대해볼만. NORDIC nRF52 블투 무선솔루

igotit.tistory.com

 

 

 

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

 

Connectivity-WiFi/Bluetooth/USB/NFC/Ethernet

WiFi / Bluetooth / USB / NFC / Ethernet WiFi Bluetooth USB NFC Ethernet I2C WiFi - 1.How to WiFi 모듈 Ackme 작동 시험 - http://igotit.tistory.com/243 CC3100, CC3200 개발환경 구축 - http://igotit.tistory.com/295 WICED SDK 설치 - http://igotit.

igotit.tistory.com

 

 


첫 등록 : 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

댓글



 

비트코인




암호화폐       외환/나스닥/골드         암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)         프랍 트레이더 온라인 지원가능. MT4,MT5