검색결과 리스트
글
[Tiva] I2CMasterSlaveAddrSet()
I2CMasterSlaveAddrSet(uint32_t ui32Base, uint8_t ui8SlaveAddr, bool bReceive)
이 함수는 MCU가 I2C 통신을 개시하기 전에 통신할 Slave의 주소값을 설정한 후 통신을 개시할 때 쓰는 함수이다.
uint32_t ui32Base
첫 번째 인자는 I2C 통신을 하게 될 Master 의 Base Address이다.
uint8_t ui8SlaveAddr
두 번째 인자는 I2C 통신시 전달할 Slave의 Address이다. 이 때 Slave의 Address값은 7bit값이어야 한다.
시중에 있는 I2C 통신의 DataSheet에서 설정되어 있는 주소는 일반적으로 8비트로 구성되어있는데
이는 해당 8비트 주소의 오른쪽 끝부분이 R/S를 설정하는 부분이기 때문이다.
DataSheet에 설정된 Address를 사용할 경우 실제 Slave의 Address를 오른쪽으로 비트이동을 하면 된다. 간단하게 ui8SlaveAddr / 2를 하면 쉽게 적용할 수 있다.
bool bReceive
세 번째 인자는 I2C 통신시 Slave에게 하고자 하는 R/S를 설정합니다.
true - R(Slave로부터 데이터를 읽어옵니다.)
false - S(Slave에 값을 저장합니다.)
다음은 해당 함수를 적용한 소스코드와 결과이다.
ROM_I2CMasterSlaveAddrSet(I2C0_BASE, 0xE0 / 2, false);
ROM_I2CMasterDataPut(I2C0_BASE, 0x7E);
ROM_I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_SEND);
while (ROM_I2CMasterBusy(I2C0_BASE)) {
}
① : SLAVE의 ADDRESS 주소
② : R/S
③ : SLAVE의 ACK
④ : R의 경우 = Master가 Slave로부터 전달되는 값을 읽음
S의 경우 = Master가 Slave에게 값을 전달함
⑤ : Master의 ACK
'임베디드 > TI' 카테고리의 다른 글
[Tiva] tm4c 시리즈 MCU로 TextLCD(CLCD) 동작 (0) | 2014.08.21 |
---|---|
[Tiva]startup_ccs.c 파일에 외부 인터럽트 추가하기 (0) | 2014.08.09 |
[Tiva] TM4C의 I2C 통신 파형 보는 방법 (4) | 2014.07.28 |
[Tiva] TM4C 시리즈에서 외부인터럽트 구현 (12) | 2014.07.26 |
[Tiva] TM4C 시리즈에서 타이머 구현 (0) | 2014.07.26 |