一般我们建议将实时性要求比较高的代码,和FLASH初始化相关的代码,比如中断程序,放在RAM上运行。
在F2837xD/37xS/07x系列芯片里,它们使用的Flash是最新的65nm工艺(相比之前的是180nm),其Flash运算速度和执行效率已经大幅提高,等待周期也可以减少,因此会非常接近RAM上的速度,根据不同的代码,你可以参考下面的相关数据(请注意,Flash wait states是根据工艺强制要求的,比如F28335运行150MHz主频时,必须至少要5个,而F2837x则只需要2个 ):
GPIO的配置
使用时建议先将寄存器的值写入,再改变GPIO的方向。
GPyDAT反应引脚状态,可以读状态,不建议直接使用它写状态,由于时序的原因,可能干扰其他引脚
GPySET=1置高,GPyCLEAR=1置低,GPyTOGGLE=1翻转,写入0无效果。
GPIO的功能复用表可参考技术手册7.7节
7.8节指出,芯片复位时GPIO处于输入模式,并禁止内部上拉。 这意味着上电瞬间DSP的引脚输出状态是高阻,也就是不确定的,在硬件设计时必须针对制定方案,添加上下拉电阻。避免不确定的状态导致IGBT等功率元件误动作。
本节针内部对上拉电阻的配置提出了要求。指出在小封装的型号上必须用GPIO_EnabledUnbondedIOPullups()函数可以使能未使用GPIO的上拉电阻。
示例 gpio_setup
GPIO及其复用的配置可以参考例程 “gpio_setup”。
EALLOW,EDIS是成对使用的,有些寄存器是受到保护的,不能任意写
EALLOW相当于去掉保护,对写保护的寄存器进行操作后, EDIS 是重新把这个寄存器保护起来。
在 F2837xS_SysCtrl.c 文件中有注释提到// IF RUNNING FROM FLASH, PLEASE COPY OVER THE SECTION ".TI.ramfunc" FROM FLASH TO RAM PRIOR TO CALLING InitSysCtrl(). THIS PREVENTS THE MCU FROM THROWING AN EXCEPTION WHEN A CALL TO DELAY_US() IS MADE. 即如果从Flash运行程序,需要在执行InitSysCtrl()前将.TI.ramfunc从FLASH复制到RAM中。
谢谢