본문 바로가기

[ST_MICRO]/STM32F1

STM32 Infomation block 내부 EEPROM처럼 사용하기

STM32 Infomation block EEPROM처럼 사용하기

STM32는 AVR과 달리 내부 EEPROM이 없다. 대신 내부 플래시를 EEPROM처럼 쓸 수 있다고 한다.
제작한 보드에 ID를 부여해 인식하려고 하는데.. 데이트시트를 보면 내부 영역중 Information block 이 있다.
이부분은 ST에서 제공하는 플래시 프로그램으로 제어 가능하기 때문에 PC 소프웨어 부담없이 가능할것 같다.
Option Byte 영역을 수정하여 ID를 부여해 보도록 하겠다.



Flash Loder에서 Edit Option Byte를 선택하여 수정할 수 있다.



Option Byte에서 Byte for user data storage 부분을 FF에서 EC로 변경하고 저장한다.



이제 펌웨어에서 이부분을 읽어서 ID를 처리하면 쉽게 해결된다.

#define StartAddr  ((uint32_t)0x1FFFF800)

unsigned long  Address = 0x00;

Address = StartAddr;

 for(i=0;i<16;i++)
    {
        DebugPrint("%02X: %X\r\n", i, *(vu32*)Address);
        Address += 4;
    }


STM32 User Data Read 프로그램 실행 결과
변경한 데이터 EC를 플래시 영역에서 확인 할 수 있다.
00: FF5AA5
01: FF13EC
02: FF00FF
03: FF00FF
04: FFFFFFFF
05: FFFFFFFF
06: FFFFFFFF
07: FFFFFFFF
08: FFFFFFFF
09: FFFFFFFF
0A: FFFFFFFF
0B: FFFFFFFF
0C: FFFFFFFF
0D: FFFFFFFF
0E: FFFFFFFF
0F: FFFFFFFF
반응형