查看: 1452|回复: 0

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

[复制链接]

该用户从未签到

发表于 2018-7-9 09:16:50 | 显示全部楼层 |阅读模式
分享到:
这一期给大家带来的是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 != data)         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。这一期先介绍初始化函数,下一期介绍其他子函数。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

手机版|小黑屋|与非网

GMT+8, 2024-11-18 10:30 , Processed in 0.109798 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.