Basic

Dependencies:   MQTT

LPG_FlashIAP_Processing/LPG_FlashIAP_Processing.cpp

Committer:
lwtroach
Date:
2019-04-24
Revision:
6:86eea1bcf499
Parent:
LPG_FlashIAP/LPG_FlashIAP.cpp@ 3:cb954c31709f

File content as of revision 6:86eea1bcf499:

#include "LPG_FlashIAP_Processing.h"

FlashIAP flash;
int index = 0;
char* writeBuf;
char* readBuf;

void LPG_FlashIAP_InitIAP()
{
    flash.init();
}

void LPG_FlashIAP_WriteAndReadExamination(uint32_t addr, RawSerial DebugPort)
{
        int sector = flash.get_sector_size(addr);
        int page = flash.get_page_size();
        int size = flash.get_flash_size();       
        switch(index)
        {
            case 0:
                writeBuf = "WRITE TO FLASH_0";
            break;    
            case 1:
                writeBuf = "WRITE TO FLASH_1";
            break;
            case 2:
                writeBuf = "WRITE TO FLASH_2";
            break;
            case 3:
                writeBuf = "WRITE TO FLASH_3";
            break;
            case 4:
                writeBuf = "WRITE TO FLASH_4";
            break;
            case 5:
                writeBuf = "WRITE TO FLASH_5";
            break;
            case 6:
                writeBuf = "WRITE TO FLASH_6";
            break;
            default:
                index = -1;
            break;
        }
        index++;
        DebugPort.printf("String : %s\r\nIndex : %d",writeBuf,index);
        DebugPort.puts("\r\n");
        DebugPort.printf("sector = %d, page = %d, size = %d\r\n", sector, page, size);
        bool eraseOK = flash.erase(addr,sector);
        DebugPort.printf("erase : %s\r\n",((eraseOK==0)?"Fine":"Fail"));
        bool programOK = flash.program(&writeBuf[0],addr,sector);
        DebugPort.printf("program : %s\r\n",((programOK==0)?"Fine":"Fail"));    
        LPG_FlashIAP_ReadFromFlash(&readBuf[0], addr);
        DebugPort.printf("Buffer data : %s\r\n",writeBuf);
        DebugPort.printf("Read result : %s\r\n",readBuf);
}

void LPG_FlashIAP_WriteToFlash(char* buffer, uint32_t addr, RawSerial DebugPort )
{
    /* 目前無法erase成功,手動erase後可以寫入 */
    int sector = flash.get_sector_size(addr);
    flash.erase(addr,sector);
    flash.program(buffer,addr,sector);
}

void LPG_FlashIAP_ReadFromFlash(char* buffer,uint32_t addr)
{
    flash.read(buffer,addr,sizeof(uint32_t));
}