Haawking DSC28027实例程序开发教程—LED_Blink_Flash_EW_120Mhz
中科昊芯
2021年12月01日 09:58
收录于文集
共36篇

导语:

半导体存储器是一种采用半导体介质的信息储存设备,常用的内存、U盘、固态硬盘等都属于存储器的范畴。半导体存储器根据断电后所储存的数据是否会丢失,可以分为易失性存储器(Volatile Memory)芯片和非易失性存储器(Non-Volatile Memory)芯片。在系统开发中,用户数据的掉电保存就需要使用到非易失性存储器,这种情况可以外接外部存储器,但这样会增加硬件成本和系统外设的使用。HX28027有着高达128KB的flash,在存放代码剩余的部分可以用来保存用户的数据,可以减少硬件成本和外设使用。


程序说明:

在第62扇区里存入数组长度为16的数据(在写入前需要将该扇区擦除),再将数据读取进行判断是否一致,如一致led灯会以1Hz的频率闪烁。

本程序使用中科昊芯Core_DSC28027核心板,相关资料可以在中科昊芯官网下载:

http://www.haawking.cn/kfb

运行效果:

数组中的数据已写入flash中:

例程主要代码:

代码块
clike
自动换行
复制代码
//
// 写入数组:
//
#define LEN 16
Uint32 Buffer[LEN] =
{0xF0F0F0F0,0x11111111,0x22222222,0x33333333,0x44444444,0x55555555,0x66666666,0x77777777,0x88888888,0x99999999,0xAAAAAAAA,0xBBBBBBBB,0xCCCCCCCC,0xDDDDDDDD,0xEEEEEEEE,0x0F0F0F0F};
 
//
// 主函数:
//
int main(void)
{
int temp;
volatile unsigned int i;
Uint16 status;
FLASH_ST FlashProgStatus;
 
InitSysCtrl();     //120MHz
GPIO_INIT();
 
//Erase 62th Sector
status = erase(62);
//Write Buffer[LEN] to 62th Sector, From the beginning Address,0x7DF000
status = flash_program(Sector[62].StartAddr,Buffer,LEN,&FlashProgStatus);
temp = 0;
for(i=0;i<LEN;i++)
{
//Read form 62th Sector, check whether we have written correctly
if(*(Uint32*)(Sector[62].StartAddr + i) != Buffer[i]) temp++;
}
 
    while(1)
    {
    if(temp == 0)
    {
    GpioDataRegs.GPASET.bit.GPIO0 = 1;         
for(i=0;i<500;i++)
{
DELAY_US(1000);
}
GpioDataRegs.GPACLEAR.bit.GPIO0 = 1;
for(i=0;i<500;i++)
{
DELAY_US(1000);
}
    }
    }
 
return 0;
}
复制成功


关于中科昊芯

“智由芯生 创享未来”,中科昊芯是数字信号处理器专业供应商。作为中国科学院科技成果转化企业,瞄准国际前沿芯片设计技术,依托多年积累的雄厚技术实力及对产业链的理解,以开放积极的心态,基于开源指令集架构RISC-V,打造多个系列数字信号处理器产品,并构建完善的处理器产品生态系统。产品具有广阔的市场前景,可广泛应用于工业控制及电机驱动、数字电源、光伏、储能、新能源汽车、消费电子、白色家电等领域。