본문 바로가기
Microchip PIC

[PIC] HEF ( High Endurance Flash ) EEP ROM 대용

by 소나무기운 2020. 8. 28.
반응형

Microchip PIC16F15354 마이컴을 보니 HEF기능이 있다.

 

데이터 시트에 표시되어 있다.

PIC16F15354 Datasheet 내용

 

총 128 워드를 사용할 수 있다.

EEPROM보다는 작지만 플래시 메모리에 비해 많은 지우고 쓰기 횟수가 제공된다.

 

 

읽고 쓰는 법은 Microchip사의 AN1673에서 확인 가능하다. ( 아래 링크 확인 )

http://ww1.microchip.com/downloads/en/AppNotes/00001673A.pdf

 

XC 컴파일러에서 사용하는 함수는 다음과 같다.

물론 플래시 영역이니 지우고 나서 써야한다.

unsigned FLASH_read (unsigned address);
unsigned FLASH_readConfig (unsigned address);
void FLASH_readBlock (unsigned* buffer, unsigned address, char count);
void FLASH_write (unsigned address, unsigned data, byte latch);
void FLASH_erase (unsigned address);
char HEFLASH_writeBlock (char radd, char* buffer, char count);
char HEFLASH_readBlock (char* buffer, char radd, char count);
char HEFLASH_readByte (char radd, char offset);

 

사용하는 방법은 예제이다.

typedef struct{
	unsigned ID ; // 2 bytes
	char Name[20]; // 20 bytes
	long Amount; // 4 bytes
} Record; // 26 bytes total

Record data = {0x1234, "HE Flash", 42};

// 쓰기
r = HEFLASH_writeBlock(1,(void*)&data, sizeof(data));
// 읽기
r = HEFLASH_readBlock((void*)&data, 1, sizeof(data));

 

정상적인 사용을 위해서는

플래시 뒤쪽 128워드를 컴파일러가 사용하지 못하도록 해야한다.

링커의 설정에 아래와 같이 정의되어 있어야 한다.

--ROM=default,-1f80-1fff

또 한가지

플래시 쓰기 금지가 설정되어 있으면 안된다.

CONFIG2의 WRT<1:0>의 값이 '11'로 되어 있거나 '10','10'으로 되어 있어야 한다.

 

시리얼로 명령을 쓰고, 재부팅, 시리얼로 읽기로 시험해 보면 되겠다.

 

이상.

반응형

댓글