I2C write
I2C 통신 시 Device Address를 보내고 나서 First Address와 Second Address를 보내고 나서 DATA를 보내야 함.
그래서 코드 작성 시
#include "mbed.h"
#define ADDR (0xA0) // 이렇게 Device Address를 16bit로 정해주고
I2C i2c(PB_9, PB_8);
int main() {
char data[3];
data[0]=0x01; // first word address
data[1]=0xAA; // second word address
data[2]='A' // 보낼 데이터
i2c.write(ADDR, data, 3);
}
I2C read
current address read는 아직 current address를 모른다. 그러므로 current address를 정해주어야 한다.
random read는 device address(1byte) 다음에 1st address(1byte)와 2nd address(1byte) (current address - 2byte)를 write 해주고 나서, read를 해야 한다. (current address = dummy write = dummy byte)
write-read 과정: write(device address, data, byte)로 데이터 보냄 -> read 전에 write(device address, current address, byte)로 address를 보냄 -> read(device address, buffer, byte)로 데이터 읽어들임
read 할 때 write 과정이 없이 바로 read를 하게 되면 current address가 없으므로 데이터를 제대로 못 읽어온다.
'언어 > 큐브인턴(Embedded)' 카테고리의 다른 글
Little Endian, Big Endian (0) | 2016.08.25 |
---|---|
함수 포인터 (printf함수의 원형과 함수 포인터 사용) (0) | 2016.08.23 |
리눅스 ASLR 해제 (0) | 2016.08.17 |
C언어 컴파일 과정 (0) | 2016.08.16 |
컴퓨터 구조(CPU, 메모리, 버스) 특강 (0) | 2016.08.03 |