mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-22 17:12:55 +08:00
107 lines
4.0 KiB
C
107 lines
4.0 KiB
C
|
/*********************************************************************************************************************
|
|||
|
* COPYRIGHT NOTICE
|
|||
|
* Copyright (c) 2020,<EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD>
|
|||
|
* All rights reserved.
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>QQȺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD>824575535
|
|||
|
*
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>;<EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD>ӭ<EFBFBD><EFBFBD>λʹ<EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>뱣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD><EFBFBD>İ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*
|
|||
|
* @file eeprom(Dflash)
|
|||
|
* @company <EFBFBD>ɶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾
|
|||
|
* @author <EFBFBD><EFBFBD><EFBFBD>ɿƼ<EFBFBD>(QQ3184284598)
|
|||
|
* @version <EFBFBD>鿴doc<EFBFBD><EFBFBD>version<EFBFBD>ļ<EFBFBD> <EFBFBD>汾˵<EFBFBD><EFBFBD>
|
|||
|
* @Software ADS v1.2.2
|
|||
|
* @Target core TC264D
|
|||
|
* @Taobao https://seekfree.taobao.com/
|
|||
|
* @date 2020-3-23
|
|||
|
********************************************************************************************************************/
|
|||
|
|
|||
|
|
|||
|
#include "IfxScuWdt.h"
|
|||
|
#include "IfxFlash.h"
|
|||
|
#include "zf_assert.h"
|
|||
|
#include "zf_eeprom.h"
|
|||
|
|
|||
|
//-------------------------------------------------------------------------------------------------------------------
|
|||
|
// @brief У<><D0A3>FLASH<53>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// @param sector_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-11
|
|||
|
// @param page_num <09><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ҳ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-1023
|
|||
|
// @return <09><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>0û<30><C3BB><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// @since v1.0
|
|||
|
// Sample usage: flash_check(0,0);//У<><D0A3>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0ҳ<30>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//-------------------------------------------------------------------------------------------------------------------
|
|||
|
uint8 flash_check(uint32 sector_num, uint32 page_num)
|
|||
|
{
|
|||
|
ZF_ASSERT(EEPROM_SECTOR_NUM>sector_num);
|
|||
|
ZF_ASSERT(EEPROM_SECTOR_PAGE_NUM>page_num);
|
|||
|
uint32 sector_addr = IfxFlash_dFlashTableEepLog[sector_num].start;
|
|||
|
uint32 page_addr = sector_addr + page_num * IFXFLASH_DFLASH_PAGE_LENGTH;
|
|||
|
|
|||
|
uint32 temp = *(uint32 *)page_addr;
|
|||
|
if(0 != temp) return 1;
|
|||
|
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
//-------------------------------------------------------------------------------------------------------------------
|
|||
|
// @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// @param sector_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-11
|
|||
|
// @return void
|
|||
|
// @since v1.0
|
|||
|
// Sample usage: eeprom_erase_sector(0);
|
|||
|
//-------------------------------------------------------------------------------------------------------------------
|
|||
|
void eeprom_erase_sector(uint32 sector_num)
|
|||
|
{
|
|||
|
ZF_ASSERT(EEPROM_SECTOR_NUM>sector_num);
|
|||
|
|
|||
|
uint32 flash = 0;
|
|||
|
uint16 end_init_sfty_pw;
|
|||
|
uint32 sector_addr = IfxFlash_dFlashTableEepLog[sector_num].start;
|
|||
|
|
|||
|
end_init_sfty_pw = IfxScuWdt_getSafetyWatchdogPassword();
|
|||
|
|
|||
|
IfxScuWdt_clearSafetyEndinit(end_init_sfty_pw);
|
|||
|
IfxFlash_eraseSector(sector_addr);
|
|||
|
IfxScuWdt_setSafetyEndinit(end_init_sfty_pw);
|
|||
|
|
|||
|
IfxFlash_waitUnbusy(flash, IfxFlash_FlashType_D0);
|
|||
|
}
|
|||
|
|
|||
|
//-------------------------------------------------------------------------------------------------------------------
|
|||
|
// @brief <20><><EFBFBD><EFBFBD>һҳ
|
|||
|
// @param sector_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-11
|
|||
|
// @param page_num <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ0-1023
|
|||
|
// @param buf <09><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>Ϊuint32
|
|||
|
// @return void
|
|||
|
// @since v1.0
|
|||
|
// Sample usage: eeprom_page_program(0,0, &buf);
|
|||
|
//-------------------------------------------------------------------------------------------------------------------
|
|||
|
void eeprom_page_program(uint32 sector_num, uint32 page_num, uint32 *buf)
|
|||
|
{
|
|||
|
ZF_ASSERT(EEPROM_SECTOR_NUM>sector_num);
|
|||
|
ZF_ASSERT(EEPROM_SECTOR_PAGE_NUM>page_num);
|
|||
|
|
|||
|
uint32 errors = 0;
|
|||
|
uint32 flash = 0;
|
|||
|
uint16 end_init_sfty_pw;
|
|||
|
uint32 sector_addr = IfxFlash_dFlashTableEepLog[sector_num].start;
|
|||
|
|
|||
|
end_init_sfty_pw = IfxScuWdt_getSafetyWatchdogPassword();
|
|||
|
|
|||
|
uint32 page_addr = sector_addr + page_num * IFXFLASH_DFLASH_PAGE_LENGTH;
|
|||
|
errors = IfxFlash_enterPageMode(page_addr);
|
|||
|
ZF_ASSERT(0 == errors);
|
|||
|
|
|||
|
IfxFlash_waitUnbusy(flash, IfxFlash_FlashType_D0);
|
|||
|
|
|||
|
IfxFlash_loadPage(page_addr, buf[0], 0);
|
|||
|
|
|||
|
IfxScuWdt_clearSafetyEndinit(end_init_sfty_pw);
|
|||
|
IfxFlash_writePage(page_addr);
|
|||
|
IfxScuWdt_setSafetyEndinit(end_init_sfty_pw);
|
|||
|
|
|||
|
IfxFlash_waitUnbusy(flash, IfxFlash_FlashType_D0);
|
|||
|
}
|
|||
|
|