在ARM内核中没有接口管理Flash存储器,存储加速模块就是专门管理Flash的模块。当改变 MAM 定时值时,必须先通过向 MAMCR 写入 0 来关闭 MAM,然后将新值写入 MAMTIM。最后,将需要的操作模式的对应值写入MAMCR,再次打开MAM。
对于低于 20MHz 的系统时钟,MAMTIM 设定为 0x001。对于 20MHz 到 40MHz 之间的系统时钟,建议将Flash访问时间设定为2cclk,而在高于40MHz的系统时钟下,建议使用3cclk。
例如
void MAMSet(uint 32FCCLK)
{
MAMCR=0; //关闭MAM部件
if(FCCLK<20000000) //如果系统时钟小于20MHz,则Flash读取操作时钟为1clk
{
MAMTIM=1;
}
else
{
if(FCCLK<40000000) //如果系统时钟大于20MHz而小于40MHz
{ //则Flash读取操作时钟为2clk
MAMTIM=2;
}
else
{
MAMTIM=3; //如果系统时钟大于40MHz,则Flash读取操作时钟为3clk
}
}
MAMCR=2; //启动MAM部件
}