菜单
  

     
    图3-10 复制Flash API函数
    步骤5:初始化Flash_CPUScaleFacter
    Flash API使用一个32位的全局变量Flash_CPUScaleFacter来产生合适的软件延时,Flash_CPUScaleFacter值通过步骤2最后的公式计算得到,只要在应用程序中加入如下说明即可:
     
    图3-11 Flash_CPUScaleFacter赋值
    步骤6:初始化回调函数指针
    回调函数是指在Flash API函数执行期间执行其他的功能的函数,例如通过通信端口发生信息或者清除看门狗。此时Flash和OTP处于安全的状态,可以对其进行任意操作。在本系统中Flash API函数执行时不需要进行其他操作,所以回调函数指针为NULL。
    步骤7:解锁代码安全模块CSM
    代码安全模块(CSM)保证Flash、OTP、L0、L1模块中的数据被非法读取和修改。当Flash API函数从CSM保护的模块中运行时,它可以修改任何被CSM保护的模块的内容,包括Flash。在这种情况下,不需要对CSM解锁。当Flash API从不被CSM保护的存储器执行时,API就不能读取保护模块内的内容,即不可以修改Flash中的程序。在这种情况下,应用程序必须先解锁CSM,然后调用API。
    在完成了以上的准备工作后,就可以调用Flash API函数。
    擦除函数
    擦除函数Flash_Erase()用来擦除指定的段,其他未指定的段中的数据保持不变。函数声明如下:
    Uint16  Flash_Erase(Uint16 SectorMask, FLASH_ST *FEraseStat);
    第一个参数是指要擦除的段掩码,指明要擦除的Flash段。利用Flash API擦除只能整个段来擦除,不能擦除任意存储器内容。TMS320F281x系列Flash段掩码与段的对应关系如下图3-12所示:
     
    图3-12 TMS320F281x系列中的Flash段
    第二个参数是指向FLASH_ST结构体的指针,FLASH_ST在Flash2812x_API_Library.h中定义,用来向调用函数传递擦除信息成功或者失败的信息:
    typedef struct {
        Uint32  FirstFailAddr;
        Uint16  ExpectedData;
        Uint16  ActualData;
    }FLASH_ST;
    函数的返回值有两种:1)当擦除成功时,函数返回STATUS_SUCCESS;2)当擦除失败时,函数返回状态值说明失败的原因;擦除完成后,所有指定擦除的段内容变为0xFFFF。
    烧写函数
    烧写函数将一个16位值的缓冲区内的值烧写近Flash或者OTP。函数原型声明如下:
    Uint16  Flash_Program(volatile Uint16 *FlashAddr, volatile Uint16 *BufAddr, Uint32 Length, FLASH_ST *FProgStatus);
    第一个参数是指向Flash中需要烧写的16位的起始地址的指针;第二个参数是指向数据缓冲区;第三个参数说明要烧写进Flash中的数据的长度;第四个参数指向FLASH_ST结构体。函数的返回值也有两种:1)当擦除成功时,函数返回STATUS_SUCCESS;2)当擦除失败时,函数返回状态值说明失败的原因。Flash API每次烧写16位数据,直到缓冲区内所有内容烧写结束或者遇到错误;烧写操作将Flash中位值1变为0,以和缓冲区内数据一致。通常情况下一个Flash段必须先擦除再烧写。但是,为了保护Flash和给用户更大的操作自由,烧写操作不会尝试烧写先前已被烧写过的位。烧写函数是将位值有1变0,如果没有1则会报错,这是因为擦除函数不可以将单个位的值由0变1。
    校验函数
    检验缓冲区和相应Flash内容是否一致。尽管烧写函数也有校验步骤,但检验函数作为额外的检验,可以进一步确认烧写进Flash内的数据和缓冲区内的数据一致。函数原型如下:
    Uint16  Flash_Verify(volatile Uint16 *StartAddr, volatile Uint16 *BufAddr, Uint32 Length, FLASH_ST *FVerifyStat);
    第一个参数指向烧写进Flash中的数据的第一个位置;第二个数据指向缓冲区数据;第三个参数说明烧写的数据的长度,第四个参数指向FLASH_ST结构体。函数的返回值也是两种:1)当擦除成功时,函数返回STATUS_SUCCESS;2)当擦除失败时,函数返回状态值说明失败的原因。
  1. 上一篇:基于非线性规划的数据校正联合算法的研究
  2. 下一篇:STC89C52单片机控制的高精度脉冲恒流源的设计与实现
  1. 基波磁通补偿的串联混合...

  2. 单H桥三电平有源电力滤波器的控制策略研究

  3. PLC柔性制造系统的控制系统设计+梯形图

  4. 含二甲基咪唑分子基介电...

  5. PID控制三容水箱的建模与控制MALAB仿真

  6. MATLAB数字图像处理的空间滤波器设计

  7. Protel99SE多功能充电宝的设计+PCB电路图

  8. C++最短路径算法研究和程序设计

  9. 现代简约美式风格在室内家装中的运用

  10. 浅析中国古代宗法制度

  11. 江苏省某高中学生体质现状的调查研究

  12. 上市公司股权结构对经营绩效的影响研究

  13. 巴金《激流三部曲》高觉新的悲剧命运

  14. 中国传统元素在游戏角色...

  15. g-C3N4光催化剂的制备和光催化性能研究

  16. NFC协议物理层的软件实现+文献综述

  17. 高警觉工作人群的元情绪...

  

About

优尔论文网手机版...

主页:http://www.youerw.com

关闭返回