ADI EVAL-ADuCM360QSPZ开发套件试用报告七

作者: bugbugout
上传时间为: 2018-07-09 09:16 AM
2018-07-09
阅读:

      这一期给大家带来的是Flash的数据写入与读出。在ADuCM360芯片中对闪存提供了三种保护类型,分别是密钥保护、读保护和写保护。可以根据数据手册了解相关寄存器的作用。

       数据手册中的内容这里就不多做介绍了,大家可以自行去看。接下来就开始介绍编程方面的内容了。首先把要写入Flash页中的数据定义一下,这里简单写一个数组。

unsigned long data[5] = {1,2,3,4,5};
等一下要做的就是把上面的数组写入,然后让LED闪烁以证明数据被写入。先把初始化函数甩出来。
void Flash_Init()
{
   WdtCfg(T3CON_PRE_DIV1,T3CON_IRQ_EN,T3CON_PD_DIS);  
   DioOen(pADI_GP1,0x08);                             
   DioSet(pADI_GP1, BIT3);                       
   ClkDis(CLKDIS_DISSPI0CLK|CLKDIS_DISSPI1CLK|CLKDIS_DISI2CCLK|CLKDIS_DISUARTCLK|CLKDIS_DISPWMCLK|CLKDIS_DIST0CLK|CLKDIS_DIST1CLK|CLKDIS_DISDACCLK|CLKDIS_DISDMACLK|CLKDIS_DISADCCLK);
   ClkCfg(CLK_CD0,CLK_HF,CLKSYSDIV_DIV2EN_DIS,CLK_UCLKCG);           

   EiCfg(EXTINT1, INT_EN, INT_FALL);  
   NVIC_EnableIRQ(EINT1_IRQn);      
   
   FeePErs(0x000ff);        
   WriteToFlash(data, 0x000ff, sizeof(data));   
   ReadFromFlash(checkData, 0x000ff, sizeof(checkData));  
   for (i=0; i<(sizeof(checkData)/sizeof(checkData[0])); i++)
	{
      if (checkData[i] != data[i])
         break;
   }
   if (i == ( sizeof(checkData)/sizeof(checkData[0]) ))
		 {
      DioClr(pADI_GP1, BIT3);           
   }
   do
      uiFEESTA = FeeSta();   
   while((uiFEESTA & FEESTA_CMDBUSY) == FEESTA_CMDBUSY); 
   
   FeeWrEn(1);   
   FeeFAKey(0x1111111111111111);  
   FeeWrEn(0);      
}
接下来就给大家简单介绍一下这个初始化函数。前几行还是老样子,我在之前的经验中已经说个多次,所以这里就不在重复了,有需要的童鞋可以去翻看我之前的经验。之后的一行代码是配置外部中断1,也就是P0.5引脚,然后使能外部中断1。接下来的函数就是擦除指定页面的地址,这里指定的是0x000ff这一页。页码范围是0-0x1FFFF。然后将数据写入指定的页面中,下一行是读取指定页面的内容。然后判断并决定LED是否熄灭。之后返回Flash控制器的状态寄存器,之后等待。最后几行的意思是允许写入Flash,下一行是写入校验密码,根据数据手册是16位。然后关闭,禁止写入Flash。这一期先介绍初始化函数,下一期介绍其他子函数。
全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示