InitFlash()和vClearRam()

void InitFlash(void)
{
   EALLOW;
   //Enable Flash Pipeline mode to improve performance
   //of code executed from Flash.
   FlashRegs.FOPT.bit.ENPIPE = 1;

   //                CAUTION
   //Minimum waitstates required for the flash operating
   //at a given CPU rate must be characterized by TI.
   //Refer to the datasheet for the latest information.

   //Set the Paged Waitstate for the Flash
   FlashRegs.FBANKWAIT.bit.PAGEWAIT = 2;

   //Set the Random Waitstate for the Flash
   FlashRegs.FBANKWAIT.bit.RANDWAIT = 2;

   //Set the Waitstate for the OTP
   FlashRegs.FOTPWAIT.bit.OTPWAIT = 2;

   //                CAUTION
   //ONLY THE DEFAULT VALUE FOR THESE 2 REGISTERS SHOULD BE USED
   FlashRegs.FSTDBYWAIT.bit.STDBYWAIT = 0x01FF;
   FlashRegs.FACTIVEWAIT.bit.ACTIVEWAIT = 0x01FF;
   EDIS;

   //Force a pipeline flush to ensure that the write to
   //the last register configured occurs before returning.

   asm(" RPT #7 || NOP");
}

 FOPT寄存器

使能Flash Pipeline Mode Bit。设置此位时,Flash流水线模式激活。流水线模式通过预取指令来提高指令获取的性能。有关更多信息,请参见第1.3.2节。

当管道模式被启用时,flash等待状态(分页和随机)必须大于零。

在flash设备上,ENPIPE影响从flash和OTP的读取。

0 Flash流水线模式未激活。(默认)

1 Flash“Pipeline”模式激活。

打开Flash Pipeline模式,以提高Flash执行代码的性能。

 FBANKWAIT寄存器

 

 

Flash page读等待状态。这些寄存器位指定了在CPU时钟周期(0..15syclkout周期)到闪存银行。请参阅第1.3.1节了解更多信息。

关于page flash访问所需的最小时间,请参阅特定于设备的数据手册。

您必须将RANDWAIT设置为大于或等于PAGEWAIT设置的值。没有提供硬件来检测大于RANDWAIT的PAGEWAIT值。

0000每次分页flash访问零等待状态或每次访问一个syclkout周期

每次分页flash访问一个等待状态,或者每次访问总共有两个syclkout周期

0010每次分页flash访问有两个等待状态,或者每次访问总共有三个syclkout周期

0011每次分页flash访问有三个等待状态,或者每次访问总共有四个syclkout周期

. . . . . .

1111每次分页flash访问有15个等待状态,或者每次访问总共有16个SYSCLKOUT周期。(默认)

 

Flash随机读等待状态。这些寄存器位指定了CPU时钟周期(1..15)中随机读操作的等待状态的数量syclkout周期)到闪存银行。请参阅第1.3.1节了解更多信息。

关于随机闪存访问所需的最小时间,请参阅设备特定的数据手册。

RANDWAIT必须设置大于0。也就是说,必须使用至少一个随机等待状态。另外,必须将RANDWAIT设置为大于或等于PAGEWAIT设置的值。设备将不会检测并纠正大于RANDWAIT的PAGEWAIT值。

0000非法值。RANDWAIT必须设置大于0。

每次随机flash访问一个等待状态,或者每次访问总共有两个SYSCLKOUT周期。

0010每次随机flash访问有两个等待状态,或者每次访问总共有三个SYSCLKOUT周期。

0011每次随机flash访问有3个等待状态,或者每次访问总共有4个syclkout周期。

. . . . . .

1111每次随机flash访问有15个等待状态,或者每次访问总共有16个SYSCLKOUT周期。(默认)

FOTPWAIT寄存器 

 

OTP读等待状态。这些寄存器位指定了CPU时钟周期(1..31SYSCLKOUT循环)到OTP。详细信息请参见CPU Read Or Fetch Access From flash/OTP章节。OTP中没有PAGE模式。

OTPWAIT必须设置大于0。也就是说,必须使用至少1个等待状态。关于OTP访问所需的最短时间,请参阅设备专用数据手册。

00000非法值。OTPWAIT必须设置为1或更大。

00001每次OTP访问将使用一个等待状态,每次访问总共有两个syclkout周期。

00010每次OTP访问将使用两个等待状态,每次访问总共有三个syclkout周期。

00011每次OTP访问将使用三个等待状态,每次访问总共有四个syclkout周期。

. . . . . .

11111 31个等待状态将用于一次OTP访问,每次访问总共有32个syclkout周期。

FSTDBYWAIT寄存器 (只应该使用默认值即可)

 be left in保持

这个寄存器应该保持默认状态。

银行和泵睡眠备用等待计数。

111111111 511 syclkout周期(默认)

FACTIVEWAIT寄存器(这个寄存器应该保持默认值)

 

vClearRam():初始化cpu使用的变量

void	vClearRam(void)
{
	Uint16	*ram_ptr;
	for	(ram_ptr=(Uint16 *)0x8000; ram_ptr<(Uint16 *)0x8C00; ram_ptr++)		// if release
	{
		*ram_ptr = 0x0000;
	}

	for	(ram_ptr=(Uint16 *)0x0600; ram_ptr<(Uint16 *)0x0800; ram_ptr++)		// if release
	{
		*ram_ptr = 0x0000;
	}

    fMpptMode = 0.0;
    fVoltLimit = 373.0;
    fVoltErrCoe = 1.0;
    fVpiVoltMax = 4000.0;
    fTestMode = 0.0;
}

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值