월간 전자 연구소

오늘은 저번 포스팅에 이어 programmers에게 반드시 필요한 Program code를 이용한 EEPROM 직렬 통신에 대해 알아보도록 하겠습니다.

EEPROM은 어떤 상황에서 데이터를 저장하고 있다가 전원이 켜지면 저장된 데이터를 DEVICE에 ROAD 시켜 저장된 데이터를 가지고 DEVICE가 어떤 동작을 하게끔 해주는 역할로 가장많이 쓰인다.

 

EEPROM에 대한 기본 개념과 병렬 통신에 대해 궁금하신 분이나 아직 읽지 않으신 분들은 아래 글 참고 바랍니다.

electronic-king.tistory.com/59

 

 

[회로설계 - 기초] EEPROM 이란? (EEPROM 쉽게 이해하기)

오늘은 일상에서도 쉽게 접할 수 있는 EEPROM에 대해 알아보려 합니다. EEPROM에 대해 알기 전 대부분은 알고 있겠지만 꼭 알고 있어야 이해가 쉬운 개념이 있습니다. 바로 ROM과 RAM입니다. 1) ROM 이란

electronic-king.tistory.com

1. EEPROM의 직렬 통신이 필요한 이유?

EEPROM의 직렬 통신이 필요한 가장 큰 이유는 바로 병렬 통신의 단점 때문입니다.

EEPROM 병렬 통신의 가장 큰 문제는 설계할 때 많은 핀의 수가 필요하다는 단점입니다.

병렬 통신 포스팅에서와 같이 ADDRESS의 다수 PIN, DATA의 다수 PIN이 필요한 데에 반면, 직렬 통신은 4개의 핀만 있으면 EEPROM을 제어할 수 있습니다.

 

2. EEPROM 직렬 통신

EEPROM 직렬 통신은 M95640이라는 EEPROM IC를 예로 들어 설명하도록 하겠습니다. 

관련 데이터 시트는 첨부하였습니다.

STMicroelectronics-M95640-WMN6TP-datasheet.pdf
0.88MB

 

데이터 시트를 보면 EEPROM Serial 통신 IC의 핀 수가 전원 핀을 포함하여 총 8 PIN인 것을 확인할 수 있습니다.

병렬 통신보다 핀의 수가 훨씬 줄어든 것이 보이시죠?

직렬 통신 EEPROM을 사용할 경우 IC 패키지 사이즈도 줄어들면서, 전체적인 PCB 사이즈도 작게 설계가 가능하다는 장점 또한 있습니다.

Signal 핀을 살펴보면

C : Serial Clock = 시리얼 통신의 clock으로 사용되는 pin입니다.

D : Serial Data Input = 시리얼통신의 miso 핀으로 사용됩니다.

Q : Serial Data Output = 시리얼통신의 mosi 핀으로 사용됩니다.

S : Chip Select = 시리얼 통신 시 enable 핀으로 사용됩니다.

W : Write Protect = WRITE 명령에 대해 보호되는 메모리 영역의 크기를 고정시켜 줍니다.

HOLD = 장치와의 시리얼통신을 중단하는 핀으로 사용됩니다.

 

3. M95640 WRITE / READ 명령제어

M95640을 제어하기 위해서는 SPI 통신을 통해 DATA를 READ / WRITE 하여 제어해줘야 합니다.

해당 포스팅에서는 레지스터 제어 순서를 설명하며 기본적인 제어 동작만 설명하도록 하겠습니다.

해당 레지스터대로 데이터 시트를 보며 설계하면 제어할 수 있습니다.

우선 M95640은 마스터와 슬레이브 중 슬레이브라고 생각을 하셔야 편합니다.

 

1) WRITE 과정

EEPROM에 WRITE를 해주기 위해서는 다음과 같은 레지스터 순서대로 제어해주면 됩니다.

(1). Write Enable(0000 0110) : WREN

(2). Read Status Register(0000 0101) : RDSR

(3). Write(0000 0010) : WRITE

(4). Write Disable(0000 0100) : WRDI

제어 시 (1) - (2) - (3) - (4)에 해당하는 순서대로 제어해주시면 되는데, 아래 내용을 참고하시기 바랍니다.

(2)의 과정을 마치고 Receive 한 8bit data의 2번째 비트 WEL의 데이터 비트가 '1' 인지 확인한 후 WRITE를 해주셔야 합니다.

WEL 비트는 현재 EEPROM이 WRITE가 가능한 상태인지를 알려주는 비트로 WEL비트가 꼭 '1' 인지 확인한 후 WRITE 진행해주시기 바랍니다.

(3)의 과정을 진행하여 WRITE의 과정을 마친 후에는 반드시 최대 3ms~6ms delay를 준 후 다음 과정을 진행해주셔야 합니다. WRITE 하는데 최대 6ms 정도까지 걸릴 수가 있기 때문에 딜레이를 반드시 준 후 정확하게 WRITE 과정을 마쳤음을 표시해주기 위해 (4)의 과정을 진행 후 다른 동작을 진행해주시면 됩니다.

 

2) READ 과정

EEPROM에 저장된 DATA를 READ 해주기 위해서는 다음 과정을 진행해주시면 됩니다.

(1). Read Status Register(0000 0101) : RDSR

(2). Read from Memory Array(0000 0011) : READ

 

READ시에는 아래 과정을 참고하셔야 합니다.

(1)의 과정을 마치고 나서 8bit의 data 중 WIP에 해당하는 비트를 확인하여야 합니다. 

WIP의 비트가 '0' 인지 확인을 한 후 READ의 과정을 진행해주면 됩니다.

WIP비트는 현재 EEPROM에 WRITE의 과정이 진행 중인지 알려주는 비트입니다. 

즉, 해당 비트가 '0'이면 현재 WRITE과정을 진행하지 않기 때문에 DATA를 READ 할 수 있다는 뜻이기 때문에 WIP 비트를 반드시 확인하고 READ 해주시면 됩니다.

오늘은 EEPROM의 Serial 통신 (직렬 통신)에 대해 알아보았습니다.

이해를 돕고자 EEPROM IC를 예로 들어 진행해보았습니다. 데이터 시트를 보면 알 수 있듯이 다양한 기능의 레지스터들이 있습니다. 

해당 레지스터들도 필요에 의해 WRITE와 READ 과정을 이용하여 활용해보시길 권합니다.

 

긴 글 읽어주셔서 감사합니다.

구독과 댓글은 힘이 됩니다!

 

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band