티스토리 뷰
I2C란: I2C통신은 많은 전자제품 개발에 활용하고 있는 통신입니다. 통신속도를 비교해보면 USART<I2C<SPI 입니다. ATmega128에서는 400kHz 비트레이트까지 가능합니다. 1개 마스터의 SDA핀으로 이론상 128개의 슬레이브와 통신이 가능합니다. 근거리 통신으로써 수m이내에서 사용이 가능합니다.AVR에서 사용되는 TWI라는 용어는 I2C와 동일한 용어입니다.
우선 I2C통신을 하기위한 기본 회로도는 다음과 같습니다.
풀업저항을 다는 이유는 양방향으로 전기신호가 왔다갔다하는데 신호를 잡지 않으면 플로팅 현상이 발생할 수 있어서 풀업저항을 달아서 씁니다 제품마다 내부에 풀업저항이 달려있는 센서도 있으니 확인 해보고 사용해야 합니다.
I2C는 1:n 다중통신이 가능하기때문에 3.3v구동과 5v구동 mcu 혼합해서 사용이 힘듬니다.
5v구동 mcu사용시 VCC에 5v를 넣으시고
3.3v구동 mcu 사용시 VCC에 3.3v를 넣으시면 됩니다.
원래는 USART통신으로 드론을 만들다가 데이터 출력주기가 200Hz이상 필요하기 때문에 I2C통신을 사용해야 합니다.
myAHRS센서의 경우 I2C통신을 할 경우 데이터 출력주기가 최대 1kHz까지 나옵니다.
유아트의 경우는 최대 100Hz입니다.
통신 방법:우선 SDA(Serial DAta)는 데이터를 양방향으로 주고 받는 선 입니다. SCL(Serial CLock)은 마스터에서 나오는 클럭정보가 흐르는 선 입니다.
통신 과정에 대해서 말씀드리겠습니다.
1. 우선 마스터(mcu)가 SCL핀으로 클럭신호를 주면서 데이터 전송이 시작됩니다.
2. 마스터는 슬레이브에게 주소와 설정값을 보냅니다.
3.슬레이브가 마스터의 값을 받으면 ACK(Acknowledge(전송확인)) 값을 마스터에게 보냅니다.
4.슬레이브는 마스터에게 데이터를 전송합니다.
5.마스터는 수신했다고 슬레이브에게 신호를 보냅니다.(더 받을데이터가있으면 ACK신호를 보내고,데이터를 다 받았다면 NOT ACK신호를 보냅니다.
5.통신이 끝나면 마스터(mcu)가 SCL핀으로 클럭신호를 주면서 데이터 전송이 끝이 납니다.
atmega128의 경우 I2C레지스터는 다음과 같습니다.
레지스터의 자세한 내용은 데이터 시트를 참고해 주세요~
'드론' 카테고리의 다른 글
드론 모델링과 p제어까지 (0) | 2015.09.12 |
---|---|
iMAX B6 사용설명서 (1) | 2015.09.08 |
드론 1축 모델링(제어기 설계) (0) | 2015.08.27 |
드론 1축 균형잡기 (0) | 2015.08.26 |
쿼트콥터 일지2 (0) | 2015.08.14 |