ST chip의 EEPROM 인 M24M01-R의 READ/WRITE 관련 되어서 자료를 정리 합니다.
https://gangsanilee.tistory.com/2921 / I2C의 기본 Spec을 보기 원하신다면 링크를 따라가 주세요.
칩 간단한 기능 설명 |
위의 그림에서 1Mbit ( 128 K byte )
I2C WRITE |
EEPROM에 저장 될 수 있는 부분을 보았다. 바이트로는 131,072 만큼 비트로는 1Mbit로 저장 할 수 있다. 비트 단위로 저장을 한다면 1Mbit까지 저장 할 수 있다.
아래 그림은 규약이다. 난 이렇게 쓰고 싶지 않습니다. 그래요 쓰고 싶지 않으면 쓰지 말아야지요. 하지만 규약을 어기면 EEPROM과 대화를 할 수가 없습니다. EEPROM과 대화를 하기 위해서 우리는 이 친구가 알수 있는 말로 대화를 시도 합니다.
디바이스를 셋팅 합니다. 그리고 Byte Address를 상위 비트 하위 비트로 나누어 메세지를 전송 합니다.
여기서 하나 16Byte는 0xFFFF 입니다.
그러나 우리의 칩은 0x01 0000 입니다. 16Byte를 넘어 섭니다. 이 말을 하고 싶어서 이 많은 말을 한거 같내요. 그럼 어드레스를 늘려서 가면 되지 않나? 그럼 대화를 할수가 없죠. 그래서 Dev Sel에 메세지를 전합니다. 나 상위에 저장하고 싶어.
소스 상으로는 이렇게 되는 겁니다.
//configure slave address, page select bit and read/write# bit
if(mem_addr >= 0x10000)
{ //memory address points to 10000h to 1FFFFh
device_addr_write =
EEPROM_SLAVE_DEV0_ADDR | EEPROM_PAGE_SELECT_H | EEPROM_WRITE_TO_SLAVE;
}else
{ //memory address points to 00000h to 0FFFFh
device_addr_write =
EEPROM_SLAVE_DEV0_ADDR | EEPROM_PAGE_SELECT_L | EEPROM_WRITE_TO_SLAVE;
}
여기서 define된 부분을 보겠습니다.
#define EEPROM_SLAVE_DEV0_ADDR 0xA0
//10000h to 1FFFFh (17-bit memory address) - P/S bit set to High (MSB)
#define EEPROM_PAGE_SELECT_H 0x02
//00000h to 0FFFFh (17-bit memory address) - P/s bit set to Low (MSB)
#define EEPROM_PAGE_SELECT_L 0x00
#define EEPROM_WRITE_TO_SLAVE 0x00
#define EEPROM_READ_FROM_SLAVE 0x01
칩의 어드레스는 0xA0이 됩니다.
그리고 상위 어드레스에 저장을 하기 위해서는 추가적으로
0xA2 이라고 추가 합니다.
비트로 나눈다면
1010 00 1x
x 는 쓰기는 0 읽기는 1이 됩니다.
16byte 주소까지는 0xA0으로 메세지를 주고 받다가 32Byte가 넘어가는 순간부터 0xA2가 되면서 쓰기가 되는 겁니다. 읽기는 마지막 하위 비트를 1로 셋팅하면서 동작 됩니다.
PDF는 업데이트 될 수도 있으니, 조금 이상하게 동작 된다면 ST 를 들어가 새로 나온 파일을 다운받아서 보시길 바랍니다.
'기타_모아 > 자료실' 카테고리의 다른 글
[간단영상편집] 동영상 편집 (0) | 2020.09.26 |
---|---|
[자료] 대륜 E&S ISP 오류 관련 (0) | 2020.09.21 |
[자료] Office table jpg (0) | 2020.09.04 |
[자료] Nordic CMSIS Configuration Wizard (0) | 2020.08.31 |
[엑셀] 특정 영역만 수정 또는 입력 하는 방법 (0) | 2020.08.27 |
댓글