菜单
  

     
    图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. 基于中频信号的家用治疗...

  3. 基于嵌入式技术的智能家...

  4. 基于FPGA竞赛系统设计+程序

  5. 单片机的火灾报警系统设计+电路图+程序

  6. MCGS对PLC的监控系统设计+梯形图

  7. PLC在机械手控制中的应用设计+梯形图

  8. 酸性水汽提装置总汽提塔设计+CAD图纸

  9. 十二层带中心支撑钢结构...

  10. 中考体育项目与体育教学合理结合的研究

  11. 杂拟谷盗体内共生菌沃尔...

  12. 河岸冲刷和泥沙淤积的监测国内外研究现状

  13. 乳业同业并购式全产业链...

  14. 大众媒体对公共政策制定的影响

  15. 电站锅炉暖风器设计任务书

  16. java+mysql车辆管理系统的设计+源代码

  17. 当代大学生慈善意识研究+文献综述

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回