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가 없으므로 데이터를 제대로 못 읽어온다.

Posted by 知彼知己百戰不殆
,