Firmware

EEPROM 사용시 주의사항 (AT24Cxx)

또난 2024. 1. 7. 15:27

AT24C04C-AT24C08C-I2C-Compatible-Two-Wire-Serial-EEPROM-4-Kbit-8-Kbit-20006127.pdf
1.39MB

 

EEPROM에 데이터 저장하는 코드 구현 중 살짝 곤란했던 사항 정리

(요즘은 MCU Flash 에 바로 저장하니 EEPROM 사용할 일이 크게 없긴 했음.)

1. Write(저장)

 1) 예전에는 데이터가 몇 바이트 안되서 그냥 주소 적용하고 btye 저장했는데, 

     이번에는 한번에 64byte 이상 저장하면서 Page Wirte를 통해 저장함.    

 

 2) 이게 처음 16byte 만 저장되고 이후 저장이 안되는 문제 가 있었음.

 

 3) 확인하니 해당 EEPROM 은 최대 16byte 단위로 Page Write만 지원됨.

     (EEPROM 종류마다 약간씩 다름.. 265byte 단위로 저장되는 것도 있음)

 

 4) 연속해서 16byte씩 나누어 저장하니 안됨

 

 5) 16byte 저장하고 Ack 확인하던가, 3~4ms 대기(지연)하고 다시 저장해야 정상적으로 처리됨.

  • EEPROM 내부 저장시간이 필요.
  • 64byte 연속 저장시 4번씩 나누어 저장하면 기본 대기 시간이 10ms 정도 소요됨.
  • 실시간 제어 시 해당 지연이 문제되면 대기 시간 동안 다른 처리하도록 구현 필요.
  • 아님 256byte 단위 저장되는 Rom으로 변경하던가.

 

 

2. 페이지 주소

1) 4-Kbit(512*8) 을 사용했는데 4096Bit 라 512byte 까지 저장됨.

 

2) 최대 256byte 까지 저장하고 이후 추가로 저장하려고 했는데, 저장이 정상적으로 되지 않음.

 

3) 저장은 안되는게 아니고 첫 번지에 중복 저장됨. (최대 256byte 만 되는 EEPROM 인줄 의심)

 

4) 알고 보니 페이지 주소가 장치 주소와 일부 포함되어 사용하여 최대 9bit 로 설정되는 방식.

 

5) 주소가 256byte 넘어가면 A0~A7, A8도 같이 사용해야 함.

 

어떤 EEPROM은 기본 페이지 주소 지정이 16byte 단위로 지정해서 저장하는 경우도 있은 것 같음.

 

하기 링크 코드 보면 ROM 사이즈에 따라 페이지 주소 처리 함.

https://github.com/nimaltd/ee24/blob/master/ee24.c

 

 

결론은 각 EEPROM 마다 저장 방식이 약간씩 다르니, 해당 데이터시트를 잘 보자.

'Firmware' 카테고리의 다른 글

CAN 속도 별 전송 frame 개수  (0) 2023.11.06
CH32V307VCT6 테스트 / WCH-Link  (0) 2023.03.18