[stm32] I2C 통신시에 restart를 사용하는 이유

이채윤·2022년 6월 10일
0

임베디드

목록 보기
54/70
post-thumbnail

[Restart가 어디에 사용되는가?]

  • Restart는 I2C Master에서 명령을 보낸 뒤에 I2C의 Stop 없이 I2C Slave로부터 데이터를 읽는데 사용된다.

[Restart를 사용하는 이유]

  • Restart를 사용하는 것은 I2C 통신에서 I2C Master가 2개 이상 여러개가 있을 때 다른 I2C Master가 제어권을 가져가지 못하도록 하는데 목적이 있다.
  • Restart는 Stop없이 Start하기 때문에 다른 I2C Master가 통신을 시작할 수 없다.

[read 할 때 Restart가 들어가는 I2C 통신방식에 있어서 어떤 HAL 함수를 써야 하는지?]

  • 단순한 패킷의 경우에 (sub address 1개만 써주면되는 경우)  HAL_I2C_Mem_Read()를 사용하면된다.
  • 복잡한 패킷 (AK처럼 3개나 더 이상 써야하는 경우) HAL_I2C_Master_Sequential_Transmit_IT 와   HAL_I2C_Master_Sequential_Receive_IT의 조합을 사용한다.

0개의 댓글